by OS/Kernel


  • Designed, coded, and tested software for a training pod. Code was developed in C under VxWorks.
  • Designed and wrote code for a multiprocessor system which performed FFTs and other application specific processing to implement RADAR functionality using VxWorks.  Provided load balancing between processors performing computation intensive processing.  Provided tuning capability to improve use of the cache.


  • Developed real-time programs using embedded Linux and pthreads.  Wrote inter-thread communication queues, implemented in C++ as a template.  Each queue can then be created with a suitable data type, preventing superfluous type casting.
  • Implemented code to control and process results from an embedded signal processing system.  Interfaced with the FPGA and provided remote access to the system.  Since the system was headless, access was provided via (potentially multiple) Telnet connections, each providing a command interpreter.  Facilities were provided to easily add additional commands.
  • A parameter interface was included to allow examination and modification of parameters, either interactively or from scripts or programs.  This allows easy test setup and results logging.
  • Ported a pty (pseudo-tty) driver to Interactive Unix (386/ix).  The BSD "script" command was ported to the System V environment as part of this job as a test case for the driver.
  • Wrote the FIFO handling providing access to multi-port serial cards and the 16550A UART.  This UART contains a FIFO needed to prevent character overrun when operating high speed communication protocols.

Greenhill's Integrity

  • Wrote embedded real-time code for ARM processors as part of a medical heart defibrillator device.
  • Utilized Greenhill's Integrity kernel and C++ in a multiprocessor environment to add functionality and correct errors.. 


  • Designed and implemented a data collection system for a manufacturing environment using the QNX operating system.  The system ran in a multiprocessor system.  Screens allowing operator configuration were written for a windowed environ­ment.  Coding for both the real-time elements and the screens was done in C with CASE tools tracking the devel­opment.
  • Developed a screen traversal scheme in QNX which allowed each screen to be imple­mented as a sepa­rate executable task image.  The location of these tasks in the directory tree determined the screen hierarchy seen by the user.  Not only did this decouple the development of the screen handlers, but there was no need for a huge build of all the screen code at one time, and functionality could be updated in the field in an incremental manner.


  • Wrote COM on Windows 2000 a to control a microplate liquid handling system.  This design involved use of the VBA interpreter to ease customization.  Development was done in MFC C++, VBA, and COM.
  • Ported legacy C code from a DOS platform to operate as a service in an NT environment.
  • Used Windows CE to provide a remote VOIP communications facility. 
  • Configured Xilinx' Xilkernel and wrote multitasking code using it. 
  • Implemented Xilkernel code utilizing both Xilinx devices (serial, timer, etc) as well as devices custom to the product.

No Kernel

  • Wrote a multitasking operating system and application for a Microchip PIC that controlled the feeder for a document scanner.
  • Wrote a kernel for a Motorola DSP in which each task was a finite state machine.  Implemented mode start-up and shutdown functions, timing, and event communication facilities within this structure.