The Peripheral Selftesting Shield – Hunting Bugs in Loopback Mode
Marian is a research assistant at the Otto-von-Guericke-University in Magdeburg. He became an active member of the RIOT community in 2019 due to his research in the domain of security of IoT devices with focus on access control. He since relies heavily on RIOT not only in his research but also in teaching his students embedded programming.
RIOT provides access to MCU peripherals through a consistent API across a plethora of devices from different architectures and vendors. It has proven that providing correct behavior for each and every driver implementation is difficult, especially in regard to consistent handling of corner cases or rarely used features. Just getting the required test setup ready to check correct behavior for a number of boards covering different MCUs is time consuming, resulting in low test coverage of MCUs not tested by PHiLIP on the HiL https://dl.acm.org/doi/abs/10.1145/3477040. To complicate things further, no single entity in the RIOT community has access to all the MCUs supported by RIOT.
This talk presents the RIOT Peripheral Selftesting Shield in the hope to address these issues: a cheap add-on board following the Arduino Shield form factor that can be mated with many boards supported by RIOT, covering a large part of supported MCU families. It loops the output of peripherals back to inputs, so that a simple test application can verify that the data received matches the data send. While bugs that result in a consistent generation and interpretation of signals cannot be found by loopback testing, it has proven to be highly effective in catching real world bugs. Hopefully, the RIOT Peripheral Selftesting Shield will significantly reduce the effort and time required to test peripheral drivers, while also being easy to integrate into the distributed development model of RIOT’s diverse