Ziel dieser Arbeit ist es, die Toolchain für den Entwicklungsprozess eingebetteter Software zu erläutern und einige dieser Tools für die Umsetzung eines Kleinprojekts zu nutzen.
In diesem soll mit Hilfe des Evaluationsboards Arduino UNO und dessen Entwicklungsumgebung eine Software implementiert werden, die es ermöglicht, Datum und Uhrzeit einzugeben und diese über den I²C-Bus an den DS1307-Echtzeitbaustein zu senden. Die eingegebene Uhrzeit und das eingegebene Datum sollen auf einem LCD-Modul ausgegeben werden können. Bei Programmstart soll nach einer kurzen Startsequenz ein Default-Datum sowie eine Default-Uhrzeit ausgegeben werden.
Die Entwicklung eingebetteter Systeme erfolgt in vielen spezifischen Schritten. Den Ausgangspunkt bildet in der Regel die Anforderung eines Kunden an ein jeweiliges Produkt. Von der Marktanalyse zu den Lasten- und Pflichtenheften bis hin zur Entwicklung der spezifischen Hard- und anschließender Implementierung der Software, den Test- und Analysephasen, stehen den Entwickelnden und anderen Mitarbeitenden zahlreiche spezifische Tools zur Verfügung um den Entwicklungsprozess zu erleichtern, Zeit zu sparen und qualitativer zu arbeiten.
Der komplette Entwicklungsprozess wird somit durch eine Vielzahl unterstützender Tools begleitet. In diesem Assignment wird die Toolchain für den Bereich Softwareentwicklung, Implementierung und Test vorgestellt. Darauf aufbauend wird die Benutzung einiger dieser Tools anhand eines Kleinprojekts in der Praxis dargestellt.
Inhaltsverzeichnis
1 Einleitung
1.1 Problemstellung
1.2 Ziel der Arbeit
1.3 Aufbau der Arbeit
2 Grundlagen und Definitionen
2.1 Eingebettete Systeme
2.2 Two Wire Interface (TWI) / I²C
2.3 Binary Coded Decimal (BCD)
2.4 DS1307-Echtzeitbaustein
2.5 Toolchain
2.5.1 Toolchain: Implementierung
2.5.2 Toolchain: Analyse und Fehlersuche (Testen)
3 Hardwaredesign des Kleinprojekts
4 Softwaredesign des Kleinprojekts
4.1 Hauptprogramm
4.2 Funktion AusgabeDatum_und_Zeit()
4.3 Funktion SetDatum_und_Zeit()
4.4 Funktion Byte_lesen()
5 Kompilieren und Übertragen (flashen) des Programmcodes
6 Testen der Software
7 Dokumentationstool der Software
8 Schlussteil
Zielsetzung & Themen
Das Hauptziel dieser Arbeit ist es, den Entwicklungsprozess eingebetteter Software anhand einer durchgängigen Toolchain zu erläutern und diese in einem praktischen Kleinprojekt anzuwenden. Die Forschungsfrage fokussiert sich darauf, wie ein Arduino UNO genutzt werden kann, um über eine I²C-Schnittstelle einen DS1307-Echtzeitbaustein anzusteuern und Datum sowie Uhrzeit auf einem LCD-Modul anzuzeigen, wobei das gesamte System nach der Implementierung auf korrekte Funktion zu prüfen und zu validieren ist.
- Methodik der Softwareentwicklung für eingebettete Systeme
- Implementierung und Konfiguration von Mikrocontroller-Hardware
- Grundlagen und praktische Anwendung des I²C-Bus-Protokolls
- Softwaretest, Debugging-Strategien und Validierung von Signalen
- Dokumentation des Quellcodes mittels automatisierter Tools
Auszug aus dem Buch
2.5.1 Toolchain: Implementierung
Vom Entwurf des Quellcodes bis hin zur Übertragung des lauffähigen Programms sind dedizierte Tools im Einsatz:
Der Quellcode kann mit normalen Editoren geschrieben werden. In der Praxis werden jedoch spezielle Texteditoren verwendet, da hier Sonderfunktionen vorhanden sind. Diese unterstützen die Entwickelnden, z.B. durch konsistente farbliche Darstellung von Programmierstrukturen, das Hervorheben und Selbstvervollständigen von Schlüsselwörtern, automatisches Einrücken, Erkennen und Hervorheben von potentiellen Syntaxfehlern (vgl. Hüning 2018, Seite 61). Alternativ kann der Quellcode auch mit Hilfe eines Modellierungstools generiert werden. Aus einem Syntaxmodell kann mit einem automatischen Code Generator C-Code erzeugt werden (vgl. ebd. 2018, Seite 59).
Zur Übersetzung des Quellcodes in Maschinensprache werden Compiler, Assembler oder Interpreter genutzt.
Compiler übersetzen den für den Menschen gut les- und änderbaren und vom Prozessor abstrahierten Quellcode (Hochsprache) in Maschinensprache (je nach Compiler für unterschiedliche Prozessoren) (vgl. Wüst 2011, Seite 107). Das Ergebnis ist eine binäre Objektdatei (vgl. Hüning 2018, Seite 61). Der Kompiliervorgang gliedert sich in Analyse und Synthese.
Zusammenfassung der Kapitel
1 Einleitung: Beschreibt die Ausgangsbasis der Entwicklung eingebetteter Systeme und definiert das Ziel, die Toolchain anhand eines Arduino-Projekts praktisch darzustellen.
2 Grundlagen und Definitionen: Erläutert die theoretischen Basisbegriffe, darunter eingebettete Systeme, das I²C-Protokoll, BCD-Kodierung, den DS1307-Baustein sowie die Phasen der Toolchain.
3 Hardwaredesign des Kleinprojekts: Spezifiziert die benötigte Hardware, den Schaltplan und die elektrische Verbindung der Komponenten auf einem Steckbrett.
4 Softwaredesign des Kleinprojekts: Detailliert den Softwareentwurf, die genutzten Bibliotheken und die Logik der Programmierfunktionen zur Ansteuerung der Hardware.
5 Kompilieren und Übertragen (flashen) des Programmcodes: Erklärt den Prozess von der IDE bis zur Übertragung auf den Mikrocontroller via Bootloader.
6 Testen der Software: Dokumentiert die Validierung der Software mittels Testfällen, Fehlersuche und Oszilloskop-Messungen.
7 Dokumentationstool der Software: Stellt das Tool Doxygen zur automatisierten Erstellung der Programm-Dokumentation vor.
8 Schlussteil: Fasst das Projekt zusammen und bietet eine kritische Reflexion des Entwicklungsprozesses sowie Möglichkeiten zur zukünftigen Optimierung.
Schlüsselwörter
Arduino UNO, Embedded Systems, I²C-Bus, Toolchain, Softwareentwicklung, DS1307, Firmware, Quellcode, Debugging, Oszilloskop, C-Programmierung, Mikrocontroller, Echtzeituhr, BCD-Code, Dokumentation
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Arbeit behandelt den praktischen Entwicklungsprozess eingebetteter Systeme unter Nutzung einer modernen Toolchain, konkret demonstriert an der Implementierung einer Echtzeituhr mit einem Arduino UNO.
Was sind die zentralen Themenfelder?
Kerngebiete sind Softwareentwicklung für Embedded Systems, Hardware-Design, die Anwendung des I²C-Bus-Kommunikationsprotokolls sowie Methoden des Software-Tests und der Code-Dokumentation.
Was ist das primäre Ziel der Arbeit?
Das primäre Ziel ist es, die Toolchain zu erläutern und durch die Umsetzung eines funktionsfähigen Prototyps zu zeigen, wie Software implementiert, übertragen und auf Hardware-Ebene validiert wird.
Welche wissenschaftliche Methode wird verwendet?
Die Arbeit folgt dem Ansatz eines praktischen Software-Entwicklungsprojekts, ergänzt durch eine theoretische Fundierung und eine empirische Validierung der Ergebnisse durch Messreihen.
Was wird im Hauptteil behandelt?
Dort erfolgt der Entwurf von Hardware und Software, die Beschreibung der Entwicklungsumgebung sowie die Durchführung und Auswertung spezifischer Softwaretests.
Welche Schlüsselwörter charakterisieren die Arbeit?
Zu den wichtigsten Begriffen zählen Arduino, I²C, DS1307, Debugging, Toolchain, Mikrocontroller und Software-Validierung.
Wie wurde die Korrektheit der I²C-Kommunikation nachgewiesen?
Um unerwartete Softwarefehler auszuschließen, wurde die Kommunikation zusätzlich zur Software-Ausgabe mit einem Oszilloskop aufgezeichnet und in Bezug auf das Kommunikationsprotokoll analysiert.
Welchen Zweck erfüllt das Dokumentationstool Doxygen in diesem Projekt?
Doxygen wurde eingesetzt, um aus den Kommentaren im Quellcode automatisch eine strukturierte Dokumentation zu generieren, was die Wartbarkeit und Lesbarkeit des Projekts verbessert.
Warum wurde eine 'debug'-Variable im Programm genutzt?
Diese Variable diente zur Fehleranalyse, um ungewünschte Zeichen beim Auslesen der seriellen Schnittstelle abzufangen und somit Fehlsteuerungen bei der Dateneingabe zu beheben.
- Quote paper
- David Protzmann (Author), 2023, Softwareimplementierung und Test mit Toolchain-Unterstützung, Munich, GRIN Verlag, https://www.hausarbeiten.de/document/1502716