Aspodinger, D. (2024). Modularisierung und Schutz von Applikationen auf einem ressourcenarmen Mikrocontroller mit Embedded Betriebssystem [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2024.122581
safety critical systems; embedded systems; microcontroller; software development
en
Abstract:
Bei der Entwicklung von Software für Embedded Systems, welche nur sehr eingeschränkte Ressourcen besitzen, wird meistens der gesamte Programm-Code in einer Binär-Datei zusammengefügt. Dabei werden alle Sprünge im Code und alle Daten-Abhängigkeiten während des Kompilier- und Linking-Vorganges ermittelt und aufgelöst. Dieses statische Linken ermöglicht es dem Compiler und dem Linker den Code in seiner Gesamtheit besser zu optimieren, damit die bereits eingeschränkten Ressourcen geschont werden können. Dies birgt jedoch den Nachteil, dass für eine Code-Änderung die gesamte Binär-Datei neu kompiliert, gelinkt und dann ausgetauscht werden muss. Dies führt dazu, dass das Programm nicht in Module gegliedert werden kann, welche unabhängig voneinander sind und nur durch ein vordefiniertes Interface kommunizieren können. Eine solche Modularisierung des Programms wäre vor allem für Safety-Entwicklungen wichtig, damit die safety-kritischen und die nicht safety-kritischen Module getrennt werden können und eine gegenseitige Beeinflussung der Module verhindert werden kann. Durch den in dieser Arbeit beschriebenen, modularen Ansatz für das Entwickeln einer Software, können für die safety-kritischen und die nicht safety-kritischen Code-Teile getrennte Binär-Dateien erstellt werden und damit verhindert werden, dass während der Laufzeit die nicht safety-kritischen Teile Fehler in den safety-kritischen Teilen verursachen. Dadurch bleiben die safety-kritischen Teile operationsfähig, auch wenn in einem oder mehreren der nicht safety-kritischen Teilen ein Fehler entsteht, welcher zu einem Absturz oder einem Hängenbleiben des nicht safety-kritischen Code-Teils führt. Eine solche Trennung von den safety-kritischen und den nicht safety-kritischen Teilen ist bei vielen Systemen gängige Praxis. Jedoch bei Embedded Systems mit sehr eingeschränkten Ressourcen ist dies nicht der Fall, da hier noch kein Betriebssystem oder keine Betriebssystemerweiterung vorhanden ist, welche eine Modularisierung, inklusive Schutz des Betriebssystems vor den Modulen und den Modulen gegeneinander, vorhanden ist. Eine weitere Möglichkeit zur Nutzung dieser Modularisierung ist, die Module zur Laufzeit auf das Embedded System zu kopieren und zu installieren, um eine Anpassung oder eine Individualisierung zu vereinfachen.
de
When developing software for a resource constrained embedded system, most often the entire program code is combined in a single binary le. All jumps in the code and all data dependencies are determined and resolved during compilation and linking.This static linkage allows the compiler and the linker to improve the optimization of the code as a whole and thus conserve the already constrained resources. However, this has the disadvantage that the entire binary file has to be recompiled, linked and then replaced for any code change. This means that the program cannot be divided into modules that are independent of each other, only connected via a predefined interface as sole communication method. Such a modularization of the program would be particularly important for safety critical developments, so that the safety-critical and the non-safetycritical modules can be separated and mutual influencing of the modules can be prevented. Using the modular approach for developing software, as described in this work, allows the creation of separate binary files for the safety-critical and the non-safety-critical code parts and can prevent the non-safety-critical parts from causing errors in the safety-critical parts during runtime. In this way, the safety-critical parts remain operable even if an error occurs in one or more non-safety-critical parts, which leads to a crash or a hang of the non-safety-critical code part. Such a separation of the safety-critical and the non-safety-critical parts is common practice in many systems. However, this is not the case for resources constrained embedded systems, since there is no operating system or operating system extension available, which allows the modularization including the protection of the operating system from the modules and the modules amongst themselves. Another way to use this modularization is to copy and install the modules to the embedded system during runtime to make alterations and customizations easier.
en
Additional information:
Abweichender Titel nach Übersetzung der Verfasserin/des Verfassers