SOFTWAREENTWICKLUNG FÜR



Ähnliche Dokumente
MIKROPROZESSOR PROGRAMMIERUNG 7. VORLESUNG. LV-Nr SS INSTITUT FÜR ELEKTRONIK BIT

Zählen von Objekten einer bestimmten Klasse

Propädeutikum. Dipl.-Inf. Frank Güttler

Einführung in die Programmiersprache C und in den C166-Compiler

DLLs (dynamic loaded libraries) mit MingW erstellen

Installation und Inbetriebnahme von Microsoft Visual C Express

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Einführung in PHP. (mit Aufgaben)

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Grundlagen. Kapitel 1

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Übungen zu C++ Kapitel 1

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Vorkurs C++ Programmierung

Version 0.3. Installation von MinGW und Eclipse CDT

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Einführung in die Programmierung

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

LEHRSTUHL FÜR DATENBANKEN

Programmieren was ist das genau?

Datensicherung. Beschreibung der Datensicherung

4D Server v12 64-bit Version BETA VERSION

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Mikrocontroller Grundlagen. Markus Koch April 2011

Grundlagen von Python

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Robot Karol für Delphi

Deklarationen in C. Prof. Dr. Margarita Esponda

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Fakultät Angewandte Informatik Lehrprofessur für Informatik

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Stapelverarbeitung Teil 1

Tipps und Tricks zu Netop Vision und Vision Pro

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Einführung in die C-Programmierung

Vorkurs Informatik WiSe 15/16

Informatik 1 Tutorial

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Mediator 9 - Lernprogramm

2. Programmierung in C

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

Einführung in die Informatik Tools

Einführung in Eclipse und Java

Verwendung des Terminalservers der MUG

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Arbeiten mit UMLed und Delphi

Kompilieren und Linken

Übung - Datensicherung und Wiederherstellung in Windows 7

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

S7-Hantierungsbausteine für R355, R6000 und R2700

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

10 Erweiterung und Portierung

Übung - Datensicherung und Wiederherstellung in Windows Vista

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Vorlesung C-Kurs 9:15-10:45 Mathe 11:15-12:45 1. Woche Hörsaal 1 2. Woche Hörsaal 7

Installation OMNIKEY 3121 USB

Informatik I Tutorial

! " # $ " % & Nicki Wruck worldwidewruck

1 Vom Problem zum Programm

Theoretische Grundlagen der Informatik

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Artikel Schnittstelle über CSV

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

SANDBOXIE konfigurieren

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Windows Server 2008 (R2): Anwendungsplattform

Informatik in der Elektrotechnik (BIE) Aufnahme des Übungsbetriebs

Task: Nmap Skripte ausführen

Installationsanleitung

2. Word-Dokumente verwalten

1. Produktstruktur Lizenzmodell... 4

Nuetzlicher Kleinkram

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

SMS/ MMS Multimedia Center

Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz

Tipps und Tricks zu Netop Vision und Vision Pro

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Objektbasierte Entwicklung

4 Planung von Anwendungsund

Zahlensysteme: Oktal- und Hexadezimalsystem

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

C++ mit Eclipse & GCC unter Windows

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

TeamSpeak3 Einrichten

Leichte-Sprache-Bilder

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Konvertieren von Settingsdateien

Pascal-Compiler für den Attiny

INSTALLATION VON INSTANTRAILS 1.7

Transkript:

MIKROPROZESSOR PROGRAMMIERUNG 7. VORLESUNG BIT LV-Nr. 439.026 SS2007 1 SOFTWAREENTWICKLUNG FÜR µc Übersicht - Prinzipdarstellung Der Weg zu einem lauffähigen Maschinenprogramm Vergleich von Programmiersprachen Ein µc-anwenderprogramm generieren Demonstration einer µc Entwicklungsumgebung Einführung in die Embedded Systems C - Programmierung 2 1

Praktisches Problem für µc- Experten 3 SOFTWAREENTWICKLUNG FÜR µc PRINZIPDARSTELLUNG ENTWICKLUNGSUMGEBUNG Versions-Verwaltung Quelldateien Editor freigegebene Quelldateien geänderte Quelldateien integrierte Entwicklungsumgebung Übersetzer Compiler Objekt-Dateien Binder Linker Symbole Debugger Test Anwendungsprogramm Ausführbare Datei Entwicklungssystem: PC PROGRAMMENTWICKLUNG Download Zielsystem: Mikrocontroller µc-system PersonalComputer µc-applikation 4 2

