Prior Projects







Vehicle Control Modules

Worked on teams at Sure Power Industries (now Cooper Bussmann) developing various power control modules for use in heavy trucks, buses, military vehicles and off-road vehicles.

Designed and implemented embedded applications for voltage regulators, DC power controllers, shift actuators, battery chargers, in-field module testers, alternator control modules, low-voltage disconnects and power distribution modules.  Wrote test code to verify new hardware functionality.  Implemented the ability to reprogram module firmware in the field.

Several modules communicated on a CAN bus using the J1939 Protocol.  Designed and implemented an in-house J1939 Protocol Stack for use in resource-limited environments.  Integrated a third-party J1939 Protocol Stack for use in "larger" modules.  Worked with the SAE (Society of Automotive Engineers) to define new standard J1939 messages as needed for these modules.  Wrote Windows user applications and LabVIEW applications to test and control various networked (J1939) modules.

Some modules used PID control loops.  One module used PI control to regulate the output voltage in a voltage regulator.  Another module used PI control to regulate the output current of an alternator (exciter field) control module.

Worked closely with customers to develop product specifications and help with system integration.  Worked with Test Engineering and a third-party test contractor to develop manufacturing test procedures.  Worked with an off-shore manufacturing facility to resolve manufacturing issues.

Helped guide the software group’s efforts at implementing an appropriate software process covering all phases of a product’s lifecycle.


Multiservice Edge Switch

Worked on a team at Oresis Communications developing VxWorks BSPs (board support packages) for a new generation edge switch for high speed voice and data carriers.  Implemented BSPs for custom hardware using MPC8240 and MPC750 PowerPC processors.  Provided custom debug code, visionICE (in-circuit emulator) macros and technical support to hardware engineers during board bring up.  Wrote drivers for the MPC107 EPIC (interrupt controller), DMA and I2C functions.  Provided support routines for upper level applications.  Maintained BSP build environment.  Helped standardize source code in various BSPs to allow for better code sharing and to simplify upgrades and bug fixes.

Became the vendor contact point for the EST visionICE emulators used in the Oresis labs, providing expertise to make other engineers more productive with the in-circuit emulators. Handled ordering, tracking and help with upgrades.  Worked with EST (bought by Wind River) to get timely fixes for bugs encountered with their products.

Took on role of Team Lead for the RTOS (Real Time OS) group for seven months.  Interviewed and hired two senior software engineers, assigned and tracked tasks, coordinated the team's activities and helped ensure that the team's deliverables were on time.  Helped design and implement software release procedures.  Oresis used a project management method that had many similarities to Scrum.


Freight Tracking

Worked with a team at Emery implementing an advanced freight tracking system.  Enhanced a set of message routing applications used to store and forward freight tracking information from hand-held terminals on the customer's docks to accounting applications on remote mainframes.  Took over initial work done by another engineer, installed the GNU C compiler environment on the customer’s Solaris server, ported the applications from AIX to Solaris, fixing numerous bugs  in the process.

Improved system performance (the measured TCP/IP message rate) from 200 messages per second to 10,000 messages per second, and expanded the maximum supported number of hand-held terminals from 250 to several thousand.  Optimized code to reduce system load from over 80% to less than 10%, enabling the customer to deploy lower-cost systems.


Digital Headend

Joined a team at VideoTele.com developing Linux and embedded applications to control a digital headend.  Took over duties of a departing contractor.  Responsible for Linux "host software", Linux build environment, Linux installations and CVS source code repository.  (The CVS code repository held several active branches for each of three main hardware configurations.)  Implemented automated test scripts to verify the nightly builds.  Worked with QA and other engineers to quickly resolve any bugs that were encountered.


Distributed Freight Terminal Applications

Worked with a team at Consolidated Freightways porting a major set of freight terminal applications from DEC Professional 300 systems and IBM Series 1 systems to Token-Ring networks of IBM PS/2s running the AIX operating system.  Provided UNIX and C expertise and training to the customer's software group.  Designed and implemented the system initialization process and the distributed device management servers.  Developed the system test application to verify proper system operation both as part of the build process and for debug in the field.


Windows-Based Terminal

Worked on a team at Tektronix (later sold to NCD) developing a Windows-Based Terminal (WBT).  Ported firmware for graphics terminal from big-endian mode to little-endian mode.  Added loader support for Microsoft binary file format.  Wrote low-level Windows CE kernel initialization code, including system initialization, interrupt handling and platform-specific I/O control functions.  Assisted other team members in adapting low-level code to new hardware platforms.

Maintained graphics terminal firmware across three product lines, fixing bugs, adding features and releasing new binary images to manufacturing.

Worked with customers and field sales engineers to identify and fix problems.


Net Stations

Worked on a team at Tektronix developing a new graphics terminal.  Ported existing firmware to new hardware.  Worked with hardware engineers to bring up new hardware, supplying custom code as required for hardware debug and to work around unexpected features in the microprocessor.


Fault Tolerant System

Worked on a team at August Systems developing a fault-tolerant system based on triplicated 68020 processor boards, using 68010-based VME systems as I/O processors.

Implemented the pROBE-based firmware for the host CPU boards and the I/O processors, the pSOS device drivers for the I/O processors, the 'generic' device task on the I/O processor, and the initial sample applications.  (Prototype versions of the device task ran on UNIX instead of pSOS.)  Responsible for system integration and design analysis.  Provided several UNIX-based software tools used to enhance the system build environment.  Administered the UNIX-based development system.


Pentium ICE Firmware/Host Software

Developed the trace collection, trace display and event recognition code (host and firmware portions) for Intel's in-circuit emulator (ICE) for the Pentium microprocessor.  Took over partially functional trace display code from a departing engineer and brought it up to production quality.  Implemented host grammar and message packets for the event recognition commands.  Rewrote the event recognition firmware and made major enhancements to the hardware interface sections of the trace collection and display code.

© Gold River Systems, Inc. 2011