Board brings up, starting from toolchain generation and, if necessary, over build system, to bootloader and OS porting. On-board debugging.
OS Porting and stress tests on hardware platforms or emulation platforms. Optimization for latency or bandwidth.
Writing device drivers for new peripherals or porting them from one OS to another. Linux, RTOS.
Real-time protocols implementation on the top of an OS or on a bare metal platform. Providing the hardware abstraction layer to link it all together. Preparing for certification tests, functional testing.
Programmable Logic Controller (PLC) firmware development. Industrial automation protocols.