PROGRAMMIERSPRACHEN FÜR µc: (früher) Assembler heute meist C, nur zeitkritische Teile in Assembler bei leistungsfähigeren Mikrocontrollern auch C++ erfordert aber mehr Ressourcen und erzeugt mehr Dynamik Java in der Regel zu ressourcen- intensiv es existieren jedoch einige Forschungsbemühungen in diese Richtung weiche Echtzeit: Java, C#, VB u.a. PROGRAMMGENERATOREN FÜR µc: UML (Unified Modeling Language) Blockschaltbild (Matlab/Simulink) DAVE (Digital Application virtual Engineer ) UML 5 MASCHINENSPRACHE - ASSEMBLER Ein Assembler in der Informatik ist ein spezieller Compiler, das ein in einer maschinennahen Assemblersprache geschriebenes Programm in Maschinensprache übersetzt. Oft wird der Ausdruck Assembler auch als Abkürzung oder Synonym für Assemblersprache verwendet. ASSEMBLER: Für jeden Computertyp gibt es spezielle, auf den Befehlsvorrat des Computers zugeschnittene Assemblersprache. Der Prozess der 1:1 Übersetzung dieser Assemblersprache in die Maschinensprache heißt Assemblieren. HINWEIS: Assemblersprache wird immer seltener eingesetzt. Der Möglichkeit der Erstellung effizienter Programme steht die erschwerte Wartbarkeit von Assemblerprogrammen gegenüber. Maschinennahe Programmierung die Domäne von Assembler kann heute fast vollständig durch höhere Programmiersprachen abgedeckt werden. Auch ist die Programmierung heutiger Prozessoren in Assemblersprache zur Geschwindigkeitsoptimierung schwierig, da zahlreiche Nebenbedingungen eingehalten werden müssen, damit der Prozessor in optimaler Geschwindigkeit läuft, während auf der anderen Seite optimierende Compiler für Hochsprachen immer besseren Code erzeugen und diese Bedingungen automatisch erfüllen können 6 3

COMPILER Allgemein: Ein Compiler erzeugt aus einem Quellprogramm, das in einer Quellsprache geschrieben ist, ein Zielprogramm in einer Zielsprache (z.b. C) Aufgaben Hochsprache wird durch Übersetzer (Compiler) in Maschinensprache übersetzt Das erzeugte Programm wir dann auf die Zielmaschine geladen und ausgeführt Die Interpretation der Befehle erfolgt direkt durch die Hardware / Betriebssystem der Zielmaschine (µc) Jede Zielsprache benötigt eigenen Übersetzer (Compiler) Weiterhin Laufzeitsystem, Speicherverwaltung, Typprüfung Betriebssystembibliotheken müssen dazu gebunden werden (Linker) Laufzeitssystem: Bereitstellung aller Routinen, die zur Ausführung eines Programms in einer Programmiersprache erforderlich sind (Interaktionen mit dem Betriebssystem, Speicheranforderungen, Prüfungen der dynamischen Semantik, Fehlerroutinen usw.) Hinweis: Semantik (Bedeutungslehre).hex Linken: Überführung des vorliegenden Maschinencodes in ein ausführbares Programm Binden aller Teile des Programms (getrennt übersetzte Dateien, Bibliotheksfunktionen, Fehler- und Speicherverwaltungsroutinen des Laufzeitsystems) zu einem lauffähigen Programm 7 VERGLEICH VON PROGRAMMIERSPRACHEN: Sprache C C++ Pascal Assembler Quelltext #include <stdio.h> main() { printf ( "hello, world\n"); } #include <iostream> main() {std::cout << "hello, world" << std::endl;} program hallop; {$APPTYPE CONSOLE} begin writeln ('hello, world') end. 0100: mov dx, 010a 0103: mov ah, 09 0105: int 21 0107: jmp 0000 010a: db 'hello world' 0d 0a '$' Ein Assembler-Programm kommt mit einem winzigen Bruchteil der Bytes aus, die beim Übersetzen durch C++- Entwicklungssysteme belegt werden, und C++-Compilate machen sich auf der Festplatte und im Speicher unverschämt breit. Obgleich sich solche Beobachtungen an Miniprogrammen nur höchst eingeschränkt auf reale Software-Produkte üblichen Umfangs übertragen lassen, so sagen sie doch eines: Besonders wirtschaftlich geht C/C++ beim Linken nicht vor, die ausführbare Datei ist mit hunderttausenden ungenutzter Bytes aufgeplustert. Übersetzer C-Programm C++-Programm Pascal-Programm Assembler- Programm Pascal 29 116 byte C 45 000 byte 12 006 byte GCC 3.2 11 000 byte 562 928 byte Debug 24 byte 8 4

