Electrical & Embedded Software Development

Platforms:
  • Bare-metal
  • FreeRTOS
  • Embedded Linux
  • Mbed OS/compiler
Parts last used:
  • ESP32 (w/ESP-IDF)
  • u-blox ODIN-W2
  • u-blox NINA-B1
  • Nordic-nRF
  • PIC10-32
  • ATtiny
  • i.MX 6
  • NVIDIA TX1/TX2/Nano
  • TMS320
  • MSP430
  • STM32
  • Multitech mDot
Peripherals:
  • Sensors and actuators
  • Smart home radios
  • Flash/EEPROM
  • Cell modems (Linux and bare-metal interfaces)
  • Analog to digital converters (ADC)
  • PWM controllers
  • Charge controllers (TI-BQ)
  • Fuel gauges (TI-BQ)
  • Serial communication controllers
  • EMIF for RAM/FLASH/FPGA/CPLD interfaces
  • Network co-processors (u-blox and ESP32 AT)
Protocols:
  • TCP/IP (including packet capture)
  • SPI/I2C/UART/custom
  • JTAG/SWD
  • BLE (Dev with Bluedroid/Nordic/some BlueZ)
  • HTTP(S)
  • MQTT
  • LoRa (extensive)
  • Zigbee
  • Zwave
  • AT-comand/parser
  • Nordic DFU transport
  • Modbus
  • Proprietary framing protocols (using HDLC, and custom)
Software modules:
  • Drivers
  • Display stacks (u8g2, etc..)
  • Bootloader (single and multi-stage)
  • Application
  • Connected and OTA upgrade
  • System/program monitor
  • System provisioners
  • Protocol parsers
Linux-specific knowledge:
  • U-Boot source and boot scripting (.scr/extlinux)
  • Kernel compilation/patching
  • Logging
  • Init/Systemd
  • CMake/Make/GCC
  • Peripheral communication (SPI/I2C/etc...)
  • C POSIX libraries
  • System monitoring
  • Process resource monitoring
  • Partition and disk/image management
  • Secure data encryption/handling
Electronics:
  • Digital and Analog circuit design/review/debug
  • RF design
  • CPU/controller/SoC selection & connectivity
  • Analog and Digital PCB design:
    • Sensor interface and signal chain design
    • Multi-layer PCB and flex design
    • Design for signal integrity/DFM/DFT
    • Solving EMC/EMI problems
    • Regulatory design reviews, i.e. UL, FCC, CSA
    • Power supply design, switch mode and HV
    • Design for low-power and battery-powered devices
Languages:
  • C/C++
  • Bash
  • Various ASM
  • Python
Commercial software dev tools:
  • STM32Cube IDE
  • IAR Embedded Workbench
  • Rowley CrossWorks (MSP430 and ARM)
  • Atmel Start + Atmel Studio
  • TI Code Composer Studio (CCS)
  • Keil µVision
  • Mbed online and Mbed Studio
VM/container:
  • VMware
  • VirtualBox
  • Vagrant
  • Docker
Hardware dev tools + related:
  • Oscilloscope
  • Joulescope (favorite tool!)
  • Current probes
  • Function generator
  • Logic and protocol analyzer (Saleae/USBEE)
  • Soldering/prototyping
  • Enclosure and potting
Recent roles held for clients:
  • Senior embedded hardware/software consultant
  • Software due dilligence for aquisitions