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