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: ``__ * Repos für Übungen: https://gitlab.informatik.hs-augsburg.de/es2/ws24 * Skript: ``_ (Vorsicht, da ist noch viel für den STM32L476 enthalten, den wir früher verwendet haben) * Klausurvorbereitung: ``_ Terminübersicht --------------- .. code-block:: text #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) https://learning.oreilly.com/library/view/embedded-systems-architecture/9781803239545/B18730_01.xhtml - 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 eingeben * Dokumentation zum STM32F446: ``_ * GDB Übung .. * V2 (STM32 Interrupts - verweist auf Repos ``starter-cmsis``, ``syshandler-cmsis``, ``gpio-intr-cmsis``) * Alle Repos für Nucleo F446: https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446/ * ``cube-gpio-iotoggle``: Demo wie man Cube Bibliothek mit ``estool`` in das Projekt bekommt. * Erstellen der ``compile_commands.json``, die der Language Server für C/C++ benötigt. Dazu verwendet man entweder ``bear`` oder ``compiledb``: - ``bear -- make`` (vorher ``apt install bear``) - ``compiledb make`` (vorher ``pip install compiledb``) Als Language Server verwendet man am besten ``clangd``, eine Alternative ist ``ccls``. * 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" (``_) 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 https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446/v1 **#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). https://gitlab.informatik.hs-augsburg.de/hhoegl/ogdb **#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 ``_ - TUI ``_ (`PDF `_) - ``_ - GDB Dokumentation * https://sourceware.org/gdb/current/onlinedocs/gdb * TUI https://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html#TUI * TUI Tastenbelegung https://sourceware.org/gdb/current/onlinedocs/gdb/TUI-Keys.html#TUI-Keys * OpenOCD - OpenOCD Manual (0.12.0) ``_ * 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/