title: Development of a library for the detection and prevention of errors concerning memory management and concurrency in C programs for microcontrollers based on ARM Cortex-M processors
Creators: name: Koch, Johannes
Publisher: name: FH Vorarlberg (Fachhochschule Vorarlberg)
Year: 2021
Subjects: subject: 000 Allgemeines, Informatik, Informationswissenschaft

description: Debugging errors in software applications can be a major challenge. It is not enough to know that a specific error exists, but the cause of it must be found in order to be able to fix it. Finding the source of an error can be time and cost intensive. The general approach is to analyse and debug the presumably erroneous part of the software. The analysis can be accompanied by instrumentation to gather additional information during the program execution. The analysis is made more difficult by the existence of different errors categories. Each category may need to be handled individually. Especially in embedded software applications, which commonly lack features like process or memory isolation, error detection and prevention can be even more challenging. This is the kind of problem this thesis tackles. This thesis tries to support developers during debugging and troubleshooting. The main focus is on errors related to memory management and concurrency. Specific features and properties of Arm Cortex-M processors are used to try to detect errors as well as their causes. For example, the memory protection unit is used to isolate the stack memories of different tasks running in a RTOS. The thesis tries to provide as much information as possible to the developer when reporting errors of any kind. The solution developed in this thesis also contains a custom memory allocator, which can be used to track down errors related to dynamic memory management. Furthermore, a Eclipse plugin has been developed which provides assertions for array accesses to detect and prevent out-of-bound accesses. The resulting solution has been implemented in commercial embedded software applications. This ensures that the developed solution is not only suitable for newly developed applications, but also for the integration into already existing products.
description: Die Fehlersuche in Softwareanwendungen kann eine große Herausforderung darstellen. Neben dem Wissen bezüglich der Existenz eines Fehlers ist es auch notwendig die Ursache dessen herauszufinden um ihn beheben zu können. Die Suche nach der Fehlerursache kann dabei zeit- und kostenintensiv sein. Im Allgemeinen wird der Teil der Software, welcher vermutlich fehlerhaft ist, analysiert und zur Laufzeit mittels Debugger untersucht. Die Analyse kann dabei durch Instrumentierung begleitet werden um zusätzliche Informationen zu sammeln. Die Analyse wird durch die Existenz unterschiedlicher Fehlerkategorien, welche gegebenenfalls individuell behandelt werden müssen, erschwert. Diese Arbeit beschäftigt sich mit dieser Problemstellung in Bezug auf die Entwicklung von eingebetteten Softwareanwendungen. Der Fokus dieser Arbeit liegt dabei auf der Erkennung und Behebung von Fehlern in Zusammenhang mit Speicherverwaltung und Nebenläufigkeit und soll Entwicklerinnen und Entwickler bei der Fehlersuche unterstützen. Es werden spezifische Eigenschaften der Advanced RISC Machines (ARM) Cortex-M Prozessoren genutzt um Fehler und deren Ursachen zu erkennen beziehungsweise zu verhindern. Ein Beispiel dafür ist die Memory Protection Unit, welche verwendet wird um den Stack-Speicher von einzelnen Tasks in einem real-time operating system (RTOS) zu isolieren. Die gesamte Implementierung versucht so viele Fehlerinformationen wie möglich zur Verfügung zu stellen. Ein weiterer Teil dieser Arbeit ist ein selbst erstellter Speicherallokator welcher Fehler in Bezug auf dynamische Speicherverwaltung erkennt und meldet. Ebenso wurde ein Eclipse Plugin umgesetzt, welches den Source-Code durch Asserts instrumentiert um Zugriffe auf Arrays abzusichern. Damit sichergestellt ist, dass die erarbeitete Lösung nicht nur für neue Projekte geeignet ist, sondern auch in bestehende Produkte eingearbeitet werden kann wurde die Lösung in Zusammenhang mit bestehenden, kommerziellen Produkten evaluiert.