More Information...

Here's a brief list of special abilities we have and projects we have consulted on. It's intended to give a flavor of the type of work we have done and projects we have been involved with...


Embedded system development
Board bring-up, diagnostics, booting and file systems
PowerPC, 68xxx, ARM (Intel XScale, Sharp, Samsung, Atmel, Philips, Marvell, TI), MIPS (Alchemy Au1xxx, Broadcom), x86 CPU's (SC520), NIOS-II
Atmel (AVR, SAM7S), Microchip PIC (16F, 18F, dsPIC) & Motorola microprocessors (68HC11/12)
Linux kernels on embedded systems
Embedded software on Altera and Xilinx FPGA's
Small quick hardware designs from concept to production
Automotive networks & protocols: CAN, J1850, ISO 9141, KW2000, J2534
Handheld and wearable devices
Battery operated and low power devices, power management
USB host and function controller drivers
Ethernet and WAN drivers
TCP/IP Protocols, IP forwarding and routing, IP Routing protocols
Multicast routing and protocols
Voice-over-IP (VOIP) protocols and codecs


TI OMAP 3730 Linux port, debugging.
Linux port for OMAP 3525/TPS69930 based system with multiple cpu's and FPGA. New file system, driver support. Built-in diagnostics and firmware loading. Board bring up, diagnostics and deployment.
NIOS-II (w/mmu) linux unaligned access trap handler
Add trap handler to NIOS-II linux kernel to catch unaligned memory access and emulate them to produce the correct result. Fixed bug in module loading code caused by un-flushed data cache.
NIOS-II (w/mmu) simulator booting linux
Updated NIOS-II instruction set simulator to include support for "MMU" TLB hardware. Booted full linux kernel on simulator. Ran cpu verilog behavioral model using "verilator" in co-simulation environment to compare TLB access against behavioral model.
X86_64 EMT64 64 bit pc boot code and standalone program
Created boot code and application running in 64 bit (long mode) on standard PC server hardware. Code boots from disk or via network (PXE booting) and enters 64 bit "long mode". Application runs on raw hardware with 16Gb of ram with no operating system. The setup code initializes interrupts and sets up the memory management to access all memory in flat linear mode.
Co-simulation of custom verilog cpu with behavioral model
Simulation of custom cpu written in verilog with "C" behavioral model. Created custom tools to compare simulation in RTL and behavioral environments for cycle accurate verification.
Custom TI OMAP 3525 based video camera, sensor support.
Added camera sensor support to custom OMAP 3525 platform. Integrated with V4L code, wrote custom sensor drivers. Omnivision OV2640, OV2655.
TI OMAP 3525 Linux port, debugging.
Linux port for OMAP 3525/TPS69930 based system with multiple cpu's and FPGA. New file system, driver support. Built-in diagnostics and firmware loading. Board bring up, diagnostics and deployment.
AMCC PPC440EPx Linux port, debugging.
Brought up linux kernel on dual cpu PPC440EPx platform. Added support for customer fiber gigabit ethernet. Board bring up, diagnostics and deployment.
NIOS firmware, VISCA protocal support, STM32 (cortex m3) firmware.
Brought up video camera firmware on embedded NIOS in FPGA, implemented basic VISCA camera control protocol in firmware.
Multicore MIPS cpu port with verilog co-simulation.
Ported linux kernel to new MIPS cpus. Worked with development team in co-simulation environment to boot linux in simulation. Enhanced behavioral model, modified kernel to suite the new cpu.
Micronas USB audio chip integration.
Debugged Micronas USB audio chip on linux platform. Low level USB debugging and modifications to USB driver for platform specifics.
Gumstix design debugging, Atmel CPLD design.
Debugged Gumstix serial connection board. Write CPLD code for Atmel CPLD used as part of design.
Integrity RTOS Application, DO-178B Avionics
Added additional functionality to existing Avionics system using Integrity RTOS in DO-178 environment. Added to documentation and testing documentation and performed basic system testing.
Marvell PXA320 Linux port, debugging.
Linux port for PXA320 based system with multiple cpu's and FPGA. New file system, basic i/o support. Simple diagnostics. Firmware and FPGA bitfile downloading. Booting of TI Davinci ARM chips, low level Davinci, DM642 DSP diagnostics.
PPC Linux port, debugging.
Linux port for Freescale 8248 based system. New file system, basic graphics and sound support. Hardware bringup.
Altera NIOS II cpu simulation with Modelsim
Simulation of firmware running on generated NIOS II cpu with Modelsim.
Altera NIOS II cpu firmware
Designed and wrote embedded firmware in C for Altera NIOS-II cpu. Created custom startup code and simulated code with ncsim. Wrote behavioral model (C) for hardware and instruction set simulator for NIOS-II. Wrote utility to decode verilog trace file showing progress through firmware.
Altera NIOS II cpu generation
Generated Altera NIOS II cpus with SOPC builder. Created custom verilog to interface with top level of existing fpga design.
Xilinx Virtex 4 PPC405 firmware
Designed and wrote embedded firmware in C for dual PPC405 system in a Virtex 4 part. Created custom startup and debug code, simulated code with modelsim. Code includes support for Infiniband core and IB switch logic.
Philips LPC3180 ARM926 linux port
Quick port of linux 2.6 to Philips LPC3180 ARM926 linux port using evaluation board.
Extensions to Scheme/Lisp interpreter for embedded system
Wrote extension library for Scheme interpreter (siod) to allow basic graphics and user interface support.
Atmel SAM7S Controller firmware for embedded device
Extensive firmware for Atmel SAM7S ARM controller. Bootloader, system bring-up, LCD user interface, drivers.
Kernal/FPGA Interaction debugging.
Freescale 8270 based system with kernel panics. Debugged interaction problems with custom FPGA and linux, VHDL. Found problem in VHDL code, fixed and verified.
Philips ISP176x USB controller debugging
Debugged port of linux driver for Philips ISP176x USB controller. Controller used to access USB flash disks in embedded device.
PCI Ethernet driver debugging.
Ethernet chip would become non-responsive. Patches to driver.
Mason/Perl back end user interface
Extensive Mason/Perl project which provides user interface code for network management system.
Alpha CPU assembler port
Ported interpreter written in Alpha assembler to X86-64 architecture by writing a translator in lisp to convert the alpha opcodes into C. The interpreter now runs very well on modern linux.
Atmel SAM7S Firmware
Small ARM embedded system with MMC, SPI, floating point. Flash update and serial protocol software.
Atmel SAM7S CPU card
Small CPU card with SAM7S ARM cpu, CS8900 ethernet chip and Xilinx CPLD. TCP/IP Firmware, diagnostics, bootloader, board bringup, Verilog code for CPLD.
Voice-over-Satellite-uplink prototype
Sending compressed speech captured from aviation headset over low speed satellite uplink.
Voice-over-IP (VOIP) monitoring
linux based VOIP monitoring station. Protocol statistics and jitter measurements.
SNMP monitoring and configuration
Access to product status and configuration via SNMP.
Power Management for new TI ARM cpu (PXA270)
Added frequency and voltage change support for new ARM cpu. Kernel interfaces and drivers to make changes automatically.
uClinux port to ARM9 cpu
Ported uClinux to ARM9 cpu for cell phone.
Port and extend JavaVM on TI TMS320DM642 DSP (TMS320C6000 family)
Ported existing JavaVM and added on-the-fly code generation for DM642 DSP. Re-coded assembler interpreter for new CPU. Low level assembler and pipeline scheduling.
Software emulator for custom microcoded 32 bit cpu
Emulator program in C, runs existing microcode and boots existing operating system.
Power Management for new Intel XScale (ARM) cpu - PXA270
Added frequency and voltage change support for new ARM XScale cpu. Kernel interfaces and drivers to make changes automatically. Extensive debugging with new silicon.
Low cost X86 based linux platform
Brought up linux on an custom embedded x86 platform, hardware debug, boot code, file system, etc... Initial manufacturing runs of serial peripheral cards. Manufacturing documentation.
Ported existing JavaVM and added on-the-fly code generation for DM642 DSP. Low level assembler and pipeline scheduling
Low cost automotive vehicle interface
Microchip 18F PIC platform for data collection from various automotive vehicle interfaces. Designed hardware and firmware. Supports CAN, J1850, SCI. Software to support TCP/IP, J1850, CAN.
Kernel port to new Broadcom MIPS CPU
Brought up linux kernel on a new Broadcom MIPS CPU.
Linux based wireless "picture frame"
Sharp LH7A400 ARM 920 based platform. Designed hardware and software. Platform has PCMCIA slot, CF slot, flash, sdram and LCD interface, touch interface. Designed on low cost 6 layer PCB. Runs full linux system and displays images and video over wireless link.
Kernel port and network integration for hardware routing chip
Ported linux kernel to new ARM chip and added support for hardware packet forwarding engine. Added interface to kernel NAT and filter interface.
MIPS based hand-held computer with touch screen
Alchemy MIPS (Au1000, Au1100) kernel drivers for custom shared memory hardware, Linux drivers and Atmel programming for touch screen, beep and power management. File system developement for ramdisk, CF disk, flash booting. Boot code for PCMCIA booting.
Automotive protocol developement
Protocol software (J1850, K-line, SCI, CAN, KW2000, J2534) development of drivers, servers, libraries and diagnostics. CAN drivers & diagnostics.
PIC based ethernet device
Hardware and software design for simple PIC based ethernet device (CS8900, PIC18F458) with CAN, serial and parallel ports. TCP stack and control software. Hardware design, PCB layout and prototype fabrication.
Wearable computing
Linux running on a small cpu which can be worn around and used to interact with the environment, a.k.a "Wearable computing". For the MIThril project I enabled USB on their PowerPC platform and for the WearARM project I did a soup-to-nuts linux port which included early hardware debug and bringup, boot rom, linux port and file systems.
PowerPC platform bring-up
Specification and debug of PowerPC 832 UPM microcode for DRAM interface. Debugging and setup with JTAG debugger (Macraigor Wiggler).
High Performance Ethernet
Kernel VM debugging on 4 port gigabit ethernet device with PowerPC 7xx processor.
USB Function drivers
USB function (client) chip drivers and personality modules for various devices, including devices designed to look like ethernet devices.
Specialized I2C drivers
StrongARM (SA1100) Linux drivers and firmware (Atmel 8051) to communicate over i2c port for credit card strip reader.
Audio drivers
StrongARM (SA1111) Linux audio drivers.
IPSEC integration and debugging
Basic IPSEC port to PowerPC 405 processor with special changes to the libc DNS "resolver" library.
Custom OHCI USB Host controller
Modifications to existing linux OHCI USB host controller driver to support custom OHCI controller chip on PowerPC 405.
StrongARM SA1111 USB Host controller driver
Modifications to existing linux OHCI USB host controller driver to support StrongARM SA1111 chip.
USB Host controller software
Complete USB host controller driver for the PowerPC 8xx processor. Supports interrupt, bulk and isochronous transfers.

Contact Information

Brad Parker
Heeltoe Consulting
Arlington, MA

Heeltoe Consulting