Sr. Embedded Software Engineer/software Consultant Resume
Orange, CA
OBJECTIVE:
- Seeking a challenging position in Linux or embedded software development environment
TECHNICAL SKILLS:
Technology and Tools: C, C++, Python, Assembly, Java, Visual Basic, OOD, Bash shell script, Perl Linux OS (Ubuntu, Redhat, CentOS ), VxWorks RTOS, MicroC RTOS, MySQL, TCP/IP, BOOTP, FTP, VPN (IKE/IPSec), iptables, Secure SOAP (XML Encryption & Signature), OpenSSL Intel processors (i7, Centerton, TXT, Xscale), BIOS, U - Boot, IXP1200, PowerPC, PCIe, I2C, SPI, CAN/J1939, Ethernet, RS-232 Linux, Sun, and Windows Development Environments. Debug tools: Linux KDB, gdb, and Valgrind IBM Rational Software Architect (RSA), Rational Rose, Requisite Pro, ClearQuest, ClearCase, CVS, SVN, Git, Perforce Eclipse and SlickEdit IDE, Spyder IDE, Qt Creator, VI, Code Wright, Microsoft Visual Studio Wireshark, HP Logic Analyzers, PCI Bus Analyzer, Vision Click JTAG Debugger, Green Hills Probe, CANalyzer
PROFESSIONAL EXPERIENCE:
Confidential, Orange, CA
Sr. Embedded Software Engineer/Software Consultant
Responsibilities:
- Responsible for developing embedded software for Radar simulation system. The system consists of multiple Intel processors and FPGA to generate airplane targets to simulate the radar testing environment.
- Software is written in C++11 for multithread Linux application that runs in real time Fedora, using Boost and POCO libraries.
- Set up PXE Boot: configure DHCP and TFTP servers, and create NFS root filesystem in VMs
- Implement TCP/UDP sockets to interface with Windows application, CORBA servants, interface function between processors board via VME bus, and add diagnostic functions to verify system hardware.
- Maintain and modify Custom GUI run in Windows, using Visual Studio, Qt libraries, C++, and MySQL database. Modify test utility GUI in Python. Use Qt Creator for utility GUI in C++
- Development environment: Eclipse and SlickEdit IDE in Ubuntu Linux VirtualBox-VM, GIT for source control.
Confidential, San Jose, CA
Network Development Principal Engineer
Responsibilities:
- Responsible for developing software for drivers and diagnostics for Ethernet Network system. The system consists of multiple processors and switch fabrics to process 10G/40G Ethernet for cloud traffic. Software is written in C and runs in NetBSD
- Participated in implementing diagnostic and driver functions for multiple Intel Centerton processors, Broadcom Trident 2 and Triumph, I2C, SPI, PCIe interface components, etc.
- Maintained delivered products: U-boot, POST, BIST, and offline diagnostics for Power PC
- Used Code Collaborator for code review, Perforce for source control, ExtraView for bug reports
Confidential, Chandler, AZ
Senior Software Consultant (Contract)
Responsibilities:
- A member of kernel driver team developing NVMe device (PCIe SSD) driver for Linux
- Participated in implementing ioctl NVMe commands, SCSI to NVMe translation commands, and I/O functions to interface with kernel Block IO layer. The driver runs in x86 64 platform under Linux distros (CentOS, RHEL, Ubuntu, SLES). Implemented device features: TRIM, Striping and SMART Log; Knowledge of device’s DIF/DIX, Hotplug, and Power Management.
- Participated in modifying QEMU emulated drive to interface with NVMe controller commands
- Knowledge of VMware Workstation and Workbench to generate driver to run under VMware ESX.
- Experienced with recompiling kernel versions 2.6.26 to 3.3 and with KDB, using Kdump to capture core dump for system panic cases
- Implemented user test application to verify the driver implementation. Implemented Shell/Python scripts for automated build and test with run-time driver Bullseye code coverage.
- Used C for programming, Git for source control, Review Board for code review, Rally for task tracking, and Agile development environment.
Confidential, Phoenix/Scottsdale, AZ
Senior Staff Software Engineer
Responsibilities:
- Responsible for developing Linux system software for Trusted Virtual Environment (TVE) platform. The platform utilizes Redhat Linux, VMware, and SELinux as the core software and Intel TXT enabled processor. TVE allows administrator user to create multiple Virtual Machines (VMs) with different guest OS for different security level users
- Utilized IBM Requisite Pro for requirements database, ClearQuest, and ClearCase
- Software modules were designed in OO and implemented in C++. Utilized Visio and IBM RSA UML tool for software design. Used Coverity Prevent and UnderstandC for static analysis
- Developed headless VPN VM which includes IPSec VPN client, PKI s, and iptables firewall. The VM interfaces internally with guest VM and interfaces with Cisco ASA VPN controller via external Ethernet port
- Developed Linux daemons/processes with multi-threads and socket functions to filter Variable Messages Format (VMF) messages via network interfaces using Secure Transport and HTTP
- Developed library functions to filter secure SOAP messages by using XML Encryption and Signature standards C Library XMLSec (Libxml2 and OpenSSL).
- Implemented software to meet SELinux policy; implemented daemons to run Tripwire File Integrity and diagnostic functions to check system hardware; utilized SSH and PAM (pluggable authentication module) for Remote Login application.
- Developed VMs memory isolation analysis tool. Modified VMware kernel module and VMware Hypervisor interface to provide memory allocation data for running VMs. Identified and debugged VMware related issues
- Responsible for developing test plan and test cases for software integration and test for TVE platform, setting schedule and tasks for team members for software test activities
- Participated in generating system requirements, software requirements, trade-off studies, test application design and implementation
Confidential, Chandler, AZ
Software Consultant (Contract)
Responsibilities:
- Responsible for developing and maintaining application software to validate the media processor design system. The software was implemented in C and run in the embedded Linux in Audio and Video SoC/ARM based platform
- Implemented test scripts in Perl and Linux Shell to perform module and system regression tests to verify audio driver for MPEC, ACC, and AC3 codec and video driver for MPEC2 and H264 codec
- Implemented test application to perform the AV MPEG file playback by using Gstreamer elements or audio driver APIs. Attended one week for Gstreamer Frameworks
Confidential, Santa Ana, CA
Sr. Embedded Software Engineer (Contract)
Responsibilities:
- Responsible for developing and maintaining Management Embedded software for 10 Gigabit Ethernet Switches. The system included PowerPC 8245 CPU board (SDRAM, Flash, Ethernet, RTC, EERPOM, LCD, and RS232), PCI-PCI Bridge, Broadcom 5670 Switch Fabric ASIC, 1Gig MACs, 10Gig MACs, and PHYs
- Led the development project for the diagnostic software package used for system hardware testing. Provided the high level software specification, designed and implemented the diagnostic frameworks
- The diagnostic backend was written in C and the user interface was Windows GUI application implemented in Microsoft Visual Basic. Utilized PowerPC VxWorks Board Support Package (BSP) and Broadcom Gigabit Ethernet Switches SDK for the low level diagnostic functions
Confidential, Anaheim, CA
Sr. Embedded Software Engineer
Responsibilities:
- Responsible for developing embedded software used for the Xscale PXA255 and video camera based platform Lane Departure Warning in the vehicle CAN bus environment, also responsible for coordinating software release, back up team lead. Performed system engineering role to interface with the oversea customers for the system requirements,, and the final product integration
- Development tools: CodeWarrior IDE, CAN bus CANalyzer, source control Visual Source Safe
- Implemented software in C and ARM assembly in MicroC-II RTOS. Designed and implemented CAN bus interface, Data Link layer, Application layer for CAN Diagnostic
- Modified SPI interface CAN controller low level driver, Flash memory driver, I2C temperature sensor, and RS232 serial interface
Confidential, Irvine, CA
Staff Software Engineer
Responsibilities:
- Responsible for porting and maintaining the VxWorks BSP for Xscale 80200 platform. The BSP linked with the application software for the Fiber Channel based storage system.
- Implemented and modified the BSP functions and drivers: polling mode and interrupt mode serial port interface to console, serial driver for serial port interface to RS232 of external UPS, MMU, DMA functions, watchdog timer, FPGA initialization, timestamp driver for Windview, RTC, error exception handlers, interrupt handlers, flash driver, and I2C temperature sensor and voltage monitor
- Developed code in C and ARM assembly. Used JTAG debugger Vision Click for bring up. Used Windview and modified test configuration in Tcl to validate BSP software
Confidential, San Diego, CA
Sr. Software Engineer
Responsibilities:
- Responsible for task scheduling, writing design specifications, and developing diagnostics for multi processor network platform and Layer 3 modular switches. The code was implemented in C and Assembly in the UNIX and Window NT environment
- Participated in modifying boot loader and board bring up for multi IXP1200 (StrongARM core) network processors and Intel 8051 based platform
- Developed system diagnostics for multi network processor platform. Implemented low-level drivers and test cases to verify processor, memory, switch fabric, lookup engine ASIC, MAC, GMAC, Gigabit and 10/100 Ethernet ports of Layer 3 modular switch
Confidential, Santa Clara, CA
Sr. Staff Software Engineer
Responsibilities:
- Responsible for providing hardware interface functions and diagnostics for Gigabit switches. Maintained boot loader, Ethernet drivers, layers 2 and 3 functions. Used C and Assembly in Sun Solaris workstation and programs were written to run in VxWorks OS
- Developed diagnostic framework and test function templates for manufacturing diagnostics for Fast and Gigabit Layer 3 modular switches. The diagnostic package was developed in structured programming and included the user interface, status report, error processing, and test function templates
- Developed diagnostic functions to verify switch fabric ASIC, lookup engine, MACs and PHYs
Confidential, Santa Clara, CA
Firmware Lead/Firmware Engineer
Responsibilities:
- Responsible for developing firmware and diagnostics for SOHO remote access routers written in Assembly and C in UNIX workstation. Designed specifications, created and maintained development plans and schedules, interfaced with manufacturing for diagnostic support and software department for software support, coordinated with firmware developers for firmware build, and tracked bugs
- Ported and modified boot loader for M68360 based platform for board bring-up, and 10/100 Ethernet device driver
- Implemented low level drivers: RTC, watchdog timer, periodic timers, EEPROM. Implemented test functions to verify ISDN, Ethernet, and Flex WAN components
- Developed flash memory access driver for single flash and flash SIMM, for different types of flash, and for different manufacturers, including: AMD, Intel, Catalysts, and Mitsubishi. The driver was used for software upgrade and flash file system
Confidential, Santa Clara, CA
Firmware/Diagnostic Engineer
Responsibilities:
- Responsible for developing firmware and diagnostic software for Intel 80486 subsystem and Intel 80586 multiprocessor UNIX file servers using C/C++ and Assembly
- Modified Phoenix BIOS, ported and modified floppy disk driver, and wrote diagnostic functions to verify SCSI-2 controller interfacing with SCSI hard drives