SPEICHERBEDARF: hier liegt ein wesentlicher Unterschied zur Programmentwicklung auf dem PC bei Mikrocontrollern ist Speicher eine knappe Ressource (z.b. 6KB RAM, 128KB FLASH) Übersetzer optimieren meist in Richtung Speicherbedarf (selten Geschwindigkeit) Speichersparende Algorithmen sind gefragt Algorithmen, die vor 10-20 Jahren für den PC entwickelt wurden, können hier interessant werden (zu dieser Zeit hatten PCs etwa den Speicherumfang heutiger Mikrocontroller) Überlegungen: wie viel Programm- und Datenspeicher benötigt die Anwendung? Reicht die Größe des internen Daten- und Programmspeichers? Ist ein externer Busanschluss vorhanden? max. externe Speichergröße? 9 ADRESSFESTLEGUNG BEIM BINDEN (LINKEN): Memory Map: Fujitsu Mikrocontroller bei PCs: dynamische Adressfestlegung zur Laufzeit - nur so können mehrere Programme gleichzeitig bearbeitet werden bei Mikrocontrollern: statische Festlegung der Adressen beim Binden (Locator) Die Adressen müssen an das Speicherabbild (Memory Map) des Mikrocontrollers angepasst werden Programm -> Festwertspeicher Daten -> Schreiblesespeicher erste Programm-Instruktion, Interrupttabellen,..., müssen an die richtige Stelle gelegt werden 10 5

COMPILER Ein Mikrocontroller-Anwenderprogramm generieren: Quellcode & Programm- Bibliotheken FLASH-Programmer-TOOL:.hex z.b. JTAG RS232 Maschinensprache µc-anwendung 11 LADEN, SIMULIEREN UND TESTEN: Simulator auf dem Entwicklungssystem grober Test, da Zeitverhalten anders und Zielperipherie nicht vorhanden Test auf dem Zielsystem mittels Download und Monitor näher am Zielsystem (Zeitverhalten, Peripherie) immer noch komfortables Testen Monitor verändert Systemverhalten (Initialisierungen, Speichertypen,...) Test auf dem Zielsystem ohne Monitor endgültige Zielumgebung Programm im Festwertspeicher (ext. Programmieren oder Flash-Code-Loader) Ladezeiten lang Test schwierig Entwicklungsumgebung µvision3 IDE & Debugger IDE Integrated Development Environment 12 6

DEMONSTRATION EINER µc- ENTWICKLUNGSUMGEBUNG 13 DEMONSTRATION EINER µc- ENTWICKLUNGSUMGEBUNG 14 7

Empfohlene Literatur Softwareentwicklung in C für Mikroprozessoren und Mikrocontroller Softwareentwicklung, Programmiersprache C, Embedded Systems, Mikroprozessor/-controller Jörg Wiegelmann, 2. Auflage Hüthnig ISBN 3-77853 7785-2824-6 C für Mikrocontroller ANSI-C, C-Compiler/Linker, C Compiler/Linker, Echtzeitbetriebssysteme, C-Programmierbeispiele, C Tools für die Programmierung, Tipps und Tricks Burkhard Mann, 2. Auflage Franzis ISBN 3-77233 7723-4156-X C166 Compiler - µvision 3 Manual LV Homepage http://www.keil.com 15 µc-programm Gliederung : Compiler Steueranweisungen Datendefinitionen Funktionen (Functions) Interrupt Functions Main - Programm 16 8

