WiSe2122
Stephan Schulze
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 1 / 55
Gliederung
1 Allgemeines
2 Einführung MCT
3 SW-Entwicklung
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 2 / 55
Abschnitt 1
Allgemeines
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 3 / 55
Allgemeines
Personelles
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 4 / 55
Allgemeines
Vorstellung
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 5 / 55
Allgemeines
Motivation
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 6 / 55
Allgemeines
Prüfungsmodalitäten
Prüfungsmodalitäten:
Klausur (90 Minuten)
ggf. Hausarbeit
Rechtzeitige Anmeldung
Hinweise:
Nucleo@home™
50% des Erfolgs: Studieren der Dokumentationen
Beachten Sie Compiler-Fehler und -Warnings
Sie sollen Sachen verstehen, nicht auswendig lernen!
Special: Versuchen Sie sich an Clean Code zu halten
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 7 / 55
Allgemeines
Übersicht der Arbeitsmittel
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 8 / 55
Abschnitt 2
Einführung MCT
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 9 / 55
Einführung MCT
Beispiele für Embedded Systems
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 10 / 55
Unterabschnitt 1
Grundlagen Mikrocomputer
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 11 / 55
Einführung MCT
Grundlagen Mikrocomputer
Antwort:
Ein Embedded System ist als Allgemeinheit zu verstehen, welches alle
Computersysteme auf kleinem Raum zusammenfasst.
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 12 / 55
Einführung MCT
Grundlagen Microcomputer
Ein Mikroprozessor ist ein ”stark verkleinerter Prozessor auf einem einzigen
Chip” [8, Seite 2]
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 13 / 55
Einführung MCT
Grundlagen Mikrocomputer
Weitere Begrifflichkeiten:
Verwandtes:
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 14 / 55
Einführung MCT
Grundlagen Mikrocomputer
HW SW
Kenntnisse aller Systeme notwenig SW auf Registerebene
Leistungs-EL = EL · 1000 Muss HW gut kennen
Beachtung höherer Frequenzen Ressourcen (Bsp. RAM)
SMD-Technik SW Deployment
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 15 / 55
Unterabschnitt 2
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 16 / 55
Einführung MCT
Typische Kennzahlen von MC’s
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 17 / 55
Unterabschnitt 3
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 18 / 55
Einführung MCT
Funktionale Bestandteile - GPIO
Frage: Ist es möglich den Port zu belasten? Kann man beispielsweise einen
einfachen Gleichstrommotor an einen GPIO anschließen?
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 19 / 55
Unterabschnitt 4
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 20 / 55
Einführung MCT
Funktionale Bestandteile - Timer
Hardware Timer
Zähleinheit (Up- and Down-Counting)
Nutzung für zeitlich gesteuertes Verhalten (bspw. PWM)
Output/Input
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 21 / 55
Unterabschnitt 5
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 22 / 55
Einführung MCT
Funktionale Bestandteile - ADC
Frage 1: Kann ich auch ein digitales Signal an den ADC anlegen?
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 23 / 55
Unterabschnitt 6
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 24 / 55
Einführung MCT
Funktionale Bestandteile - Interrupts
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 25 / 55
Unterabschnitt 7
Architekturen
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 26 / 55
Einführung MCT
Architekturen
Von-Neumann
Harvard
Unterschied RAM / (EEP)ROM / Flash
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 27 / 55
Abschnitt 3
SW-Entwicklung
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 28 / 55
SW-Entwicklung
SW im Embedded Bereich
Programmiersprachen
Assembler
C/C++
Java
C#
..
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 29 / 55
Unterabschnitt 1
Assembler
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 30 / 55
SW-Entwicklung
Assembler - Einführung
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 31 / 55
SW-Entwicklung
Assembler - Allgemeines
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 32 / 55
SW-Entwicklung
Assembler - Befehle
LDR / STR
MOV
PUSH / POP
ADD / SUB / SBC
AND / ORR / ORN
CMP
MUL / MLA
B / BX / CBZ
ASR / LSL / ROR
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 33 / 55
SW-Entwicklung
Assembler - Syntax
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 34 / 55
SW-Entwicklung
Assembler - Weitere Features
Elemente:
PC (IP)
(LR)
SP
Weitere Befehle/Direktiven:
.equ/.req Wertersetzung (siehe #define in C/C++)
Beispiel: .equ GPIOA, <Wert>
.weak Schwache Bindung (siehe extern)
Beispiel: .weak TIM2 IRQHandler
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 35 / 55
Unterabschnitt 2
C-Programmierung
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 36 / 55
SW-Entwicklung
C-Programmierung - Recap 1/2
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 37 / 55
SW-Entwicklung
C-Programmierung - Recap 2/2
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 38 / 55
SW-Entwicklung
C-Programmierung - Programmbeispiel 1/3
Abbildung 7: C-Beispiel 1
→ Nein
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 39 / 55
SW-Entwicklung
C-Programmierung - Programmbeispiel 1/3
Lösung
Abbildung 8: C-Beispiel 2
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 40 / 55
SW-Entwicklung
C-Programmierung - Programmbeispiel 2/3
Abbildung 9: C-Beispiel 3
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 41 / 55
SW-Entwicklung
C-Programmierung - Programmbeispiel 3/3
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 42 / 55
SW-Entwicklung
C-Programmierung - Buildprozess
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 43 / 55
Abschnitt 4
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 44 / 55
Unterabschnitt 1
Grundlagen
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 45 / 55
Toolchains für Embedded-Entwicklung
Grundlagen
Entwicklungsumgebung
Compiler/Linker
Flasher
Debugger
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 46 / 55
Unterabschnitt 2
IDE
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 47 / 55
Toolchains für Embedded-Entwicklung
IDE
Beides baut auf eclipse und dem GCC auf (typisch für Freeware IDE’s)
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 48 / 55
Unterabschnitt 3
Compiler/Flasher/Debugger
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 49 / 55
Toolchains für Embedded-Entwicklung
Compiler/Flasher/Debugger
Compiler/Flasher/Debugger
Compiler Übersetzt den Code in Maschinensprache (typischerweise
.bin oder .elf )
Flasher HW-Element; Spielt das Binary auf das Target
(→ Deployment). Schnittstellen wären bspw.:
JTAG
USB
Ethernet
Debugger Wird oftmals auch zum Flashen genutzt und ist in der Lage
bidirektional mit dem Target zu reden. Bei einem
On-Chip-Debugger lässt sich der Code auch direkt auf dem
Target ausführen (→ Breakpoints, Registerwerte etc.).
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 50 / 55
Toolchains für Embedded-Entwicklung
Compiler/Flasher/Debugger
Es wird ein Interface zum Flashen benötigt. Unser µC (bzw. das Board)
besitzt dieses Interface von Hause aus (→ ST-LINK/V2-1) [9, Seite 6] und
kann direkt mit dem GDB kommunizieren.
→ GCC ist eine Ansammlung an Tools (GNU Compiler Collection) für die
C-Programmierung.
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 51 / 55
Abschnitt 5
Anhang
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 52 / 55
Quellen I
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 53 / 55
Quellen II
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 54 / 55
Quellen III
Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 55 / 55