Sie sind auf Seite 1von 55

Einführung - MCT-2

WiSe2122

Stephan Schulze

05. Oktober 2021

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

4 Toolchains für Embedded-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

Laborleiter: Herr Prof. Dr. Purat


marcus.purat@beuth-hochschule.de

Labormitarbeiter: Herr Ritter


ritter@beuth-hochschule.de

Labormitarbeiter: Herr Voigtländer


voigtl@beuth-hochschule.de

Lehrbeauftragter (Ü): Herr Möckel

Lehrbeauftragter (VL): Herr Schulze


stephan.schulze@beuth-hochschule.de

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 4 / 55
Allgemeines
Vorstellung

Name: Stephan Schulze


Studium: Kommunikationstechnik und Elektronik (M.Eng., 2014)
BHT: Tutor für Elektrotechnik (2009)
Fraunhofer FOKUS: Werkstudent (2010-2014)
W.O.M. World of Medicine GmbH (2014-2018)
IAV GmbH (seit 2018)

Hobbies: Basteln, Security

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 5 / 55
Allgemeines
Motivation

Embedded-Bereich wächst stark an


Hohe Nachfrage an Embedded SW-Entwicklern
Sehr komplexe und vielfältige Thematik (→ auch ”V-Prinzip”)

→ Einstieg/Sensibilisierung für den Embedded-Bereich

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

Development Board: NUCLEO-F303RE


Mikrocontroller: STM32F303RE
Architektur: ARM-Cortex M4
Zubehör:
Steckbrett
Elektronik (Widerstände, Sensoren, etc.)
Kabel / Steckverbinder
Multimeter / Oszilloskop

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

Abbildung 1: Beispiel 1 [1] Abbildung 2: Beispiel 2 [2] Abbildung 3: Beispiel 3 [3]

Abbildung 4: Beispiel 4 [4] Abbildung 5: Beispiel 5 [5] Abbildung 6: Beispiel 6 [6]

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

Was ist ein Embedded System?

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

Was ist der Unterschied zwischen einem Mikrocomputer, Mikrocontroller


und einem Mikroprozessor?

Ein Mikroprozessor ist ein ”stark verkleinerter Prozessor auf einem einzigen
Chip” [8, Seite 2]

Ein Mikrocontroller ist ein Mikroprozessor, eingebettet in einem System


mit I/O-Mechanismen, Speicher und Peripherie (Ziel: Funktionelle
Integration ohne Zusatzbausteine) [8, Seite 258]

Ein Mikrocomputer ist ein Mikroprozessor, eingebettet in einem System


mit I/O-Mechanismen, Speicher, Peripherie und
Ein-/Ausgabemechanismen [8, Seite 4]

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 13 / 55
Einführung MCT
Grundlagen Mikrocomputer

Weitere Begrifflichkeiten:

SoC System on Chip


SiP System in Package
...

Verwandtes:

FPGA Field-Programmable Gate Array


DSP Digital Signal Processor
...

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 14 / 55
Einführung MCT
Grundlagen Mikrocomputer

Prinzipiell gilt mittlerweile: Embedded ist nicht gleich Embedded (→


Abstraktionslayer). Was bedeutet das jedoch im Allgemeinen für den
HW/SW-Entwickler?

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

In der Praxis arbeitet HW und SW eng zusammen. HW-Entwickler


brauchen ein Grundverständnis für SW und umgekehrt!

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 15 / 55
Unterabschnitt 2

Typische Kennzahlen von MC’s

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 16 / 55
Einführung MCT
Typische Kennzahlen von MC’s

CPU Clock (Systemtakt)


Busbreite
Speichergröße: Flash + RAM (Stack/Heap)
Peripherie (Bus-Systeme, ADC, Timer etc.)
FPU
Stromverbrauch

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 17 / 55
Unterabschnitt 3

Funktionale Bestandteile - GPIO

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 18 / 55
Einführung MCT
Funktionale Bestandteile - GPIO

GPIO - General Purpose Input/Output


4 Zustände:
High (Output)
Low (Output)
Tri-State
Input
Referenzspannung: 3V / 3.3V / 5V (bzw. GND)
Jede Portbank (z.B. GPIOA) besitzt n konkrete Ports (GPIOA 1,
GPIOA 2, ...)

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

Funktionale Bestandteile - Timer

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

Frage: Vorteil gegenüber eines SW-Timers?

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 21 / 55
Unterabschnitt 5

Funktionale Bestandteile - ADC

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 22 / 55
Einführung MCT
Funktionale Bestandteile - ADC

Digitalisieren von analogen Spannungen


Gültigkeitsbereich: GND - Vref
Sampling bspw. über sample-and-hold
Samplingauflösung begrenzt die Samplinggeschwindigkeit

Frage 1: Kann ich auch ein digitales Signal an den ADC anlegen?

Frage 2: Wie sieht das digitalisierte Signal aus?

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 23 / 55
Unterabschnitt 6

Funktionale Bestandteile - Interrupts

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 24 / 55
Einführung MCT
Funktionale Bestandteile - Interrupts

HW-gesteuerte Unterbrechung des Programmablaufs


Routinen zur Behandlung des Ereignisses
Routinen sollten müssen so kurz wie möglich gehalten werden
Priorisierung von Interrupts → Nested Interrupts

Frage: Was wäre ein Anwendungsfall von einem Interrupt?

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

Frage: Was sind Vor- bzw. Nachteile der Architekturen?

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#
..

Hier wird mit C gearbeitet.

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

Generell wird der C-Code in Assembler übersetzt, bevor er in