Compiler - Steueranweisung Der Aufruf von Compiler-Steueranweisungen ist natürlich nicht ausschließlich auf den Programmbeginn beschränkt. Normalerweise befinden sich am Programmanfang aber eine Reihe von diesen Befehlen. Sie werden auch durch die Programmieroberfläche eingefügt. Der Präprozessor ist ein wichtiges Werkzeug zur Vorverarbeitung von C-Texten vor ihrer Übersetzung durch den Compiler. Er erledigt folgende Aufgaben: Ersetzen von Makros Einfügen von Dateien bedingtes Übersetzen Der Präprozessor wird durch folgende Anweisungen gesteuert, die alle mit dem #Zeichen beginnen: #define, #undef, #if, #endif, #ifdef, #ifndef, #else, #include, #pragma, #line, #error, 17 Compiler - Steueranweisung #define Mit define-anweisungen können häufig verwendete Konstanten durch Namen ersetzt werden. Beispiel: #define DIGIT 0x34 #undef Mit der undef-anweisung kann ein Makro wieder gelöscht werden #ifdef #ifndef Hiermit kann abgetestet werden, ob ein Makro überhaupt definiert ist. #ifdef ist wahr, wenn ein Makro vorhanden ist, #ifndef ist wahr, wenn ein Makro nicht vorhanden ist. #include Diese Anweisung ist besonders wichtig. Mit ihr können ganze Dateien in einen C-Text eingefügt werden. #pragma Mit #pragma werden compilerspezifische Ausnahmen definiert #error Diese Anweisung löst einen schweren Compilerfehler aus und gibt den nachgestellten Text an ; Bei allen Präprozessoranweisungen gilt es zu beachten, dass sie nicht mit Semikolon ; abgeschlossen werden dürfen! 18 9

Datendefinitionen In diesem Abschnitt des Programms werden Variable definiert und dafür Speicherstellen reserviert. Unterteilung nach: 1. Verfügbarkeit 2. Speicherort 3. Type Nicht vergessen Variablen zu initialisieren! a.) Unterteilung nach der Verfügbarkeit: Globale Variablen (extern) Diese müssen außerhalb aller Funktionen definiert werden und gelten ab diesem Zeitpunkt im ganzen Programm. Falls sie zusätzlich static definiert werden, gelten sie nur in diesem Modul. Lokale Variablen (static, automatic) Diese werden in der jeweiligen Funktion definiert und stehen nur innerhalb der jeweiligen Funktion zur Verfügung. Der Linker überlagert, nachdem er überprüft hat, ob sich zwei Funktionen gegenseitig nicht aufrufen, diese Variablen, um Platz speziell im kleinen internen RAM des Controllers zu sparen. Mit der zusätzlichen Deklaration "static" kann dies verhindert werden, sodass die jeweilige Variable ihren Wert behält. Wichtig für Interrupts, hier kann keine Überprüfung zur Linkzeit erfolgen!!! 19 Datendefinitionen b) Unterteilung nach dem Speicherort: Der Compiler unterstützt mehrere Speichermodelle, die den Speicherort automatisch bestimmen. Man kann aber auch den Speicherort definieren, um eine für die Applikation optimale Speicherverteilung zu erreichen. near idata bdata sdata far huge xhuge 16 bit pointer; 16 bit Adressenberechnung 16 KB für Variable in der NDATA Gruppe, 16 KB für constants in der NCONST Gruppe, 16 KB für die system area in der SDATA Gruppe. On-chip RAM ; schnellster Zugriff. bit-adressierbares On-chip RAM. SYSTEM area ( Adressenbereich 0C000h-0FFFFh); PEC adressierbar. 32 bit pointer; gesamter Adressenbereich Das einzelne Objekt (array oder structure) ist auf 16 KB limitiert. 32 bit pointer; gesamter Adressenbereich Das einzelne Objekt (array oder structure) ist auf 64 KB limitiert. 32 bit pointer; 32 bit Adressen für Objekte, die innerhalb des Speichers unlimitiert sind. 20 10

Datendefinitionen b) Unterteilung nach Typen: (Teil 1) 21 Datendefinitionen b) Unterteilung nach Typen: (Teil 2) void leer Pointer 2/4 Bytes Adresse von Objekten Arrays bei allen Datentypen außer bit möglich Dimension (n) in eckiger Klammer [n] Strukturen mehrere Variablen werden zusammengefasst im Gegensatz zu Arrays können diese verschiedene Datentypen beinhalten Unions Es können verschiedene Datentypen in einer union Platz finden. Sie werden dann ab der gleichen Speicheradresse abgelegt. Der größte Datentyp bestimmt die Größe der union. 22 11