Principal Software Engineer Resume
Eden Prairie, MN
SUMMARY
- Tim is an expert in embedded C/C++ development of both RTOS and bare metal based firmware in regulated FAA and FDA environments, with 3 3 years in software development and test for medical devices and avionics/military applications. Highlights of his career are:
- Lead a team of five software developers which ported Planter software from a C167 micro to an STM32F765 ARM Cortex M7 micro. This is a CAN based agricultural product.
- Ported and replaced an antiquated ad hoc C167 CAN driver with a streamlined interrupt driven model that added data safety and removed potential race conditions, adding mutexed CAN Tx access.
- Designed, implemented and tested a first - of-its-kind fully functional Ethernet connection via the Ethernet Over EtherCAT (EOE) mailbox utility of a Beckhoff Slave Stack in a GHS Integrity 11.4.4 RTOS environment.
- Replaced an antiquated, noise-vulnerable polled I2C driver with a streamlined, state-of-the-art Interrupt Driven model.
- Developed integrated solutions in a teaming relationship with my FPGA counterpart on a Xilinx ZYNQ 7000 SOC, in a GHS Integrity 11.4.4 RTOS environment.
- Solved a 50 microsecond timing jitter problem on a 100 microsecond task, reducing jitter to less than 1 microsecond - GHS Integrity RTOS, Intel i5 Sandy Bridge four core processor.
- Developed automated regression test scripts using Python, Vectorcast, GHS Multi and SVN as an integrated set.
- Programmed and tested Ethercat Master Stack application in GHS Integrity and Ethercat Slave Controller software in OS-less Microchip C.
- Developed a 62304 Class III-compliant Event Manager for use in an embedded system in a medical device. - GHS Integrity RTOS, Freescale MPC5668 microcontroller. Worked in all phases of software lifecycle development - requirements, architecture, high level and detailed design, code, debug and integration testing.
- Developed low level drivers for DMA, SPI, I2C, GPIO and GUI for an ARM9 - Cortex A8 device application, using C in the Green Hills Integrity Operating System, and has performed extensive debugging and analysis using the Green Hills trace probe (a JTAG device) and the Green Hills Event Analyzer and Resource Analyzer tools.
- Trained in Green Hills low level driver development, Multi IDE, Integrity OS,and Board Support Package.
- Wrote and debugged PC applications for a laptop used by physicians to program and monitor implantable cardiac devices in the QNX4 environment.
- Developed requirements, design and software for an Atmel AT91SAM7SE512 device application, using C in the IAR Workbench IDE, including a bootloader and stand-alone application.
- Created flow charts, interaction diagrams, and state machines for the automated resupply vehicle of the Crusader howitzer program.
- Automated FQT tests for three different programs at Confidential in Plymouth, MN.
TECHNICAL SKILLS
SOFTWARE: CAN J1939, ISO 11898, EtherCAT Slave Stack Development, C/C++ in Green Hills Multi IDE with Integrity OS, C and Assembly in IAR Workbench, Matlab, C Peg Libraries, Labview, C++, Python, Jscript, C#, PC Lint
TEST: Vectorcast, VISA Instrument API to Data acquisition device, and several different GPIB devices. Embedded firmware testing for the PIC family of devices.
TEST EQUIPMENT: Logic Analyzers, oscilloscopes, DMMs, power supplies, function generators. Automation of test equipment using GPIB with Labview C libraries.
DESIGN TOOLS: UML, Atlassian tool set (Confluence, JIRA, BitBucket, Bamboo), SourceTree, Rational Rose, Cognition Cockpit
LANGUAGE TOOLS: Green Hills Integrity with Multi IDE using the super trace probe, Xilinx Vivado, IAR Workbench with JTAG, QNX, Actel Libero, Confidential Visual C++, SlickEdit, Eclipse, Git
OPERATING SYSTEMS: Green Hills Integrity RTOS, QNX4, Red Hat Linux, Quadros RTXC
PROFESSIONAL EXPERIENCE
Confidential, Eden Prairie, MN
Principal Software Engineer
Responsibilities:
- Lead a team of five software developers which ported Planter software from a C167 micro hosted in Keil to an STM32F765 ARM Cortex M7 micro hosted in the IAR Workbench Environment. This is a CAN based agricultural product.
- Wrote a porting and development Visio diagram which was used as a roadmap for my team members to follow while porting software from an Infineon C167-based processor to an STMicro ARM Cortex M7 environment.
- Ported and replaced an antiquated ad hoc C167 CAN driver with a streamlined interrupt driven model that added data safety and removed potential race conditions, adding mutexed CAN Tx access.
Confidential, Fremont, CA
Responsibilities:
- Designed, implemented and tested a first-of-its-kind fully functional Ethernet connection via the Ethernet Over EtherCAT (EOE) mailbox utility of a Beckhoff Slave Stack in a GHS Integrity 11.4.4 RTOS environment. The primary challenge was to integrate the Beckhoff Slave Stack EOE into the GHS Integrity environment.
- This involved a buildup of infrastructure within the GHS debugger service source code and portions of the TCP/IP stack.
- Major changes to the debugger service and debugger control source code were required, impacting a total of ~30 of the GHS source files.
- Additionally, this required the development of both virtual and physical EOE device drivers.
- Replaced an antiquated, noise-vulnerable polled I2C driver with a streamlined, state-of-the-art Interrupt Driven model.
- In addition to the inherent superiority of an interrupt driver over its polled counterpart, direct coupling of high noise switching in the (PL) FPGA fabric to the PS driver portion of the AXI IIC bus controllers facilitated synchronization of I2C bus traffic, such that the I2C busses were active only during quiescent periods in the PWM cycling of the high noise FETs.
- This reduced errors due to FET switching by a factor of 20.
- The synchronization described above was developed as an integrated solution in a teaming relationship with my FPGA counterpart on a Xilinx ZYNQ 7000 SOC, in a GHS Integrity 11.4.4 RTOS environment.
Confidential, Eden Prairie MN
Responsibilities:
- Solved a 50 microsecond timing jitter problem on a 100 microsecond task, reducing jitter to less than 1 microsecond - GHS Integrity RTOS, Intel i5 Sandy Bridge four core processor.
- Developed automated regression test scripts using Python, Vectorcast, GHS Multi and SVN as an integrated set.
- Programmed and tested Ethercat Master Stack application in GHS Integrity and Ethercat Slave Controller software in OS-less Microchip C.
Confidential, Chaska, MN
Responsibilities:
- Resident expert in Green Hills Integrity RTOS . Resident expert in Vectorcast Unit Test Development.
- Developed an Event Manager for use in an embedded system within a medical device.
- The environment is RTOS based, with the Green Hills Integrity RTOS, hosted on the Freescale MPC5668 microcontroller.
- This development includes all phases of software lifecycle development, including requirements, architecture, high level and detailed design, code, debug and integration testing.
Confidential , Brooklyn Park, MN
Responsibilities:
- Primary driver developer for SPI, I2C, DMA, GPIO and GUI. Drivers developed in C for the Green Hills Integrity OS on a TI AM3517 microprocessor, which is an ARM9 Cortex-A8 device.
Confidential, Plymouth, MN
Responsibilities:
- Wrote rapid prototyping Firmware in C on the IAR Workbench IDE, for the Atmel 2313 microcontroller on the Excalibur program.
- Had to overcome hardware obstacles not usually addressed by software engineers, in order to get a working board out to ABL.
- Wrote and automated the FQT tests for the FMU-139C/B FUZE firmware. In addition to writing an entire suite of tests from scratch, I selected the test equipment which would allow me to perform the tests automatically from a lab PC.
- In addition, I designed two Test Interface Boards from scratch, that allowed me to interface my test setup with the FMU board.
Confidential, Phoenix, AZ
Responsibilities:
- Wrote Software Verification Cases and Procedures based on the SDD for an embedded RTOS for Avionics, per the DO178-B. This is a level B program. Test procedures implemented and automated using Vectorcast V4.2.
Confidential, Minneapolis, MN
Responsibilities:
- Writing Interface Specifications. Designing realtime SW Architecture, Detailed Design of SW layers, logical flow diagrams using Confidential Visio.
- Writing C code based on the ATMEL SAM architecture, to interface via the External Bus Interface with SRAMs, Virtual USB for serial communications with a host PC, JTAG for debugging and FW download, SPI for EEPROM, I2C for ADC, RTC and Discrete IO.
- Early development has been done using the Atmel AT91SAM7SE-EK evaluation board.
- Wrote and tested a bootloader application, for use in upgrading FW on non-development workstations.
Confidential, Roseville MN
Responsibilities:
- Designed, peer reviewed, debugged and ran firmware DVT for the charging unit. The DVT tests were written in jscripts, and ran on a C sharp core.
- Updated and implemented STS document and added traceability of STS to actual test scripts.
- Performed Vectorcast unit testing of C firmware code for PIC microcontrollers, for both the implanted device and its charging unit.
Confidential, Arden Hills, MN
Responsibilities:
- Designed, peer reviewed, debugged and ran test protocols. Modified Python Action Words, as needed, to support test protocols.
- Wrote both tool and application SCRs, as needed, to document test environment and application bugs, respectively, or to request test environment/action word capability upgrades.
- Debugged and ran regression tests. Added, monitored and corrected traceability of requirements in test protocols.
- Monitored, changed, added and/or removed requirements and modified test protocols, as needed, to keep them current with requirements.
- Wrote SCRs, as needed, whenever defects were discovered in application requirements.
- Coordinated with and supported software developers in the process of bug detection, analysis, and testing of bug fixes.
- Performed verification testing of both test environment and application SCRs.
- Was the prime developer of the touchscreen GUI for the next version of the PRM. QNX Windows and the Watcom C compiler were the tools for this development.
- During the last 15 months, re-hosted the windows GUI program, a 15,000-line real time task, from QNX2 OS, to QNX4, and wrote an entire new set of select-on-release functions, allowing the user to choose data values using the click and drag methodology used in Confidential Windows. Project length 1 year 7 months.
Confidential, Long Beach, CA
Responsibilities:
- Performed verification analysis of subcontractor's AFCS design and implementation.
- Identified significant design flaws in the Integrated Landing System (ILS) early in the design effort, thus avoiding significant program cost and schedule impact.
- Designed, coded, tested, and provided user support for an interactive six degree of freedom VAX Fortran program.
- This program was used as an al and analysis tool by several user groups.
- Designed, coded, tested, and provided user support for a batch version of the six degree of freedom program, which was used for time history analysis of the autoflight system.