The Project: A custom object-oriented platform resource manager, middle-ware
supporting application level control of software and USB & Bluetooth hot-pluggable
hardware resources, providing key-string access to read-only and read/write values,
parameterized methods, and subscription to notification services. Resource classes
and instances are maintained in a hierarchical structure, and may be added, deleted
and modified on-the-fly. Communications upward to client applications via XMLRPC
(IP). Automated testing of all provided services, including device control, overtemp,
and software reboot, shutdown and sleep.
|
Services: Implementation and test.
|
|
OS: Gentoo Linux
|
Languages: GNU C++ and Ruby
|
|
Tools: Boost, xmlrpc++
|
CPU: x86
|
The Project: A system providing synchronized collection of data via 2.4GHz
RF from up to 6 sensor platforms, where each platform supported up to 16 analog sensors
of various types, any 6 of which could be selected for reporting at any given time.
Sampling was performed on 1mSec boundaries, synchronized across all sensors.
The custom RF protocol permitted on-the-fly assignment of sensor timeslot, frequency,
RF output power and sensor mapping during normal operation. 1 control slot,
6 data slots plus 2 retry slots ensured highly reliable data transfer at an
effective data rate of 576Kbps. A "sleep" mode extended battery life during idle intervals.
The system was developed on an Atmel SAM7S256 development board, then ported to custom hardware.
Sensor and collector platforms were identical, and the final data stream was passed for
processing to a PC via USB. A Windows application provided system control and real-time
monitoring of system performance.
Services: Hardware research;
Complete software & protocol design, implementation and test.
|
|
OS: Stand-alone embedded
|
Language: IAR C
|
|
RF Protocol: Custom
|
CPU: ARM7
|
|
Tools: IAR Systems Embedded Workbench
|
Platform: Atmel SAM7S256 development system; ultimately ported
to custom hardware
|
Other hardware: Chipcon CC2400 2.4GHz RF transceiver (via SPI)
ADI AD5301 DAC (via SSC/I2C)
|
The Project: Extend the GNU x86_64 toolchain to add support for a custom
CPU sporting several hundred new vector instructions. Included modifications
to the assembler, compiler, linker and debugger, plus x86 » x86_64 cross-development.
Compiler support included inline-assembly and built-in (intrinsic) function calls.
Complete automated build.
Services: Implementation and test of toolchain extensions;
Complete design, implementation and test the build system.
|
|
Languages: GNU C/C++ & x86_64 assembly
|
|
Platforms: x86_64 native & x86 » x86_64 cross-development
|
The Project: Provide Internet-remote upgrade functionality to a consumer set-top
product running embedded Linux. OS space, application space or both could be upgraded
in any operation, under the direction of the remote upgrade site. A backup of the
previous OS was maintained to provide a fall-back capability in the event of a corrupt
upgrade. The system made repeated attempts if needed, and downloaded the images in
compressed form. Extensive error detection and recovery measures ensured that the
upgraded images were valid. Upgrades were serialized, to ensure that no upgrade was
performed more than once.
|
Services: Complete design, implementation and test.
|
|
Languages: BASH & AWK scripting languages
|
|
OS: Fedora Core 4 Linux
|
The Project: Port both WinCE 5 and Linux 2.4.20 to two system reference boards,
both based on Intel's PXA-27x
(XScale) processor. These boards were intended
to support hand-held video and wireless designs. Modified OS kernels as required, and
ported/originated bootloaders and device drivers to support numerous devices.
Power-management/APM support.
|
Services: Complete porting and testing,
plus design and implementation as needed.
|
|
OSs: WinCE 5.0 & Linux Kernel 2.4.20
|
|
Languages: Visual C++ & GNU C
|
|
CPUs: Intel PXA-27x (XScale w/MMX)
|
|
Drivers: IDE/ATAPI (multi-word DMA/UDMA), SDMMC, PCCARD/PCMCIA, MMC,
NE2000 NIC, Wolfson WM9711 AC97 audio, ADP Blackfin DSP video capture/playback,
Conexant CX25872 TV encoder, CompactFlash (ATADISK), DirectShow, I2C, USB host,
PLX NetChip 2272 USB function, LCD/display, battery, keypad, serial port
|
|
Bootloaders: EBOOT (WinCE) & BLOB (Linux)
|
The Project: Provide a standalone unit intended for use on a mobile robotic
platform originally controlled via several RS-232 channels, to allow control
via IP. Supported real-time bi-directional conversion between multiple command streams
embedded in a single IP connection and the original RS-232 form.
Provided both local and network logging of all commands and events.
|
Services: Ported existing Java codebase to the Linux
environment; Configured and hardened the Linux installation to run
from read-only flash memory.
|
|
OS: Red Hat Linux 7.3 running in read-only CompactFlash
|
|
Language: Java
|
Platform: AMPRO ReadyBoard 550
|
|
CPU: Via Eden (Nehemiah) low-power X86
|
The Project: Provide command-line based qualification/calibration tools for
evaluating newly-manufactured infrared imaging systems. Qualified units were then
calibrated at a pixel-by-pixel basis, the system allowing for offsetting or disabling
the measured values at that level. (Win2K).
|
Services: Created a suite of command-line calibration tools to allow
manufacturing to proceed, then brought to completion a similar, more extensive
GUI-based calibration tool whose implementation and Q/A had stalled. (Win2K).
|
|
OS: Windows 2000.
|
|
Language: Command-line tools written in C++; GUI-based tools
written for LabView.
|
The Project: Build symmetric host/client device drivers providing high-performance,
low-latency pass-thru of multiple streams of video buffers of arbitrary size between
one or more G4Card blade servers running Linux and a host Linux PC with a fast (66MHz)
wide (64-bit) PCI bus. Used multiple DMA channels to deliver medium-resolution video
in real-time at 15 frames/sec. Extensive Linux driver work, plus some kernel
and application level work as well. Built custom test tools to evaluate and refine
functionality and performance.
|
Services: Complete design, implementation and test.
|
|
OSs: Yellow Dog Linux SMP & Red Hat Linux SMP
|
|
Languages: GNU C & PowerPC assembly
|
|
Platforms: G4Card blade servers & industrial PC
|
|
CPUs: Dual Motorola PowerPC G4 & Dual Intel Pentium Xeon
|
|
System Controller: Marvell GT64260A/B (Galileo)
|
The Project: Redesign Sensor Management Subsystem for Server
Management firmware. Project included porting from ARM to ARC,
alignment with next generation sensor-effector architecture,
support for replacement of the current sensor methodology (IPMI),
and providing the firmware in the form of an SDK.
|
Services: Project Leadership;
Complete architecture specs, software design, implementation and
test.
|
|
OS: ThreadX
|
Language: C
|
|
CPUs: Proprietary custom ASICs with integrated core, bridge and PCI controllers
|
|
Tools: Greenhills MULTI IDE & ICE
|
|
Platform: Various multiple-Pentium server platforms
|
|
Other Hardware: Various server platform chipsets
including I/O and memory controller hubs, network interface
controllers, PCI bus controllers and custom sensor interfaces.
|
The Project: Implement miscellaneous portions of Server Management
firmware. Designed and implemented embedded C code targeted at an
ARM-based ASIC using a JTAG-based ICE. Worked as a member of a large
development team across various sites supporting many different IPMI-based
server platforms that shared a core code base. Primary development of
SNMP and SMTP server interfaces but developed firmware in many functional areas.
|
Services: Complete architecture specs, software design,
implementation and test.
|
|
OS: ThreadX
|
Language: C
|
|
CPUs: Proprietary custom ASICs with integrated core, bridge and PCI controllers
|
|
Drivers: SIO3, MCH, fan control, flash management
|
|
Tools: Greenhills MULTI IDE & ICE
|
|
Platform: Various multiple-Pentium server platforms
|
|
Other Hardware: Various server platform chipsets including I/O
and memory controller hubs, network interface controllers,
PCI bus controllers and custom sensor interfaces.
|
The Project: Firmware update utility for 8051 controller attached
to a server platform via I2C. Required accessing I2C through server
chipset on host side. On 8051 side, interrupt service routine changes
were made to existing I2C library.
|
Services: Complete software design, implementation and test.
|
|
O/S: MS-DOS
|
Languages: C & ASM51
|
|
Platform: Server platform without baseboard management
controllers but including 8051-based Hot Swap Controllers
|
|
CPUs: Pentium-based PC «-» 8051
|
|
Tools: Keil C51, Microsoft Visual C++, I2C analyzer
|
The Project: Develop a Palm PDA application for tracking and resolving interactions between
mobile field units. Involved multiple databases, queries by criteria, extensive table manipulation,
custom controls and fonts, and interactive graphics. A Windows-based conduit provided
upload/download/synchronization.
|
Services: Complete design, implementation and test.
|
|
OS: PalmOS 3.52 and 4.0 / Windows
|
Language: prc-tools 2.1 (GCC tools for PalmOS) / Visual C++ 5
|
The Project: WinCE-based PDA application software for mail transfer.
Project included multi-threaded C code implementing POP3 and SMTP for
e-mail transfers over cellular modems. The program also utilized the
compact flash storage cards of the PDAs.
|
Services: Complete architecture specs, software design,
implementation and test.
|
|
OS: WinCE 5.0
|
Language: C
|
|
Platform: Compaq iPAQ PDAs connected via cell phones &
manufacturer cables.
|
The Project: Develop a real-time wireless courier tracking system.
Solution included embedded two-way Blackberry RIM850 software, bar-code
reader interface, Windows/NT Server software interfacing with SQL7
database and SMTP email services, and Windows workstation software.
|
Services: Complete architecture specs, software design,
implementation and test.
|
|
OSs: RIM OS & Windows NT Server
|
Languages: C & C++
|
|
Tools: Blackberry SDK 2.0 for RIM850/950, preliminary Apriva SDK
|
|
Other Hardware: Apriva bar-code scanner
|
The Project: Design and implement device drivers to support time-slot
interchanger and custom multi-channel DMA controller to meet MVIP-95 (via H.110)
standard. Intended for use in voice messaging systems.
|
Services: Complete design, implementation and test.
|
|
OS: Linux
|
Language: GNU C
|
|
Drivers Lucent Ambassador T81XX time-slot interchanger,
custom multi-channel DMA controller.
|
The Project: Port the Bochs X86 simulator (a software tool that
can emulate the hardware needed by the guest operating system, including hard drives,
CD drives, and floppy drives) from MS-DOS to HPUX.
|
Services: Porting and testing.
|
|
OSs: MS-DOS and HPUX
|
Language: GNU C++
|
The Project: Define and develop a multi-service ATM telecommunications switch,
the initial product offering of a new start-up company. Design and implement device
drivers. Create core system services and utilities.
|
Services: Participated in the earliest design phases, and subsequently in
design and implementation of core system services and utilities. Wrote the initial
specification documents.
|
|
OS: VxWorks
|
Tools: Tornado, GNU toolchain
|
|
CPUs: PowerPCs (PowerQUICC II 8250, 950)
|
|
Drivers: Implemented DMA and interrupt controller device drivers.
|
Utilities: Designed and implemented IMP and CLI.
- IMP was the inter-chassis messaging protocol, supporting communications between
the system's many processors. IMP was extremely efficient, provided both messaging
and remote procedure call services, and was transport-independent — it ran
over ATM, IP, via direct DMA, and even (for development purposes) using VxWorks message queues.
- CLI was a sophisticated modern command language incorporating command and argument help,
listing and completion, command history, and macro definition facilities, and which was designed
from scratch to be object-oriented and easily extensible.
|
The Project: Develop a software simulator of the SMC 6215 microprocessor, including peripherals
and interrupt structure, in a window-based development environment. Provide debugging and
trace facilities, access to RAM, ROM and simulated hardware registers, cycle-counting and other
measurement facilities, and complete symbolic access to program variables and functions.
|
Services: Complete design, implementation and test.
|
|
OS: MS-DOS
|
Language: Microsoft C++
|
The Project: Production test system for wireless wristwatch, used RF to stimulate multiple
targets in a TEM cell, then listened to beeper in ASCII to receive test results.
|
Services: Complete design, implementation and test.
|
|
OS: MS-DOS
|
Language: Microsoft C++
|
The Project: Develop a portable, software-only real-time protocol generator for
a custom FM-subcarrier protocol (HSDS). The tool was able to generate all defined
variants of the base protocol. Originally intended for product development testing,
this tool eventually saw use in production test, site feasibility evaluation, and as a
marketing and sales aid.
|
Services: Complete design, implementation and test.
|
|
Protocol: HSDS, a custom uni-directional protocol for broadcast
message transmission via FM subcarriers; the protocol employed time-division
multiplexing, individual, group and broadcast addressing, and forward error
correction.
|
|
OS: MS-DOS
|
Language: Microsoft C
|
The Project: Design and implement a sophisticated stimulus/response test and
evaluation system for software running on an mask-programmed embedded system. The
Q/A requirements were very stringent, and the system eventually supported a regression
suite that took three days to complete and employing a custom I/O board and vision-based
evaluation of the target's LCD readouts. A compiler supported a custom test language (VDL),
and extensive post-processing made the regression completely automated, with thousands of
checkpoints.
|
Services: Complete design, implementation and test.
|
|
OS: MS-DOS
|
Language: Microsoft C and 80X86 assembly language.
|
The Project: Design and implement the "Oscilloscope" and "Logic Analyser"
windows of a proprietary CAD/CAE system. These two windows and their associated
numerical and control windows could run and display the results of simulation runs
using several industry standard analog and digital simulation tools. Display
supported multiple traces, full zoom and pan facilities, multiple cursors and
cursor-based measurement and computation services. The Logic Analyzer window
could group signals into bus traces of up to 32 channels. Care was taken to
ensure that no signal transition was hidden at any zoom level.
|
Services: Complete design, implementation and test.
|
|
OS: MS-DOS, VMS
|
Language: Pascal
|