Maschinencode nochmals umgeschrieben wird.

→ Um zu verstehen, was eigentlich passiert, wird im folgenden Abschnitt


auf Assembler selbst etwas eingegangen.

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 31 / 55
SW-Entwicklung
Assembler - Allgemeines

Assembler 6= Assembler → Abhängig vom Target/Zielplattform


Assembler ist sehr hardwarenah
Höchstmaß an Optimierung möglich (theoretisch)
Anfangs sehr kryptisch → Einarbeitung langwierig

→ Ihr müsst keine Experten werden, aber das Wesentliche verstehen.

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 32 / 55
SW-Entwicklung
Assembler - Befehle

Typische Befehle (Auszug) [10]:

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

<Befehl> <Param1>, <Param2>


Nutzung von Konstanten: <#Wert>
Beispiel: MOV r0, #0x42
Nutzung von Registern (2ter Operand): [Registername, #offset]
Beispiel: STR/LDR r0, [r1, #8]
Setzen von Labels: <Labelname:>
Beispiel: Label: B Label → while(true);

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

Welche primitiven und konstruierten Datentypen gibt es?


Was ist der Standard-Entry-Point in C?
Wie inkludiert man externe Dateien (bspw. Libraries)
Was sind Makros und welche Arten gibt es?
Was ist die Signatur einer Funktion?
Was ist das Problem bei Funktionsaufrufen (Stichwort: Ressourcen)
Was sind Pointer? Welchen Vorteil bieten sie? Const?

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 37 / 55
SW-Entwicklung
C-Programmierung - Recap 2/2

Was ist der Unterschied zwischen Call-by-Reference und


Call-by-Value?
Wie casted man in C?
Wie bindet man Assembler-Code in C ein?
Welche Bit-Operationen gibt es?
Wofür sind die Qualifier const und volatile gedacht?
Was sind Merkmale von Clean Code?
Warum ist ein Debug -Binary größer, als ein Release-Binary?

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 38 / 55
SW-Entwicklung
C-Programmierung - Programmbeispiel 1/3

Lässt sich folgendes Programm kompilieren?

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

Was ist hier das Problem?

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

Wofür dient dieses Konstrukt?

Abbildung 10: C-Beispiel 4

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 42 / 55
SW-Entwicklung
C-Programmierung - Buildprozess

Was genau passiert, wenn man auf ”Build” klickt?

Abbildung 11: GCC Compiler [7]

Was ist ein Crosscompiler?

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 43 / 55
Abschnitt 4

Toolchains für Embedded-Entwicklung

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

Was ist eine Toolchain?

Entwicklungsumgebung
Compiler/Linker
Flasher
Debugger

→ Die Gesamte Toolkette, die zum Programmieren, Flashen und


Debuggen benötigt wird. Zusätzliche Extras sind bspw.:

Codeanalyse-Tools (z.B. MISRA)


Buildserver / CIT (z.B. Jenkins)
Versionskontrolle (z.B. Git)

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

Die IDE - Integrated Development Environment - besteht aus:

Die nackte Entwicklungsumgebung (→ Erstellung von Code)


Die restlichen Tools (bspw. Compiler/Debugger) sind angebunden
bzw. vorkonfiguriert
Erweiterte Nutzungsmöglichkeiten (bspw. zum On-Chip-Debugging )
Code-Unterstützungsmechanismen (bspw. Autovervollständigung)

Folgende Tools stehen beispielsweise zur Auswahl:

System Workbench for STM32 (AC6)


Atollic TrueStudio for STM32

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

Kann man jeden µC mit einem USB-Port immer direkt flashen?

→ Nein, aber in unserem Fall schon.

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

(1) Wikipedia [06.10.2019]


Computer On Module
https://commons.wikimedia.org/wiki/File:DHCOM Computer
On Module - AM35x.jpg
(2) Rasppishop [06.10.2019]
Raspberry Pi (4)
https://www.rasppishop.de/media/image/product/433028/md/
raspberry-pi-4-modell-b-4gb-sdram.jpg
(3) AVM [06.10.2019]
Fritzbox
https://avm.de/fileadmin/user upload/Global/Produkte/FRITZBox/
7560/fritzbox 7560 left de 640x400 stiftung warentest.png

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 53 / 55
Quellen II

(4) Forbes [06.10.2019]


Smartphone
https://thumbor.forbes.com/thumbor/960x0/https%3A%2F%2Fblogs-
images.forbes.com%2Fgordonkelly%2Ffiles%2F2018%2F05%2F2.jpg
(5) Miele [06.10.2019]
Miele Waschmaschine
https://www1.miele.com/pmedia/34/Z17/20000147591-000-
00 20000147591.jpg
(6) Heise [06.10.2019]
Combox (BMW)
https://www.heise.de/ct/zcontent/15/05-
hocmsmeta/1424306007946193/tn combox mf SO.jpg

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 54 / 55
Quellen III

(7) University of Virginia [07.10.2019]


GCC Compiler-Flowchart
http://galileo.phys.virginia.edu/compfac/courses/geek-
hours/compiler-cycle.png
(8) Klaus Wüst
Mikroprozessortechnik, 4. Auflage
(9) ST
User Manual (UM1724)
STM32 Nucleo-64 boards (MB1136)
(10) ST
Programming Manual (PM0214)
STM32 Cortex-M4 Programming Manual

Stephan Schulze (BHT Berlin / IAV GmbH) Einführung - MCT-2 05. Oktober 2021 55 / 55

Das könnte Ihnen auch gefallen