Customer Engagement

  • interactively define and continuously refine customer requirements
  • flexibly accommodate changes as needed during project
  • periodically report progress as required
  • optionally participate in sprint planning, standup, and/or status meetings as needed
  • thoroughly prepare documentation as negotiated (user manuals, presentations)


  • ARM: Cortex-M0/M3/M4/A53; NXP iMX8QM, iMX8MM; NXP LPC series; ST Micro STM series
  • Synopsys: ARC EM4
  • Microchip: AVR and PIC
  • TI: MSP430
  • Intel: 8051, 8085, 80188, x86, x64
  • Silicon Labs: 8051 clones
  • Bluetooth LE: nRF8001, nRF51, nRF52 series (Nordic Semiconductor), CSR1000 (Cambridge Software Radios / Qualcomm)
  • Bare metal, FreeRTOS, OpenRTOS, AVRx, Arduino RTOSs / frameworks
  • Bare metal board support packages
  • Bootloaders (serial, OTA)
  • Exception handlers, Interrupt handlers, DMA handlers, I2C drivers, SPI drivers, serial drivers, Bluetooth LE stacks, WiFi configuration, TCP/IP stacks
  • Sensor drivers (3 axis accelerometers, gyroscopes, magnetometers, magnetic encoders, etc.)
  • Embedded storage devices (eMMC, DataFlash, SD card, Flash memory)
  • Closed-loop motor control (PID, encoders, external instrumentation with Digital Signal Analyzers for tuning)

Embedded Linux

  • Buildroot: got obsolete Pandaboard to boot again with recent kernel — required multiple patches for ES-B3 memory change to u-boot and kernel; debugged WiFi configuration
  • Yocto: iMX8 series custom board device trees; customization of root filesystem; customization of kernel, U-boot, and Busybox configurations; implementation of new recipe for time of flight camera support libraries and tools
  • System programming: POSIX pthreads (multithreading), shared memory, shared mutexes, shared conditionals, System V and systemd daemons, shared C++ libraries
  • Heterogeneous computing: RPMSG asymmetric multiprocessing protocol

Software Development

  • Python, PHP, Java, C, C++ programming languages
  • Make, CMake, and Bitbake build scripts
  • WxWidgets and MFC GUI frameworks
  • Pyplot
  • Git and Subversion revision control
  • Jira, Github, and Mantis issue tracking systems
  • static code analysis
  • Catch2 and Unity unit test frameworks
  • adhoc and Google test functional test frameworks
  • Jenkins CI (continuous integration)

System Design

  • microcontroller selection (price vs. required features vs. size, etc.)
  • development tools evaluation and planning
  • high level hardware, firmware, and software architecture
  • system block diagrams and documentation

Electronics Prototyping

  • bread boarding for quick proof of concepts with COTS boards and components
  • prototype development board design
  • schematic capture
  • layout
  • fabrication
  • assembly
  • testing / troubleshooting
  • emissions testing

Debugging and Troubleshooting

  • oscilloscopes
  • logic analyzers
  • spectrum analyzers
  • digital signal analyzers
  • logging
  • embedded and external debugging tools

Linux System Administration

  • Apache, OWASP, Postfix, Courier, Bind9, Shorewall, WordPress, and Mailman configuration
  • Backups
  • Package management