Post Job Free
Sign in

sr. software & firmware engineer

Location:
San Jose, CA, 95120
Posted:
October 22, 2009

Contact this candidate

Resume:

GUI-BAI QIAN

E-mail: ******.****@*****.***, Telephone: 408-***-****

**** ******* *****, *** ****, CA 95120-4740

BACKGROUND SUMMARY:

· Developed real-time embedded firmware & software in a broad range of products including communication systems, medical devices, audio and video devices, consumer electronics, storage devices, etc.

· Practiced in all aspects of software development including requirements definition, functional specification, design (OOD), implementation (OOP), and system integration.

· Experienced in high availability, monitor and report of alarms and events, diagnostics, manufacturing support, middleware support, design and implementation of communication protocols, performance improvement, porting, device drivers, real-time operating systems (RTOS), ASIC evaluation and bring-up of prototype boards.

· Extensively developed firmware & software of multiple threads with RTOS, interrupt handling, DMA, inter-processor and inter-thread communication, finite state machines, message exchanges, semaphores, events and buffer management.

· Designed embedded relational databases and developed their management system, data description language and application library. Designed other application-specific programming languages and developed their compilers.

· Enjoy working with people from multiple disciplines. Self-motivated, detail-oriented and flexible.

· Fluent in Chinese including Mandarin and Shanghai dialect.

· Development environments & tools: Windows, Unix & Linux; GNU tools, Visual Studio C++; IDE (Integrated development environments), ICE (in-circuit emulators) and JTAG probes; Oscilloscopes and protocol analyzers; ClearCase, CVS, PerForce, PVCS, SCCS, SourceSafe and Subversion (SVN); Bugzilla.

· Programming skills: C (15+ years), C++ (3 years), Java and assembly languages.

· Product operating systems: VxWorks, AMX, pSOS, HP-RT & proprietary RTOSes; embedded Linux.

· Communication protocols: HDLC, I2C, Serial Line IP (SLIP), SONET/SDH, Serial Peripheral Interface (SPI), TCP socket, Transparent and UART. Implemented some of them with SOC peripheral controllers, protocol chips or software.

· Processors: Atmel ARM & AVR, Renesas, Motorola PowerPCs & 68K, Intel x86, etc.

EDUCATION:

· M.S. of Computer, Information & Control Engineering, University of Michigan, Ann Arbor, MI. (GPA=7.96/8.00)

· B.S. of Mathematics, The Peking University, Beijing, China.

PROFESSIONAL EXPERIENCE:

Pliant Technology, Milpitas, CA, November 2008 – March 2009, Sr. Software Engineer

· Enhanced the firmware of a Solid State Drive (SSD) and a PC program to manipulate it. 1) Developed a protocol for the SSD firmware and the PC program to communicate over a serial link with mixed framed and non-framed data. 2) Created a data link layer for the SSD firmware and the PC program to exchange data reliably. 3) Created an application layer to use the serial link to download firmware from the PC to the SSD and to test the SSD with large amount of data over a SAS loop-back interface.

· Tools, processors, etc.: Programmed an ARM processor inside a multi-core ASIC and the PC in C++ and under Windows XP. Managed the source files with Subversion (SVN).

Nortel Networks, Santa Clara, CA, January 2008 – September 2008, Sr. Software Engineer

· Enhanced the Diagnostic Monitor software of an Ethernet router. 1) Fixed bugs related to the communication between two processors on the Chassis Master (CM) card. 2) Ported the U-Boot program to the CM software. 3) Developed line card CPLD (complex programmable logic device) drivers and the code to test them. 4) Created utilities to program FPGA (field programmable gate array) and CPLD components on various cards to update them in the field.

· Processors and tools:. Programmed Freescale MPC85xx/MPC83xx PowerPC processors in C and under Linux to run with a proprietary RTOS. Managed the source files with ClearCase.

Avago Technologies, San Jose, CA, June 2007 – August 2007, Consultant

· Improved the firmware of an optical transceiver tester. 1) Enhanced its firmware to communicate with a PC with I2C protocol via an iPort adapter. 2) Developed a command interface between the PC and the tester to manipulate the transceiver. 3) Documented this firmware and few other internal tools.

· Debugged and enhanced a program ported from an internal language to C to verify an ASIC. Made it run on a Microchip Technology PIC micro-controller.

· Processors and tools: Atmel ATmega168, IAR Embedded Workbench IDE. PIC 18LF2520, MPLAB IDE and CCS (Custom Computer Services, Inc.) C compiler. iPort adapter, Beagle I2C/SPI monitor and oscilloscope. Managed the source files with Microsoft Visual SourceSafe.

LocoLabs, Sunnyvale, CA, September 2004 – April 2007, Sr. Software Engineer

· Created a game console as the firmware developer in a small team. 1) Brought up prototype boards. 2) Developed device drivers to use ADC, DAC, I2C, SPI, timers and UART in an SOC microprocessor. 3) Developed built-in diagnostics for many subsystems. 4) Developed an application library to support a game interpreter with audio playback, tone generation, LED sequencing, page-turn detection, touch-pad and touch-screen interfaces, power & battery monitoring and persistent data handling with simulated threads, finite state machines and message queues. 5) Developed code to manipulate a Samsung Infrared Blaster processor. 6) Evaluated and implemented algorithms to compress and decompress audio data. Applied some of them in the game builder and the application library.

· Enhanced the above game console with an ASIC. 1) Brought up ASIC evaluation boards. 2) Simulated and implemented device drivers to verify and use the ASIC. 3) Ported the above game console firmware to an Intel 80186 processor inside the ASIC.

