>> Artikelansicht

22.03.2015 /He [Druckansicht]

Launchpad TM4C12x MCU-Series und Raspberry Pi 2 Model B

...oder ein 32-Bit Co-Prozessor für den Raspberry Pi

TI Launchpad EK-TM4C123GXL Zum Einsatz soll diesmal ein "Launchpad Evaluation Kit Tiva™ C Series TM4C123GXL" von Texas Instrumens [http://www.ti.com/tool/ek-tm4c123gxl] kommen, das direkt über den Raspberry Pi in C programmiert wird, um es als eine leistungsfähige I/O-Erweiterung einzusetzen.
Motivation:
Nachdem das neue Model vom Raspberry Pi mit einer leistungsfähigeren CPU und mehr Speicher aufwartet, kann man ein passendes ARM-Toolchain für den auf dem Board verbauten "32-Bit ARM Cortex M4" direkt auf dem Raspberry Pi übersetzen. Was noch vor ein paar Monaten mit dem Vorgängermodel mehr als einen halben Tag in Anspruch genommen hat, ist nun in weniger als 3 Stunden geschehen. Das Ganze ist natürlich nur einmal zu erledigen, aber auch danach profitiert man weiterhin deutlich von der gesteigerten Rechenleistung, sowie dem verdoppelten Speicher beim Übersetzen von Programmen.

Voraussetzungen

Raspberry Pi 2 Model B

Für die folgende Installation wird ein Raspberry Pi 2 Model B mit einer 900MHz quad-core ARM Cortex-A7 CPU und 1GB RAM eingesetzt. Andere Modelle wurden nicht getestet. Als Betriebssystem kommt Raspbian/Debian Wheezy (February 2015) zum Einsatz, das unter [http://www.raspberrypi.org/downloads/] heruntergeleaden werden kann. Das Betriebssystem läuft direkt von micro-SD Karte, die mindestens 8GB, besser jedoch 16GB, groß sein sollte.



Installation der Software

Grundlagen

Wer bisher keine Erfahrung mit dem Raspberry Pi hat, sollte diese Einführung lesen(alle Betriebssysteme)
[http://www.raspberrypi.org/documentation/]

(1.1) Mit dem Raspberry Pi verbindung aufnehmen

Der Raspberry Pi 2 sollte mit dem Internet über die Ethernet-Schnittstelle und einem Router verbunden sein.Er ist danach per ssh von der IP-Adresse, die vom Router zugewiesen wurde, zu erreichen.

  • Die folgende Installation wird per Standarbenutzer : pi mit dem Passwort: raspberry durchgeführt.
    Alternativ kann man auch einen Monitor und eine Tastatur verwenden und die Befehle darüber eingeben.Die Verbindung mit dem Internet ist, egal welche Methode gewählt wurde, ein Muss.
Verbindung per ssh mit dem Raspberry Pi herstellen Standardbenutzer : pi Passwort: raspberry
  1. #{IP_ADRESSE_VOM_ROUTER} gegen IP-Adresse ersetzen:(Beispiel) 192.168.178.60
  2. ssh -p22 pi@{IP_ADRESSE_VOM_ROUTER}

(1.2) System aktuallisieren und Tools einspielen

System aktuallisieren und notwendige Pakete einspielen.
  1. #System-Aktuallisierung
  2. sudo apt-get update
  3. sudo apt-get upgrade
  4. #notwendige Tools für das ARM-Toolchain installieren
  5. sudo apt-get install gcc make bc screen ncurses-dev
  6. sudo apt-get install flex bison
  7. sudo apt-get install libgmp3-dev
  8. sudo apt-get install libmpfr-dev
  9. sudo apt-get install libmpc-dev
  10. sudo apt-get install autoconf
  11. sudo apt-get install texinfo
  12. sudo apt-get install python2.7-dev
  13. sudo apt-get install python-yaml
  14. sudo apt-get install libexpat1-dev
  15. #für GNU Tools for ARM Embedded Processors - https://launchpad.net/gcc-arm-embedded
  16. sudo apt-get install libisl-dev

(1.3) summon-arm-toolchain installieren

Hier verwenden wir das summon-arm-toolchain, das wir direkt auf dem Raspberry Pi übersetzen.

summon-arm-toolchain herunterladen
  1. cd ~
  2. git clone https://github.com/esden/summon-arm-toolchain.git

Das Toolchain kann nun mit den passenden Parametern übersetzt und installiert werden.

  1. cd ./summon-arm-toolchain
  2. ./summon-arm-toolchain SUDO=sudo OOCD_EN=0 LIBSTM32_EN=0 LIBOPENCM3_EN=0 CPUS=4

Nachdem das Script ausgeführt wurde, liegt das ARM-Toolchain im Ordner /home/pi/sam
Um den Compiler für alle Programme zugänglich zu machen, fügt man der Datei /home/pi/.bashrc
am Ende folgende Zeile ein: PATH=/home/pi/sat/bin:$PATH
Dies ist aber erst nach einem Neustart oder nach dem Öffnen einer neuen Shell verwendbar.
So gibt man jetzt den Befehl export PATH=/home/pi/sat/bin:$PATH ein, um das Toolchain unmittelbar zu verwenden.

  1. nano /home/pi/.bashrc
  2. #am Ende der Datei diese Zeile einfügen und danach speichern
  3. export PATH=/home/pi/sat/bin:$PATH

(2.0) lm4tools::lm4flash installieren

Um Programme, die auf dem Raspberry Pi für das Lauchpad übersetzt wurden, auf das Launchpad zu übertragen,verwenden wir hier die lm4tools in dem das Programm lm4flash enthalten ist.
Da die Software mit dem USB-Bus kommuniziert, muss man zusätzlich libusb mit seinen Headern installieren. Hierfür wird von der "Raspbian-Distributon" ein fertiges Softwarepaket angeboten, das man per "apt-get install" einspielen kann.

lm4tools und libusb installieren
  1. sudo apt-get install libusb-dev libusb-1.0-0-dev
  2. git clone https://github.com/utzig/lm4tools.git
  3. cd ./lm4tools/lm4flash
  4. make
  5. sudo cp lm4flash /usr/bin/
  6. #udev-rule
  7. echo 'ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", GROUP="users", MODE="0660"' | \
  8. sudo tee /etc/udev/rules.d/99-tiva-launchpad.rules

Da lm4flash root-rechte benötigt, kann man wie oben(Zeile 8-10), beschrieben entweder eine udev-regel für das Launchpad installieren oder man ruft lm4flash immer mit vorangestelltem sudo auf. -> sudo lm4flash

(3.0) TivaWare™ for C Series Software herunterladen und übersetzen

Unter folgenden Internetadresse kann die Software "TivaWare™ for C Series" heruntergeladen werden.Sie müssen sich zuvor jedoch vor dem Download registrieren.
[http://www.ti.com/tool/SW-TM4C] {SW-TM4C: TivaWare for C Series Software (Complete)}
Hier wurde das Gesamtpaket "SW-TM4C-2.1.0.12573.exe" heruntergeladen, das viele unterschiedliche Launchpad's der TM4C12x-Serie unterstützt, somit ist man nicht an den im Text beschriebenen "TM4C123GXL" gebunden. Nach dem Herunterladen kann man die Software per scp-Befehl auf den Raspberry Pi übertragen.

Software per scp auf Raspberry Pi übertragen
  1. #{IP_ADRESSE_VOM_ROUTER} gegen IP-Adresse ersetzen:(Beispiel) 192.168.178.60
  2. scp -P22 SW-TM4C-2.1.0.12573.exe pi@{IP_ADRESSE_VOM_ROUTER}:~

(3.1) Software auf dem Raspberry Pi extrahieren und übersetzen

Wieder auf dem Raspberry Pi geben wir nun folgendes ein
  1. cd ~
  2. mkdir tivaware
  3. cd ./tivaware
  4. unzip ../SW-TM4C-2.1.0.12573.exe
  5. #Libraries übersetzen
  6. make

(3.2) das "blinky" Testprogramm

Raspberry Pi über USB an TI Launchpad EK-TM4C123GXL Nun sind wir eigentlich schon fertig. Ein schneller Funktionstest kann mit dem entsprechenden "blinky"Programm durchgeführt werden.
Zuvor verbindet man noch den Raspberry Pi und das Launchpad über ein USB-Kabel, wie auf dem nebenstehenden Bild zu sehen ist.
Dabei sollte man auch darauf achten, dass der Schalter des Launchpad auf "DEBUG" steht.


Blinky Testprogramm übersetzen und flashen
  1. cd ./examples/boards/ek-tm4c123gxl/blinky
  2. make
  3. sudo lm4flash ./gcc/blinky.bin

Ausblick

Stellaris® LM4F120 Launchpad

Wer ein Stellaris® LM4F120 LaunchPad zur Hand hat, kann dieses auch mit dem "summon-arm-toolchain" verwenden. Hierfür ist jedoch die Evaluation Board Software unter [http://www.ti.com/tool/sw-ek-lm4f120xl] herunterzuladen. Die Vorgehensweise ist gleich der, wie in 3.1 beschrieben, nur unter Verwendung der "SW-EK-LM4F120XL" Software.

GNU Tools for ARM Embedded Processors

Der Author des "summon-arm-toolchain" empfiehlt selbst, ein anderes ARM-Toolchain zu verwenden, da das "summon-arm-toolchain" nicht mehr weiterentwickelt wird. Seine Empfelung lautet das "GNU Tools for ARM Embedded Processors" [https://launchpad.net/gcc-arm-embedded] zu verwenden. Was auch unter einem leistungsfähigen PC Sinn macht, jedoch reicht das recht schlanke "summon-arm-toolchain" für die Programmierung des Launchpads aus. Wer trotzdem einmal das "GNU Tools for ARM Embedded Processors" testen möchte, hier noch ein paar Hinweise, da das Toolchain nicht out-of-the Box auf dem Raspberry Pi zu installieren ist. Die Übersetzung dauert etwas über 11 Stunden auf einem Raspberry Pi 2 Model B. Es wird eine 16GB micro-SD Karte benötigt. Das System muss wie in (1.2) beschrieben vorbereitet werden.

System vorbereiten: Siehe (1.2)
  1. #Toolchain herunterladen
  2. wget https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q1-update/+download/gcc-arm-none-eabi-4_9-2015q1-20150306-src.tar.bz2
  3. tar -xf gcc-arm-none-eabi-4_9-2015q1-20150306-src.tar.bz2
  4. #Quellen entpacken
  5. cd ./src
  6. find -name "*.tar.*" | xargs -I% tar -xf %
  7. #cloog compilieren und installieren, da es im System fehlt
  8. cd ./cloog-0.18.0
  9. ./configure --prefix=/usr
  10. make
  11. sudo make install
  12. cd ../..
  13. #Toolchain compilieren
  14. JOBS=4 ./build-toolchain.sh --build_type=native --skip_steps="manual mingw32"

Das fertige und installierbare Toolchain liegt jetzt unter ./pkg und kann überall im System hinkopiert und danach extrahiert werden.

Links für weitere Informationen

Homepage Raspberry Pi

[http://www.raspberrypi.org/]

Homepage Launchpad TM4C123GXL

[http://www.ti.com/tool/ek-tm4c123gxl]

esden/summon-arm-toolchain

[http://summon-arm-toolchain.org/]
[https://github.com/esden/summon-arm-toolchain]

GNU Tools for ARM Embedded Processors

[https://launchpad.net/gcc-arm-embedded]

lm4tools / lm4flash

[https://github.com/utzig/lm4tools]



nächster Artikel