Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
1 Einleitung
13
1.1 Embedded Systems
13
1.2 Was bietet das Buch
14
1.3 Die Software zum Buch
15
1.4 Verwendete Entwicklungstools
18
2 Hardware
19
2.1 Single-Chip
19
2.1.1 Entwicklung
19
2.1.2 Anwendungen
21
2.2 Mikrocontroller
21
2.2.1 ARM-based
22
2.2.2 STM32-Familie
23
2.2.3 STM32F412RET6
24
2.3 Breakout-Board
25
2.3.1 Pinout
26
2.3.2 Debugging
28
2.3.3 Connectivity
29
2.3.4 Erweiterungen
30
2.4 Schaltungsentwurf
30
2.4.1 Versorgung
31
2.4.2 Reset-Schaltung
33
2.4.3 Takterzeugung
34
2.4.4 Digitale I/O-Pins
35
2.4.5 Externe Interrupts
37
2.4.6 Analoge Eingabe
37
2.4.7 Analoge Ausgabe
40
2.4.8 SPI als Systembus
43
2.4.9 EEPROM-Speicher
44
2.4.10 UART-Schnittstellen
46
2.4.11 RS485-Kommunikation
48
2.4.12 ISP-/Debug-Schnittstelle
51
2.5 Leiterplattenlayout
54
2.5.1 Technologische Grundlagen
55
2.5.2 Aufteilung einer Leiterplatte
57
2.5.3 Routing eines SMD-Designs
60
2.5.4 Spannungs- und Masseflächen
62
2.5.5 Elektromagnetische Verträglichkeit
63
2.5.6 Erstellung der Fertigungsdaten
66
3 Bootloader
69
3.1 System-Startup
70
3.1.1 Start des Bootloaders
71
3.1.2 Mögliche Erweiterungen
75
3.2 Betriebssystem-Updates
76
3.2.1 FLASH-Speicher
76
3.2.2 Intel-Hex-Format
79
3.2.3 Download-Schnittstelle
81
3.2.4 Download-Protokoll
83
3.2.5 Prüfsumme
85
4 Betriebssystem
93
4.1 Initialisierung
94
4.1.1 PLL-Clock
95
4.1.2 GPIO-Setup
97
4.1.3 AD-Wandler
99
4.1.4 DA-Wandler
101
4.1.5 SPI-Systembus
104
4.1.6 NVI-Controller
107
4.1.7 UART-Interfaces
110
4.2 Abstraktionen
114
4.2.1 Port-Zugriffe
114
4.2.2 Analogwertmessung
120
4.2.3 Filtering
125
4.2.4 Analogwertausgabe
127
4.2.5 Zugriff auf Systembus
130
4.2.6 Remanente Speicherung
132
4.2.7 Serielle Datenübertragung
137
4.3 Multithreading
143
4.3.1 Cooperative vs. Preemptive
143
4.3.2 Betriebssystem-Threads
145
4.3.3 Time Slice Scheduling
146
4.4 Grafik-Display
151
4.4.1 Bildspeicher
151
4.4.2 Display-Treiber
152
4.4.3 Grafikfunktionen
157
4.4.4 Text und Zeichensätze
159
4.5 Modbus-Protokoll
160
4.5.1 Befehlsstruktur
161
4.5.2 Zugriffsverfahren
162
4.5.3 Protokollrahmen
163
4.5.4 Frames senden
165
4.5.5 Protokoll-Handler
168
4.5.6 Modbus-Thread
171
5 Embedded BASIC
177
5.1 Ansatz
177
5.1.1 Skriptsprache
178
5.1.2 Möglichkeiten
180
5.2 Sprache
183
5.2.1 Programmiermodell
183
5.2.2 Programmstruktur
185
5.2.3 Kontrollstrukturen
187
5.2.4 Literale und Symbole
193
5.2.5 Variablen und Typen
196
5.2.6 Ausdrücke und Priorität
199
5.2.7 Funktionen und Lokalität
201
5.2.8 Klassen und Instanzen
203
5.2.9 Präemptive Tasks
207
5.3 Anwendungen
210
5.3.1 Entwicklungstool
211
5.3.2 Drehzahlregelung
212
5.3.3 Roboterplattformen
219
5.3.4 NUCLEOs als Hardware
225
6 Interpreter
227
6.1 Laufzeitsystem
228
6.1.1 Token-Interpreter
229
6.1.2 Syntax-Tree-Interpreter
229
6.1.3 Abstrakter Bytecode-Interpreter
229
6.1.4 Token-Code
230
6.1.5 Codeformat
234
6.1.6 Speicherlayout
236
6.1.7 Lokale Variablen
239
6.1.8 Parameterübergabe
243
6.1.9 Prototypen für Klassen
247
6.1.10 Instanziieren von Objekten
255
6.1.11 Auflösen von Variablenbezügen
260
6.1.12 Arithmetische Ausdrücke
265
6.1.13 Bitweise und logische Ausdrücke
271
6.1.14 Anweisungen und Sprünge
276
6.1.15 Ausführen von Schleifen
284
6.1.16 Interpreter-Schleife
289
6.2 Multitasking
292
6.2.1 Skript-Tasks
292
6.2.2 Präemptiver Scheduler
294
6.2.3 Task-Wechsel und Ausführung
298
6.3 Hardwarezugriff
302
6.3.1 Property-Variablen
303
6.3.2 Geräte und Verbindungen
307
6.3.3 Protokolle und Messages
310
6.4 Emulation am PC
313
6.4.1 Interpreter als C-DLL
316
6.4.2 Unit-Tests für den Interpreter
322
7 Übersetzer
327
7.1 Lexikalische Analyse
327
7.1.1 Endliche Automaten
328
7.1.2 Entwicklung des Scanners
330
7.1.3 Zeilen- und Blockkommentare
333
7.1.4 Semikolon und Line Continuation
334
7.1.5 Implementierung eines Präprozessors
336
7.2 Syntaktische Prüfung
341
7.2.1 Grammatiken
342
7.2.2 Backus-Nauer-Form
345
7.2.3 Top-down-LL(1)-Parser
347
7.2.4 Links-Faktorisierung bei LL(2)
351
7.2.5 Backtracking- und LL(k)-Parser
354
7.2.6 Einfache Abstraktion der Syntax
357
7.3 Semantische Analyse
359
7.3.1 Symbole und Scopes
360
7.3.2 Datentypen als Kontext
366
7.3.3 Multi-Pass-Übersetzung
370
7.4 Code-Generator
372
7.4.1 Direkte Codeausgabe
373
7.4.2 Verzögerte Codeausgabe
375
8 Zusammenfassung
377
8.1 Themengebiete
378
8.2 Ausblick
379
Anhang
383
A Schaltplan
385
B Leiterplatte
387
C Grundlagen von Embedded BASIC
389
C.1 Grammatik
389
C.1.1 // Script…
389
C.1.2 // Declarations…
389
C.1.3 // Expressions…
390
C.1.4 // Literals…
390
C.1.5 // Statements…
390
C.1.6 // Repetitions…
391
C.1.7 // Selections…
391
C.1.8 // Branches…
392
C.2 Token-Liste
392
D Literaturverzeichnis
399
Index
401