· Enhanced the firmware of two HDMI networking devices. 1) Created a data link layer for a master device to communicate with slave devices over a special UART link. 2) Developed a protocol for the master device to manipulate the slaves. 3) Developed the code for the master device to receive infrared remote control commands. 4) Enhanced a PC program and the master device firmware to download the firmware from the PC via a USB link.

· Created a Java program to search user-specified event sequences in the log files generated by DVD vending machines. Developed a GUI to configure the searches and inspect the results.

· Processors and tools: Renesas M16C-M30620FCPGP & IDE, Atmel AT91SAM7S & IAR Embedded Workbench IDE, Intel 80186 processors & Paradigm C++ Professional IDE, MS Visual C/C++ Studio and Eclipse IDE. Programmed in C, C++ and Java. Managed the source files with PerForce.

BrightLink Networks Inc., Sunnyvale, CA, March 2000 – September 2002, Sr. Software Engineer

· Enhanced the software of the Chassis Management (CM) card of a SONET/SDH optical-electrical-optical switching system. 1) Methodically developed a high-availability module to handle the interaction between two CM cards with finite state machines. 2) Swiftly developed a module to interface a Display Unit (DU) via a UART link. It includes a Serial Line IP (SLIP) data link layer and an application layer for CM to control the components on DU and for DU to perform Alarm Cutoff and Lamp Test.

· Enhanced the software of a line card. 1) Developed an LED driver to support Lamp Test. 2) Developed an interface to the SONET/SDH Data Communication Channel (DCC). It includes an HDLC data link layer and a stream application layer. 3) Developed an SPI driver to interface a timing unit. 4) Improved an I2C driver to access a serial EEPROM device.

· Developed EPLD (electrically programmable logic device) drivers and FPGA drivers for new line cards.

· To support diagnostics, designed a language to describe the registers of various line cards and developed its parser to convert the description to C source files. Developed code to read those registers and save their values in files of the language syntax. Developed code to set those registers with similar files.

· Processors and tools: VxWorks & Tornado, Embedded Linux, Windows NT & 2000, GNU C, Intel Pentium, Motorola MPC8260, YACC. Managed the source files with ClearCase.

Software Engineering Consultant, Nov. 1992 – Dec. 1999

Selected Projects:

· (Radix Technologies, Inc., Mountain View, CA, Apr. 1999 – Dec. 1999) Worked on the master card software of an airplane reconnaissance system. 1) Improved the code that downloads software to slave cards, parses the system hardware configuration file, coordinates the system initialization, transfers and process status information, as well as organizes and downloads the MR filters. 2) Coded and debugged the RSSS Compensation Controller to coordinate the compensation among several modules. 3) Wrote code to verify and test these modules extensively based on the specifications.

· (Abbott Laboratories, Morgan Hill, CA, Apr. 1998 – Mar. 1999) Worked on the firmware of a Motorola MC68302-based medicine pump. 1) Fixed bugs in a proprietary real-time kernel and enhanced its performance. 2) Developed power-on self-tests (POST). 3) Improved the modules of Alarm & Event Logger, the Therapy, the Alarm Monitor, and the Power Management.

· (Abbott Laboratories, Morgan Hill, CA, Feb. 1997 – Oct. 1997) Worked on the firmware of a medicine pump based on an 8-bit Hitachi micro-controller to enable a host PC to monitor multiple pumps via a serial bus. 1) Wrote the requirement and design documents of the bus. 2) Implemented a SLIP protocol in the firmware and developed code to parse and execute many commands. 3) Also enhanced the firmware to set operation parameters from the front panel of the pump.

· (Hewlett-Packard Company, Santa Clara, CA, Nov. 1995 - June 1996) Worked on the embedded software of a Push Network Decoder (PND) that tests MPEG decoding, network latency, checksum, presentation time stamp, etc. on a video-on-demand system. 1) Developed code to de-multiplex a stream of transport packets and assemble a stream of MPEG-1 packs. 2) Improved the performance to increase the input rate from 4.0 Mbps to 8.5 Mbps. 3) Enhanced the software to test these features. 4) Developed APIs to operate the PND across the network as easy as with a local console. 5) Analyzed and documented the message-passing mechanism of HP-RT.

· (Compression Labs, Inc. or CLI, San Jose, CA, Nov. 1992 – Oct. 1995) Worked on systems that apply MPEG standards to deliver broadcast programs via satellites with encoded video, audio and program data. 1) Designed the Audio Encoder (AE) software and implemented it to digitize, encode, and compress audio data and convert them to elementary streams and transport packets. 2) Worked with hardware engineers to bring up the AE board. 3) Wrote programs to verify hardware modules of the board and made them into a manufacturing diagnostics tool. 4) Specified the Data Interface Unit (DIU) software requirements. 5) Designed its software and implemented it initially. 6) Took over the DIU development one year later, debugged, modified and enhanced it significantly. 7) Implemented HDLC, UART and Transparent protocols. 8) Developed the inter-processor communication on DIU. 9) Developed menu-driven user interfaces for both DIU and AE to facilitate debug and test.

· Processors and tools: Windows 3x/95/NT, Sun/HP Unix. GNU C, Green Hills C/C++ and Multi, Microtech Research C & XRAY. Sophia Systems ICE. VxWorks & Tornado, AMX, HP-RT and proprietary RTOS. Motorola Power PC and MC68302.



Contact this candidate