Embedded Systems II (WS24/25)¶
Tragen Sie sich bitte in den Moodle Kurs #8558 ein. In den „Ankündigungen“ im Kurs finden Sie aktuelle Nachrichten.
Wir starten am Mittwoch den 9. Oktober, 14 Uhr, J3.19.
Zur Info, hier sind die Inhalte vom letzten Jahr: ES2 WS23/24.
Ein paar Begriffe und Bilder: https://hhoegl.informatik.hs-augsburg.de/es2/doc/es2-intro.pdf
Installationsanleitung: es2/doc/Installation.html
Repos für Übungen: https://gitlab.informatik.hs-augsburg.de/es2/ws24
Skript: es2/skript/index.html (Vorsicht, da ist noch viel für den STM32L476 enthalten, den wir früher verwendet haben)
Klausurvorbereitung: Es2Klausurvorbereitung
Terminübersicht¶
#1 09.10.24 J3.19 Einfuehrung
#2 16.10.24 J3.19 Besprechung der Installation; GDB Uebung
#3 23.10.24 J3.19 + Labor Teams 1x
#4 30.10.24 J3.19 + Labor Teams 2x
#5 06.11.24 J3.19 + Labor Teams 1x
#6 13.11.24 J3.19 + Labor Teams 2x
#7 20.11.24 J3.19 + Labor
#8 27.11.24 J3.19 + Labor
#9 04.12.24 J3.19 + Labor
#10 11.12.24 J3.19 + Labor
#11 18.12.24 Abschluss
Stichpunkte zu den Terminen¶
#1 - 09.10.
Hausaufgabe bis nächstes Mal: Installationsanleitung abarbeiten, so dass das Starter Beispiel funktioniert:
https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446/starter
Empfohlener Lesestoff:
Lacamera, Kap. 1 (Embedded Systems - A Pragmatic Approach) und 2 (Work Environment and Workflow Optimization)
Yiu, Kap. 2 (Introduction to Embedded Software Development)
https://learning.oreilly.com/library/view/the-definitive-guide/9780124080829/xhtml/CHP002.html
#2 - 16.10.
Einteilung der Teams
Besprechung der Probleme bei der Installation
GDB Übung: https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446/gdb-uebung
#3 - 23.10.
Was kann man tun wenn SWD (Serial Wire Debug) Schnittstelle nicht mehr erreichbar ist? Lösung: Mit STM CubeProgrammer den Flash Speicher löschen (Option „after reset“ …).
Estool Update 0.32 (2024-10-23):
pip install -U .
im Repo eingebenDokumentation zum STM32F446: es2/stm32f4/
GDB Übung
Alle Repos für Nucleo F446: https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446/
cube-gpio-iotoggle
: Demo wie man Cube Bibliothek mitestool
in das Projekt bekommt.Erstellen der
compile_commands.json
, die der Language Server für C/C++ benötigt. Dazu verwendet man entwederbear
odercompiledb
:bear -- make
(vorherapt install bear
)compiledb make
(vorherpip install compiledb
)
Als Language Server verwendet man am besten
clangd
, eine Alternative istccls
.Vorschlag für kleinere Projekte in der zweiten Semesterhälfte
Nuttx https://nuttx.apache.org
Elektor Bare Metal Guide https://github.com/cpq/bare-metal-programming-guide
Zephyr https://zephyrproject.org
PyOCD, SWO, Semihosting https://pyocd.io
Starkstrom, Code für STM32F4 über CLI Programme verwalten
Embedded Rust https://github.com/rust-embedded, https://docs.rust-embedded.org
Update: Wir machen in diesem Semester keine Projekte, um der „Projekt-Inflation“ entgegen zu wirken. Wir konzentrieren uns auf den „Bare Metal Programming Guide“:
A bare metal programming guide von Sergey Lyubka (Autor von https://mongoose-os.com, https://mongoose.ws, https://vcon.io, Fa. Cesanta in Irland). Das Repository enthält eine Einführung in die Bare-Metal Programmierung von ARM Mikrocontrollern mit Open-Source Werkzeugen. Der Text ist in den Sprachen Englisch, Türkisch und Chinesisch vorhanden. Es gibt viele Beispielprogramme. Diese Software ist in den Produkten von „Shelly“ (https://www.shelly.com) enthalten.
https://github.com/cpq/bare-metal-programming-guide
Das ist dann unser V3 (https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446/v3).
#4 - 30.10.
V1 vorgestellt
#5 - 06.11.
V1
#6 - 13.11.
#7 - 20.11.
V1 Startup Code genau demonstriert: Programm in das RAM laden und ausführen. Vergleich mit dem Programm im Flash.
Das Programm
ogdb
ist ein neuer Anlauf, den GDB auf der Kommandozeile möglichst einfach starten zu können. Es funktioniert bei allen „Steps“ des Bare-Metal Programming Guide (V3).
#8 - 27.11.
Aktuellen Stand gezeigt: step-7-webserver
#9 - 04.12.
Hinweise „bare-metal-programming-guide“: https://hhoegl.informatik.hs-augsburg.de/es2/Ankuendigung-241203.html
Vorlesung ist wegen Krankheit ausgefallen.
#10 - 11.12.
Bare Metal Programming Guide mit Anpassungen für Nucleo F446
https://gitlab.informatik.hs-augsburg.de/es2/bpg
#11 - 18.12.
Literatur¶
Diverse Doku zu GDB
Quickref es2/gnu/gdb-quickref-es2.pdf
GDB Dokumentation
OpenOCD
OpenOCD Manual (0.12.0) es2/openocd/openocd-0.12.0.pdf
Bücher zum Thema
Daniele Lacamera, Embedded Systems Architecture - Second Edition, 2nd ed., Packt 2023. https://learning.oreilly.com/library/view/embedded-systems-architecture/9781803239545
Joseph Yiu, The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors, 3rd Edition, Newnes 2013. https://learning.oreilly.com/library/view/the-definitive-guide/9780124080829/
Cem Ünsalan, Hüseyin Deniz Gürhan, Mehmet Erkin Yücel, Embedded System Design with ARM Cortex-M Microcontrollers. Applications with C, C++ and MicroPython, Springer 2022. https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-3-030-88439-0
Norman Matloff, Peter Jay Salzman, The Art of Debugging with GDB, DDD, and Eclipse, No Starch Press 2008. https://learning.oreilly.com/library/view/the-art-of/9781593271749/