Embedded Systems II
Oktober 2016, <Hubert.Hoegl@hs-augsburg.de>
URL: http://elk.informatik.hs-augsburg.de/hhwiki/EmbeddedSystems1617
Diese Seite enthaelt Notizen zum Fach Embedded Systems 2
Inhalt
Woechentliche Themen
5. Oktober 2016
ESIDE
https://r-n-d.informatik.hs-augsburg.de:8080/hubert.hoegl/eside
Ein wenig Dokumentation dazu (wird noch mehr):
https://r-n-d.informatik.hs-augsburg.de:8080/hubert.hoegl/eside/blob/master/eside/doc/README.rst
"right start"
https://r-n-d.informatik.hs-augsburg.de:8080/EmbSys2/rightstart
Zusammengestellte Literatur
- Vim Tutorials
- Derek Wyatt's Vim Tutorial Videos http://derekwyatt.org/vim/tutorials/
- OpenVIM interactive tutorial http://www.openvim.com/tutorial.html
- Vim Book ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf
- Jesse Goerz, Beginner's guide to Vi Improved (vim), http://newbiedoc.sourceforge.net/text_editing/vim.html
- http://vim-adventures.com
- https://vimgifs.com
12. Oktober 2016
Grosse ESIDE Problembehebung
Quickref zur ESIDE und den benoetigten Werkzeugen
https://r-n-d.informatik.hs-augsburg.de:8080/hubert.hoegl/eside/blob/master/eside/doc/quickref.pdf
19. Oktober 2016
Zur ESIDE Installation noch ein paar Tipps. Wenn man nur eine Python 3 Version installiert hat, dann ist fuer die ESIDE Installation das Kommando
sudo pip3 install --upgrade .ganz in Ordnung. Wenn man aber mehrere Python 3 Versionen gleichzeigt installiert hat (z.B. 3.4 und 3.5) dann kann man mit pip3 nicht auswaehlen, welchen man nehmen moechte. In diesem Fall empfehle ich, eine andere Variante der Installation zu verwenden. Man waehlt eine der folgenden Kommandozeilen, bei denen der Interpreter explizit angegeben ist:
sudo python3.4 -m pip install --upgrade . sudo python3.5 -m pip install --upgrade .Auch zum Deinstallieren kann man das verwenden:
sudo python3.4 -m pip uninstall eside sudo python3.5 -m pip uninstall esideAm besten, man deinstalliert am Anfang alle moeglicherweise installierten ESIDE Programme, danach waehlt man eine Installation aus.
26. Oktober 2016
Technische Hinweise zur ersten Abgabe Team1_X
Neues Beispiel fuer ESIDE und gdb Debugging
- git clone ssh://git@r-n-d.informatik.hs-augsburg.de:2222/hubert.hoegl/es2-systick-blink.git
- SYSTICK_Handler() laeuft im Debug Mode nicht.
- breakpoint mit "command list" auf Handler
- GDB p und x Kommando
- display, undisplay
- breakpoint disable und enable
GDB tutorials:
2. November 2016
Vorlesung: Flash Speicher
Praktikum: Problem mit git pull: Wenn man ein git Repository holt, z.B. "rightstart", und dann manche Dateien lokal modifiziert, dann weigert sich git den naechsten Update durch git pull durchzufuehren, damit die lokalen Aenderungen nicht ueberschrieben werden. Gerade in .gdbinit und im Makefile waren Anfang Oktober kleine Fehler enthalten, die inzwischen entfernt wurden. Deshalb ist es unbedingt notwendig, dass Sie einen Update der Sourcen mit git pull machen.
Damit Sie einen git pull machen koennen, entfernen Sie am besten Ihre Aenderungen mit git stash. Nun sind die Sourcen wieder "rein". Ihre Aenderungen sind nun in einem "stash" (Versteck) aufgehoben. Holen Sie nun die Updates mit git pull. Darauf koennen Sie wieder die aufgehobenen Aenderungen mit git stash apply anwenden. Git liefert einen Hilfetext wenn man git help stash eingibt.
Hier sind nochmal die Fehler erklaert:
In Makefile enthaelt die folgende Regel einen Fehler:
gdb: arm-none-eabi-gdb --tui -silent -x .gdbinit -iex "set auto-load safe-path /"
Richtig muss es heissen (also ohne -x .gdbinit Option!):
gdb: arm-none-eabi-gdb --tui -silent -iex "set auto-load safe-path /"
In .gdbinit muss die Zeile:
set trace-commands on
entfernt werden. Ausserdem sollte man die Zeile:
set pagination off
aufnehmen. Das Logging sollte eingeschaltet sein durch die folgenden zwei Zeilen:
set logging file gdb_logfile.txt set logging on
9. November 2016
Wer auf der Suche nach einem einfach zu bedienenden Editor fuer das Terminal-Fenster ist, der sollte mal "Micro" ausprobieren:
STM32 Peripheriemodule: Timer, GPIO, UART, I2C, SPI, (CAN), USB, Ethernet, ADC, DAC, 1-Wire (oft nur in SW). Ausserdem EXTI, RAM, DMA.
Zur Erinnerung: Core (CPU) enthaelt NVIC.
Ankopplung an Ethernet ueber PHY-Baustein (Schicht 1) und "Magnetics", im Mikrocontroller ist Schicht 2, der Rest (IP, UDP, TCP) ist in Software.
"lwIP" Protokoll fuer Mikrocontroller: http://dunkels.com/adam/software.html
Zeitachse von 1950 bis jetzt. Einordnung der I/O Schnittstellen.
Kriterien:
- Alter/wann erfunden?
- Anzahl Signale
- Asynchron/synchron
- Geschwindigkeit in Bit/sec
- Elektrische Signale
- "Plug and Play"
- Komplexitaet in Codezeilen (korreliert mit dem Alter)
- Benoetigt wie viel RAM?
- Entfernung
- Spannungsversorgung
- Wer ist Master? Geht Multi-Master?
Aufgabe Tabelle erstellen mit I/O Schnittstellen vs. Kriterien:
UART RS-232 RS-485 I2C SPI 1-Wire USB Ethernet Kriterien ...
UART, ca. 1960, Punkt-zu-Punkt, Spannungsversorgung nicht in Schnittstelle enthalten, Sender und Empfaenger muessen gleiche Einstellungen haben (Startbit, Datenbits, Parity, Stopbit, Geschwindigkeit, z.B. 115200/8N1), elektrische Signale meist 5V oder 3.3V, Geschwindigkeit von 75 Bit/s ... 115200 Bit/s.
UART Prinzip, jedoch andere elektrische Signale:
RS-232: hohe Spannungswerte +/- 12...15V, 9-polige Sub-D Steckverbinder an aelteren PCs, Punkt-zu-Punkt.
RS-485: differentiell, niedrige Spannungswerte +/- 0.1 V, bis MBit/sec, haeufig als Feldbus, z.B. Tuerzugangssteuerung an der Hochschule Augsburg.
Der "Elektor Bus" ist ein Kommunikationsprotokoll, das den RS-485 Bus verwendet (siehe Literatur). Ein anderes Beispiel ist das "Modbus" Protokoll, eine freie Implementierung ist FreeModbus.
Literatur zum Thema "Schnittstellen":
http://elk.informatik.hs-augsburg.de/pub/es2/lit/#interfaces
16. November 2016
Software-Schichten
Betonen der Sicht auf das "API"
- register.h (Adressen von wichtigen Registern), Sammlung von ein paar Funktionen
- CMSIS (Wrapper fuer den Cortex M3 Kern)
- Cube Bibliothek fuer alle STM32 Mikrocontroller von ST-Micro, ehem. "Standard Peripheral Lib.". Download der Cube Bibliothek fuer STM32F1 unter http://elk.informatik.hs-augsburg.de/pub/es2/tools/
- Board Support Package (BSP), in Cube enthalten.
doxygen: Werkzeug zum Extrahieren der Dokumentation aus C/Assembler Quelltext http://www.stack.nl/~dimitri/doxygen/
mbed Projekt
- Fuer ARM Controller von unterschiedlichen Herstellern
- mbed "enabled" https://developer.mbed.org/platforms/
- https://www.mbed.com
- https://developer.mbed.org
- mbed OS 2: https://developer.mbed.org/handbook/Homepage
- mbed OS 5: https://docs.mbed.com/docs/mbed-os-handbook
- https://github.com/ARMmbed/mbed-os
- Buch: Rob Toulson, Tim Wilmshurst, Fast and Effective Embedded Systems Design. Applying the ARM mbed, 2nd Edition, Newnes 2016. http://proquest.tech.safaribooksonline.de/book/electrical-engineering/computer-engineering/9780081009031
23. November 2016
30. November 2016
7. Dezember 2016
maketags.sh (erzeugt eine tags Datei fuer Vim und andere Editoren)
CUBEDIR=~/Embedded-Systems/STM32Cube_FW_F1_V1.4.0 ctags --c-types=+l $CUBEDIR/Drivers/STM32F1xx_HAL_Driver/Src/*.c $CUBEDIR/Drivers/STM32F1xx_HAL_Driver/Inc/*.h $CUBEDIR/Drivers/BSP/STM32VL-Discovery/*.[ch] \ $CUBEDIR/Drivers/CMSIS/Include/core_cm3.h $CUBEDIR/Drivers/CMSIS/Include/cmsis_gcc.h $CUBEDIR/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ $CUBEDIR/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xb.h *.[ch]
Empfehlungen fuer Weihnachtseinkaeufe: Logikanalysator (Saleae), Picoscope (Pollin), Steckbrett, Bus-Pirate, Flugdraehte, Loetkolben, ...
Besprechung von Beispiel es2-cube-sys.
14. Dezember 2016
21. Dezember 2016
Leseliste fuer die Klausur:
Materialsammlung: http://elk.informatik.hs-augsburg.de/pub/es2/lit/
Speichertechnologie
- RAM
- NOR Flash
- NAND Flash
Schnittstellen
- UART
- SPI
- I2C
Cortex M3 Kern
- Yiu, 2. Auflage, Kap. 2 und 3
STM32
STM32 Bibliotheken
- CMSIS (Yiu, 2. Auflage, Kap. 10.4)
- Cube
GNU Toolchain
- Yiu, 2. Auflage, Kap. 19
FreeRTOS/CMSIS-RTOS
Developing applications with STM32Cube and RTOS (covers FreeRTOS, CMSIS-RTOS API)
http://elk.informatik.hs-augsburg.de/pub/es2/lit/prog/rtos/DM00105262.pdf
http://elk.informatik.hs-augsburg.de/pub/es2/lit/prog/rtos/yiu-3e-ch19.pdf
Low-Power Programmierung
http://elk.informatik.hs-augsburg.de/pub/es2/lit/prog/01_ARM.pdf