Most of our work is C and C++ on microcontrollers and embedded Linux boards.
We also build the desktop and cloud software that goes with a device.
Firmware and device software
Firmware and drivers for 8-, 16-, and 32-bit microcontrollers, with an
RTOS or bare metal. Board bring-up, bootloaders, peripheral drivers,
and production firmware.
We work mostly with Microchip and Renesas microcontrollers, and with
whatever part the board already uses.
Embedded Linux and Yocto
Yocto images, BSPs, and device drivers for system-on-modules, plus the
applications that run on them. We also maintain and migrate products
that started on Windows Embedded or Windows IoT.
Buses and protocols
SAE J1939 and CAN, Modbus, NMEA, USB (device and host), and Ethernet
with TCP/IP. Most of this work is getting a new device to talk to
equipment and software that already exist.
Desktop and cloud software
Windows desktop applications, including graphics-heavy and mapping
tools, and the cloud services devices report to. We build these
alongside the firmware, so one team is responsible for the whole product.
Much of our work is on code we did not write: the vendor has closed, the
original engineer has left, or the product needs changes while it keeps
shipping. We start by reading the code and talking to whoever worked on it.