Skip to content
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)
Firmware
- 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