- 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.
- 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
- 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 environment. Coding
for both the real-time elements and the screens was done
in C with CASE tools tracking the development.
- Developed a screen traversal scheme in QNX which
allowed each screen to be implemented as a separate
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
- 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.
- Wrote a multitasking operating system and application
for a Microchip PIC that controlled the feeder for a
- 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.