What we do

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.

Taking over existing code

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.