35 lines
3.5 KiB
Markdown
35 lines
3.5 KiB
Markdown
# 1. Einleitung
|
|
|
|
## 1.1 Motivation
|
|
Im Programmieralltag wird man immer wieder damit konfrontiert, dass Software nicht einwandfrei funktioniert. Neben der Tatsache, dass es bei bei größeren Projekten schnell unmöglich wird den Fehler nur durch Analyse des Quellcodes zu finden, kommt es vor allem in eingebetteten Systemen vor, dass nicht immer Fehler in der Programmiersyntax oder -Logik vorliegen. Dabei geht es um Fehler, die nicht beim Kompilieren oder Linken des Programms auftreten, sondern erst zur Laufzeit der Anwendung. Um ein Programm zur Laufzeit zu debuggen gibt es mehrere Möglichkeiten. Dieses Praktikum wird Ihnen die klassischen Debug-Varianten darlegen und an Beispielen nachvollziehen lassen um diese Fehler effizient zu finden und zu korrigieren.
|
|
|
|
Dazu werden zunächst die Grundlagen des Programmbaus vom C-Code zum Maschinencode und zur Makefile behandelt, um später auftretende Fehler richtig einordnen und beheben zu können. Außerdem wird ein Grundverständnis von Betriebssystemen für ein- gebettete Systeme vermittelt.
|
|
|
|
Im nächsten Teil des Praktikums werden Ihnen Grundlagen des Software Debuggings
|
|
von eingebetteten Systemen dargelegt und praktisch auf die entsprechende Probleme angewandt. Dabei werden Sie lernen, welche Vor- und Nachteile die einzelnen Debugmethoden haben und wann es sinnvoll ist, welche Debugmethode zu verwenden. Die Arten
|
|
des Debuggings, die in diesem Praktikum behandelt werden beinhalten Printf Debugging, Debugging via Programmablauf-Counter/Single-Stepping, die Nutzung von Break-
|
|
/ Trace- und Watchpoints, die Nutzung direkten Speicherzugriffs zur Laufzeit des Programms und Möglichkeiten und Anwendung des Tracing. Die Aufgaben fördern das Verständnis zur Arbeitsweise eines Betriebssystems vor allem in Bezug auf Tasks und deren
|
|
Zustände, Scheduling und das Wissen um das Zeitverhalten in Echtzeitsystemen. Im Laufe
|
|
der Veranstaltung wird auf Inter-Core Kommunikation in Multicore-Systemen eingegangen.
|
|
|
|
## 1.2 Lehrnziel
|
|
Die Studierenden kennen am Ende des Praktikums die klassischen Varianten des Software
|
|
Debuggings von eingebetteten Systemen. Sie können mit Software Debugging Verfahren
|
|
wie zum Beispiel JTAG Debugging umgehen, kennen sich mit der Lauterbach Debugumgebung aus und wissen, welche Möglichkeiten sowie Vor- und Nachteile die jeweiligen
|
|
Debugmethoden mit sich bringen. Sie sind in der Lage Probleme zu beurteilen und die
|
|
am besten geeigneten Methoden des Debuggings auf diese anzuwenden.
|
|
|
|
## 1.3 Anwendungsfall
|
|
Das Praktikum vermittelt seinen Lehrinhalt an einem Anwendungsfall. Es soll die Software für einen sich selbst balancierenden zweirädrigen Roboter entwickelt werden, der
|
|
nach dem Vorbild eines Segways funktioniert. Der Roboter soll selbstständig sein Gleichgewicht halten und seine Position über eine Eingabe durch Fahrbewegung verändern
|
|
können. Die dafür benötigte Hardware ist bereits vorhanden und wird den Studierenden
|
|
zur Verfügung gestellt. Dazu sollen zu den Praktikumsterminen einzelne Komponenten
|
|
entwickelt, beziehungsweise zum Teil vorgegebene Software mit Lauterbach-Debuggern
|
|
debuggt werden. Die Roboterhardware wird über ein Zynq-7000 Board angesteuert. Die
|
|
Teilnehmer müssen eine inertiale Messeinheit auswerten und die ausgewerteten Daten
|
|
in Echtzeit verarbeiten. Die daraus berechnete benötigte Lagekorrektur des Roboters wird
|
|
an die Motortreiber übermittelt. Hintergrund dieses Anwendungsfalls ist die gegebene
|
|
Nähe zum Auslesen von Sensorik, Echtzeitverarbeitung von Daten, sowie Parallelen zur
|
|
Automobilindustrie im Bereich der Multiprozessor-Datenverarbeitung im späteren Verlauf des Praktikums.
|
|
|