Notice This is not the latest version of this item. The latest version can be found at:http://dx.doi.org/10.48441/4427.1927.2
Fulltext available Open Access
Title: A Uniform API for Cross-Platform Timer Hardware Abstraction on Resource Constrained IoT Devices
Language: English
Authors: Gandraß, Niels Lukas  
Keywords: Betriebssysteme; Eingebettete Systeme; Hardwareabstraktion; Hardware Timer; Ressourcenbeschränkte Geräte; Softwaredesign; embedded systems; hardware abstraction; hardware timers; operating systems; resource constrained devices
Issue Date: 25-Sep-2024
Abstract: 
Timer sind Bestandteil jedes Mikrocontrollers und beeinflussen zahlreiche Aspekte eingebetteter Systeme. Ihre wachsende Vielfalt lässt sich jedoch nur noch unzureichend über die historisch gewachsenen APIs eingebetteter Betriebssysteme abbilden. Ein solider und zukunftsorientierter Ersatz für die aktuelle Hardware-Abstraktion ist daher notwendig. Diese Arbeit bietet einen umfassenden Einblick in heutige Timer-Peripherie. Wir analysieren die Timer von 43 Gerätefamilien und acht Herstellern, charakterisieren Timeouts für typische IoT Anwendungen, beleuchten die Timer APIs eingebetteter Betriebssysteme, identifizieren Mängel aktueller Lösungen und diskutieren Ansätze zur Hardware-Abstraktion. Auf dieser Wissensbasis entwickeln wir ein zweischichtiges Low-level Timer API Design und implementieren es für das RIOT Betriebssystem. uTimer ermöglicht die transparente Nutzung unterschiedlicher Timer- Typen über eine gemeinsame Schnittstelle. Diese ist plattformunabhängig nutzbar und stellt grundlegende sowie gerätespezifische Funktionen zur Verfügung. Timer und Kanäle werden im Durchschnitt verdreifacht und neue Timer-Typen, wie beispielsweise ultra low-power timer, nativ unterstützt. Die Vereinheitlichung aktueller APIs sorgt darüber hinaus für konsistenten und gut wartbaren Timer-Code innerhalb des gesamten RIOT-Ökosystems. Wir entwickeln plattformunabhängige Unit-Tests sowie Benchmarks und führen diese auf insgesamt 14 Mikrocontrollern in einem HiL-Testbett mit CI Unterstützung aus. Die vorgestellte uTimer API benötigt für ihre zusätzliche Abstraktion lediglich zwischen 6 und 21 CPU-Zyklen.
Dies entspricht einem Timeout-Fehler von weniger als 0:05%. Diesem steht die Nutzbarkeit zahlreicher neuer Timer-Funktionen gegenüber. Verzichtet man für spezielle Anwendungsfälle auf die Abstraktion von Timer-Typen, so kann jeglicher API-Overhead vollständig vermieden werden. Die automatisierte Ausführung von Tests und Benchmarks auf der aktuellen Code-Basis sowie für alle bevorstehenden Änderungen erleichtert außerdem die Entwicklung nachhaltiger Peripherie-Treiber und ermöglicht deren fundierte Bewertung.

Timers are part of every microcontroller and influence numerous aspects of embedded applications. As the heterogeneous spectrum of timer peripherals continues to grow, embedded OSs increasingly struggle to expose novel timers and advanced features via their time-honoured APIs. The need for comprehensive and future-proof hardware abstraction therefore arises. This work provides detailed insight into modern timer peripherals. We conduct a survey of timer hardware across 43 device families from eight manufacturers, characterize typical timeouts within IoT applications, examine timer APIs of popular embedded OSs, identify deficiencies of current solutions, and discuss different approaches to hardware abstraction. This forms a solid base, on which a two-layered low-level timer API design is proposed and implemented for the RIOT OS.
Its uniform interface allows transparently interchangeable use of all hardware timers. Generic and peripheral-specific features are exposed, yet application portability is preserved. On average, available timers and channels are tripled, and previously unexposed advanced timer types such as ultra-low power timers become usable. Current interfaces are streamlined to form a single API, fostering uniformity and maintainability of timer code throughout the whole RIOT ecosystem. We develop platform-independent timer unit tests and benchmark suites that are executed using a HiL testbed with CI support. The performance of our novel uTimer API is assessed on 14 MCUs. It only adds between six and 21 CPU cycles of abstraction overhead compared to existing solutions. This corresponds to timeout errors of less than 0:05% while numerous modern timer features are made available to user applications and high-level OS modules. For high-performance use, deliberate renunciation of timer-type transparency eliminates any performance differences between APIs at the cost of narrowing application portability. Automated execution of the contributed unit tests and benchmarks on nightly builds and pull requests moreover facilitates the development of sustainable implementations and permits their sound evaluation.
URI: https://hdl.handle.net/20.500.12738/16325
Institute: Department Informatik 
Fakultät Technik und Informatik 
Type: Thesis
Thesis type: Master Thesis
Advisor: Schmidt, Thomas  
Referee: Korf, Franz 
Appears in Collections:Theses

Show full item record

Google ScholarTM

Check

HAW Katalog

Check

Note about this record

Version History
Version Item Date Summary
2 doi:10.48441/4427.1927.2 2024-10-07 13:53:35.776 updated version (only minor changes, because of corrupted graphics): 2024-10-07
1 doi:10.48441/4427.1927 2024-09-25 14:40:29.0 old version: 2024-09-25

Items in REPOSIT are protected by copyright, with all rights reserved, unless otherwise indicated.