Embedded Systems II (WS16/17)

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

Woechentliche Themen

5. Oktober 2016

12. Oktober 2016

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 eside

Am besten, man deinstalliert am Anfang alle moeglicherweise installierten ESIDE Programme, danach waehlt man eine Installation aus.

26. Oktober 2016

2. November 2016

  • Vorlesung: Flash Speicher

    https://elk.informatik.hs-augsburg.de/es2ws1617/flash/index.html

  • 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:

    1. 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 /"
      
    2. 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/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/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

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/es2/lit/

Speichertechnologie

  • RAM

  • NOR Flash

  • NAND Flash

Zum Flash-Speicher: https://elk.informatik.hs-augsburg.de/es2ws1617/flash/index.html

Schnittstellen

  • UART

  • SPI

  • I2C

Cortex M3 Kern

STM32

STM32 Bibliotheken

FreeRTOS/CMSIS-RTOS

Low-Power Programmierung

GNU Toolchain

Sonstiges

  • Semihosting (Yiu, 2. Aufl., Kap. 10)