A fitness band counts steps, reads a heartbeat and sends it all to a phone. Inside sits a small ARM microcontroller, a chip that holds a processor, memory and connections built to run one job, a motion sensor, a light sensor that reads the pulse, a Bluetooth radio and a tiny battery.
An embedded firmware engineer wrote the code that makes those parts work together. The code talks to the motion sensor over the I2C bus, a simple set of wires for talking to small parts, and reads it many times a second. It turns raw readings into steps and a heart rate. It wakes the Bluetooth radio only long enough to pass the data to the phone, and puts everything back to sleep, because every moment awake drains the battery. A small real-time operating system such as FreeRTOS, which runs tasks on a strict schedule, shares the chip between these jobs. The engineer also wrote the bootloader, the small program that starts the band and loads its main firmware, and the update code that installs new firmware over Bluetooth without turning the band into a brick, a device that will no longer start, if the battery dies halfway.
The work involves making a device's hardware do its job through code, and it often happens at a desk with a circuit board beside the keyboard. It could mean writing a driver for a new sensor after reading the chip's datasheet, the manual its maker publishes, cutting the power the band uses so the battery lasts longer, or adding a feature such as sleep tracking. An engineer flashes new code onto the board, watches signals on an oscilloscope or logic analyser, and steps through the code with a hardware debugger to see why a sensor returns nonsense. When a bug might be in the board rather than the code, the engineer works it out with the hardware engineers.
Around the code sits a set of duties that every firmware engineer shares.
Testing runs on real hardware. Engineers build test rigs that run the firmware on boards for long stretches, check it under heat, cold and a low battery, and keep a pipeline that builds and tests each change before it reaches a device. Code is reviewed by a teammate, and work is planned in short cycles like any other engineering team's.
Safety and standards bring paperwork. Car firmware follows its own rules, such as AUTOSAR and the safety standard ISO 26262, and medical devices have strict rules of their own, so engineers write documents that trace every requirement to the code and to the test that proves it.
Engineers also support the factory and the field. They help production lines load and check firmware on new devices, read logs from devices that failed in customers' hands, and plan updates with great care, since a bad update can stop devices across the country from starting.
A
The ideal candidate likes seeing code make something physical happen, enjoys electronics as much as programming, and has patience for bugs that hide between hardware and software. Electronics and electrical graduates often find it a natural fit, along with computer science graduates who loved their microprocessors course. With experience, engineers move into firmware architecture, into car software and functional safety, into embedded Linux and the Android layer below the apps, or across into systems work.