Firmware is an essential part of our everyday life and encompasses a wide range of devices — from your car keys to complex industrial production systems.
An important part of our development process is to make sure that everything is of high quality from start to finish. Doing this is not as easy as one might think, because there are a few problems with firmware development itself.
The problems in firmware development
Here are a few problems in firmware development we face regularly:
1. Firmware is compiled for a specific mainboard
Firmware compiled for a mainboard does not necessarily run on a different mainboard with the same CPU and PCH. It needs to be tested on the board it has been build for.
2. Firmware doesn't run in an emulator
Emulators usually do not need any firmware, as everything is working when the VM has been started. In addition emulators do not provide the same virtualized hardware the firmware expects on the mainboard.
3. Firmware needs to cover diverse hardware setups
A user is free to choose the CPU and PCIe add-on cards as well as the memory DIMMs on board, in addition to runtime configurable BIOS settings. Every possible combination needs to be tested.
4. Firmware shares code with older platforms
In firmware it is common to use shared code. When this code has been touched it is important to test all generations of platforms it runs on.
We build a test-station to ensure a sustained high code quality in the software we develop.
The test-station is able to flash any BIOS, power cycle the machine and access its serial port to get the boot log. When the firmware has been run it will attempt to boot an OS and run additional tests.
- Remote power cycling
- Flashing the boot firmware at any time
- Works with every 3.3V SPI flash
- Flashing takes places isolated from mainboard
- Serial console access
- Remote power button presses
- Up to four Devices-Under-Test with each unit
- Low cost
- No SPI emulator needed
- No PDU needed
- Utilizises Open Source hardware tools like the QSPIMUX
Right now we are trying to find a maintainable solution, which is easy to integrate into existing CIs. Our focus is on improving existing open source tools, like FWTS, and create a ready-to-use solution for every day firmware testing.
If you want to know more about our firmware and security work please feel free to contact us at firstname.lastname@example.org