Generac Power Systems
August 2009 to August 2010
- Developed CAN bus driver for networking generator controllers and human interface devices for generators targeted at the commercial and industrial markets. The CAN bus driver handles all low-level data exchange between nodes providing a means of constantly maintaining vital inter-node data for rapid access by the application-level firmware, critical for maintaining safe and predicable operation of the generator. Efficient team working and communication skills were necessary for the successful system integration of this driver across multiple products.
- Completed rewrite of a C language boot-loader supporting RS-232 and CAN communications interfaces improving stability and reliability of the boot application while at the same time reducing its overall code size by eliminating redundant, unnecessary, and/or dead code, as well as re-implementing over-used lengthy macros as functions. This involved updating the linker script file to limit the boot-loader application and its startup code to the PIC32 microcontroller’s Boot Flash. The respective C# PC firmware loader tool was updated and largely re-written to improve its stability and reliability, while at the same time adding user-controls and reducing programming time by about 75%.
- Designed, developed, tested (unit, bench, & system), and deployed UL certified, reusable I2T algorithm module. This new module allowed for varied use, so that the user could decide the trade-off of execution time versus output resolution. It was deployed on both legacy and new systems reducing code size in the older and existing units by 10KB.
- Updated existing, designed new, and implemented test firmware for use in production end-of-line testing for multiple product lines. Loop-back and “intelligent” test fixture design approaches were used depending on the product. The test firmware was integrated into the application, so as to avoid reprogramming the product after testing.
- Developed PC tools (Visual C++, Win32 Console, and C#) to support loading firmware images via a boot loader, generate 32-bit CRC values for firmware images formatted as Intel-HEX, and debug Modbus and CAN communication interfaces.
- Wrote and maintained technical documentation supporting software I developed: User’s Guide and Quick Start Guide for PC firmware loader and test procedures for use by production personnel.