Rechnerstrukturen und Maschinennahe Programmierung
Prof. Dr.-Ing Jochen Rust
DSI Aerospace Technologie GmbH
basierend auf Folien von Prof. Dr.-Ing. Tim Tiedemann und Prof Dr.-Ing. Andreas Meisel
Agenda
• Vorstellung
• Organisatorisches
• Motivation, Grundlagen des „maschinennahen Programmierens“
• Daten
• Grundlagen Rechnerarchitekturen
• Vorbereitung Praktikum
2
0. Vorstellung
3
Vorstellung
Jochen Rust
Prof. Dr.-Ing.
Werdegang
2023 – heute HAW Hamburg Professor Technische Informatik
2023 – heute DSI Aerospace GmbH Deputy Head of Pre-Development
2020 – 2023 DSI Aerospace Technologie GmbH Head of Studies
2014 – 2020 ITEM, Universität Bremen Senior Research Group Leader
2008 – 2014 ITEM, Universität Bremen Research Associate
2006 – 2007 IBM Deutschland Entwicklung GmbH Masterarbeit, Internship
2001 – 2008 Universität Hannover Studium Technische Informatik
22.10.2023 4
Erfahrungen und Interessen
Industrial Radio/SDR
Space Robotics
System-on-Chip Design
© Universität Bremen
© Trenz Electronics
…und Sie?
• Erfahrungen mit „hardwarenahen“ Programmiersprachen?
C/C++
Assembler
• Duales Studium?
• Vorerfahrungen im Bereich Rechnerstrukturen?
• Haben Sie konkrete Erwartungen an die Vorlesung?
Rechnerstrukturen und Maschinennahe Programmierung
1. Organisatorisches und Einführung
7
Organisation Vorlesung
Allgemeines
• Vortragsfolien Präsenz/TEAMs, PDF in TEAMs (vor der VL)
• Vertiefungen Tafel, während der VL
• Übungen Tafel, während der VL
• Programmierbeispiele Tafel, in den VL-Folien (nach der VL)
Besondere Daten (Stand jetzt)
• Weihnachtsferien keine Veranstaltungen
Unterlagen sowie aktuelle Informationen finden sich im TEAMs-Raum
„WiSe23_AI2_RMPP“
Einschreibeschlüssel: fbiqgcs
Tutorium
• Nach Absprache im Kanal Tutorium
8
Übersicht RMP WS23
Rechner-
RMPP Gruppe 1 strukturen
RMPP Gruppe 2
RMPP Gruppe 4* …
/ RMPP Gruppe 3
…
Assembler
C-
Program-
mierung
…
*Veranstaltung um 8:15h 9
Organisation Praktikum
Allgemeines
• Teilnahmeanforderung: Anwesenheitspflicht/Prüfungsleistung
• Anmeldung: moodle bis 23.10 (sollte bestenfalls bereits erfolgt sein)
• Modus: 4 Gruppen à 10-16 Teilnehmende, je 2 Personen arbeiten zusammen
• Ort/Zeit: Raum 709 donnerstags: 12:30 Uhr ab dem 26. November
(Gruppe 4 8:15 Uhr)
Inhalt
• Allgemein: 4 Versuche zum Thema maschinennahe Programmierung, u.a. Assembler, IO-Programmierung,
etc.
• Vorbereitung: Versuch thematisch Vorbereiten, anhand der Vorbereitungsaufgaben in den Aufgabenblättern
• Vortestat: ~15 minütiger Test zu Beginn des Praktikums (rechtzeitiges Erscheinen zwingend erforderlich)
PVL
• Anwesenheitspflicht
• 50% der Punkte aller Tests müssen insgesamt erreicht werden
• Versuche müssen erfolgreich abgeschlossen/angenommen werden
10
Zielhardware: Das „TI-Board“
11
Was heißt „maschinennahes Programmieren“?
Hochsprachenebene
• Rechner wird als abstrakte Maschine aufgefasst
• Die konkrete Arbeitsweise ist uninteressant
Java, C/C++, Python, etc.
Maschinennahe Ebene (Registerniveau)
• Verstehen des Rechners auf Registerniveau
• Typisch: Technische Informatiker, Applikationsingenieure Application Level
Assembler, C (bare-metal)
High-Level SW Level
Gatter und Schaltwerkniveau
RMP
• Verstehen der Prozessorkomponenten Machine Code Level
• Typisch: Hardwareentwickler
HW-Architecture Level
Hardware-Beschreibungssprachen, z.B. VHDL, Schaltpläne (Schematics)
Transistorniveau Transistor Level
• Verstehen der integrierten Schaltkreise
Electrical Level
• Typisch: theoretische Elektrotechniker, Physiker
Layout- und Transistortools: SPICE, Cadence
12
Motivation: Anwendungsgebiete maschinennaher Programmierung
Hardware-Einbindung / Gerätetreiber
• Digitale/Analoge Schnittstellen (Messsignalaufnehmer, Audiointerface)
• Kommunikationsschnittstellen (USB, COM, Netzwerkkarten,...)
• Mediainterfaces (Soundkarten, Joystick, MIDI, Video, ...)Java, C/C++, Python, etc.
13
Embedded Controller
• Prozessor u. IO-Schnittstelle auf einem Chip für wenige Euro
• Haushaltsgeräte: Schaltuhren, Fernbedienungen, Waschmaschinen, ...
• Spielzeuge: Playstations, LEGO-Mindstorm, ....
• Autos, Digitalkameras, Smartphones, Reader, Navigationssysteme, .....
• Maschinensteuerungen
• Mit Netzzugang: „IoT Device“ („Internet of Things“)
© Microchip (MEC1428MECC)
14
Sicherheitsrelevante Programme
• Medizintechnik (z.B. Herzschrittmacher, Herz-Lungen-Maschine)
• Kraftwerkstechnik, Luft- und Raumfahrttechnik (AOCS)
• Bremsregelung, ABS
15
Geschwindigkeitskritische Anwendungen
• Audio- und Videoanwendungen, Musikanwendungen
• Echtzeitsysteme und Regelungen
16
Entwicklung eingebetteter Systeme in Fahrzeugen
17
FRAGE
F.1a Wozu muss ein AI-ler/Java-Programmierer sowas wissen?
Antwort:
• (Zeit-)effiziente Programmierung
• Volle Kontrolle über die zugrunde liegende Hardware
• Programmierung (von Hochsprachen) kann optimal an die Hardware angepasst werden
ABER:
• I.d.R. höherer zeitlicher Entwurfsaufwand
18
Übersicht Vorlesungsinhalte
Grundlegende Grundkonzepte
Rechnerstruktur Assembler- der maschinen- Programmier- Moderne
und programmierung nahen Program- sprache C Rechnerstrukturen
Funktionsweise / mierung
PCs
19
Inhalt und Aufbau der Vorlesung
1. Grundlegende Rechnerstruktur und Funktionsweise von Computern
Inhalte
• Grundlagen digitaler Schaltungen
• einfaches Computermodell
• Speicher, CPU, ALU, Steuereinheit, Busse, IO-Einheiten
• Datencodierung und Befehlscodierung auf Maschinenebene
• Grundbefehlssatz von Computern
• Adressierungsarten für den Datenzugriff
• (neu, gegen Ende: Eigenschaften aktueller PC-Hardware)
© Thomas Nguyen, CC BY-SA 4.0
Vermittelte Fähigkeiten
• Maschinenprogramme und Speicherdumps lesen können
• maschinennahe Operationen lesen und programmieren können
20
2. Assemblerprogrammierung (am Beispiel des Cortex-M4-Prozessors)
Inhalte
• Register
• Basisadressierungsarten
• elementarer Befehlssatz
• Unterprogrammtechniken auf Maschinenebene
• Ein-/Ausgabeoperationen
Vermittelte Fähigkeiten
• Assembler-Programme schreiben und debuggen können
• Assembler-Programme strukturiert aufbauen können
• Unterprogrammtechniken auf Maschinenebene einsetzen können
21
3. Grundkonzepte der maschinennahen Computerprogrammierung
Inhalte
• Notwendige Fähigkeiten maschinennaher Hochsprachen
• Strukturierung, Typen und Abstraktion
• Kennzeichen prozeduraler Programmiersprachen
Vermittelte Fähigkeiten
• Algorithmen strukturiert umsetzen können
• Daten strukturieren können
22
4. Programmiersprache C
Inhalte
• grundlegende Sprachkonstrukte von C
• Zeiger und Zeigerarithmetik
• Parameterübergabe bei C-Funktionen
• Modularisierung von C-Programmen
• Datenstrukturierung in C-Programmen
• Maschinennahe Programmierung mit C
Vermittelte Fähigkeiten
• C-Programme schreiben und debuggen können
• C-Programme strukturieren und modularisieren können
• Zeiger verstehen
• IO-Einheiten programmieren können
23
5. Ausblick: moderne Rechnerstrukturen
Inhalte
• Grundlegende Architekturen aktueller PCs/anwendungsspezifischer Schaltungen
• Busse und Architekturen aktueller PCs/anwendungsspezifischer Schaltungen
• Aktuelle Peripheriekomponenten und Hardwarebeschleuniger modernder Microcontroller
Vermittelte Fähigkeiten
• aktuelle Hardware-Komponenten und ihr Zusammenspiel verstehen
• Leistungsfähigkeit aktueller Hardware-Komponenten einschätzen
• potentielle Fehler und Fehlermeldungen einordnen
24
Literatur und Software
Zum Nachschlagen:
• ARM® and Thumb®-2 Instruction SetQuick Reference Card
http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf
• STM32F3, STM32F4 and STM32L4 Series Cortex®-M4 programming manual
http://www.st.com/content/ccc/resource/technical/document/programming_manual/6c/3a/cb/e7/e
4/ea/44/9b/DM00046982.pdf/files/DM00046982.pdf/jcr:content/translations/en.DM00046982.pdf
• Die Dokumentation zum ITS Board (s. TEAMs)
• Das Handbuch zum Prozessor des TI Boards
http://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/
99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf
• ARM Cortex-M4 Processor: Technical Reference Manual
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0439d/DDI0439D_cortex_m4_processor_r0p
1_trm.pdf
• Software: Entwicklungsumgebung µVision von Keil
http://www2.keil.com/mdk5/uvision/
Footer 25