Analysis and evaluation of the LLVM IR in the context of high performance automotive embedded controllers

Hintergrund

Im Bereich der automotive embedded Entwicklung wird aufgrund der hohen Sicherheitsstandarts, seit langem auf „C“ als standartisierte Programmiersprache gesetzt. Durch diese Einschränkung auf nur eine Sprache geht aber die Möglichkeit verloren, die Vorteile andere Programmiersprachen und deren eventuell für bestimmte Aufgaben besser geeignete Tools, zu verwenden. Auch wird die Zusammenarbeit von Teams und Abteilungen erschwert. Da die Sicherheitsstandarts aber weiterhin bestehen, werden bei der Continental AG im Moment, mehrere Lösungsansätze für dieses Problem getestet. Einer davon ist die Benutzung des LLVM compiler frameworks, um für, egal in welcher Sprache verfassten Source Code, durch die LLVM Intermediate representation (LLVM IR) eine einheitliche Plattform, auf die sich die Sicherheitsstandarts anwenden lassen zu schaffen und trotzdem die Möglichkeit für verschiedenen Ausgangsprachen zu bieten.

Zielsetzung der Arbeit

Im Rahmen dieser Arbeit soll die LLVM-Technologie hinsichtlich der Anwendbarkeit für automotive embedded controller evaluiert werden. Zu diesem Zweck soll in einem ersten Schritt die Darstellung von relevanten Programmiersprachen in LLVM IR auf Unterschiede, Gemeinsamkeiten, Informationsverlust, etc. untersucht werden. Mit den dadurch erworbenen Kenntnissen sollen dann spezifische Testalgorithmen in den entsprechenden Sprachen als Anwendungsbeispiele verfasst und auf ihre Ausführbarkeit in einem embedded System getestet werden. Im Rahmen dieser Test kann dann ein Fazit über die Anwendbarkeit von LLVM gezogen werden und somit der Grundstein für eine eventuelle zukünftige Vertiefung dieses Lösungsansatzes gelegt werden.

Konkrete Aufgaben

Erstellen einer Liste der Darstellung von Sprachelementen relevanter Programmiersprachen (Rust, Ada, C++, Haskell, Python) in LLVM IR

Analyse der genannten Liste

Entwicklung eines Testszenarios in Form von Algorithmen in den jeweiligen Sprachen

Ausführen der Algorithmen in einem embedded system

Evaluation der Eignung von LLVM für die Nutzung als einheitliche Zwischenplattform für multi language development

Erwartete Vorkenntnisse

Praktische Kenntnisse in der Programmierung

Basiswissen über Compiler

Weiterführende Quellen

Nach Absprache mit dem Betreuer