Cortex-Evaluation-Boards

Aus C3MAWiki
Zur Navigation springenZur Suche springen
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.
Dies ist ein Projekt, an dem momentan aktiv gearbeitet wird. Wenn du Fragen hast oder mitarbeiten möchtest, wende dich an fzahn.


Idee

Neben den viel verwendeten AVR-Mikrocontrollern drängen zur Zeit verschiedene Hersteller (TI , STM) mit Evaluation-Boards auf den Markt, welche auf den ARM Cortex-Prozessoren basieren.

Besonders interessant sind hier die Boards

Die Boads basieren beide auf dem ARM Cortex M4 Prozessor und bieten hohe Leistungsfähigkeit im Vergleich zur klassischen AVR Architektur. AUch haben die Boards gleich einen Programmier- / Debug-Adapter mit an Board und warten damit darauf, von uns bespielt zu werden :)

Aufbau Toolchain

Die beiden Hersteller sehen, auch in Ihrer Dokumentation, vorwiegend den Einsatz kommerzieller Entwicklungsumgebungen vor. Im $Internet gibt es aber zahlreiche Dokumente, die den Aufbau einer freien Toolchain auf Basis gcc, ... beschreiben. Da die Informationen hier sehr verschiedenartig vorliegen, habe ich hier den von mir gewählten Weg dokumentiert, um eine Toolchain sowohl für das Stellaris Launchpad, wie auch für den STM32F4 zusammenzubauen. Ich habe das ganze unter Mac OS X Mountain Lion gebaut, jedoch sollten die Informationen sich leicht auf Linux-Systeme übertragen lassen

ARM Cross-Compiler

Vorbedingungen

Als erstes muss der Cross-Compiler für die ARM-Prozessoren installiert werden. Hier gibt es mit summon-arm-toolchain eine aktuell gehaltene Toolchain, welche über ein Installskript leicht installiert werden kann.

Die folgende Anleitung sammt weitestgehend aus dem README der summon-arm-toolchain:

Installation notwendiger Pakete mit MacPorts:

 port install gmp mpfr libmpc wget libftdi git-core py27-yaml python_select

py-yaml wurde hierbei nicht richtig akzeptiert. Dieses habe ich nachinstalliert durch:

sudo easy_install pyyaml

(Danke pcopfer!!)


Installation summon-arm-toolchain

cd ~
mkdir Development
cd Development
git clone https://github.com/esden/summon-arm-toolchain.git
port install gmp mpfr libmpc wget libftdi git-core py27-yaml python_select
cd summon-arm-toolchain


HINWEIS 26.09.2013, Gonium: OpenOCD scheint kaputt zu sein und braucht einen Patch, siehe [[1]]. Der compile-Vorgang kann auch mit

cd && git clone git://github.com/ehntoo/summon-arm-toolchain.git && cd summon-arm-toolchain && wget -O - http://darkrainfall.org/build-openocd.patch | patch -p1 && ./summon-arm-toolchain

gestartet werden. Die im folgenden beschriebenen Konfigurationseinstellungen habe ich bislang nicht getestet.

Im Skript "summon-arm-toolchain" sollte nun noch der DARWIN_OPT-Pfad auf den Mac Ports Pfad geändert werden ( bei mir: /opt/local = Default). Erstellt wird die Toolchain jetzt mit:

./summon-arm-toolchain PREFIX=~/Development/sat LIBSTM32_EN=1

PREFIX gibt an, wo die toolchain installiert werden soll, mit LBSTM32_EN=1 erreicht man, dass nicht nur die freie LIBOPENCM3 installiert und kompiliert iwrd, sondern außerdem noch die LIB von STM.

Das ganze dauert jetzt ne Weile. Das Skript lädt die notwendigen Pakete für die Toolchain herunter und kompiliert diese. Am Ende landet die Toolchain in dem Pfad, den wir unter PREFIX angegeben haben.

Zum Schluss habe ich meine Toolchain nun unter ~/Development/sat

Das Verzeichnis ~/Development/sat/bin füge ich nun noch meiner PATH-Variable in der .profile zu, so dass die Binaries des Compilers auch gefunden werden. Danach ist ein Neustart des Terminals erforderlich, damit die neue PATH-Variable Verwendung findet

Librarys und boardspezifische Komponenten der Toolchain

Neben der eigentlichen Toolchain benötigt man für jeden Hersteller (STM und TI) noch die jeweiligen Hersteller-Bibliotheken, welche die entsprechenden Mappings/Registeradressen/Peripheriefunktionen/... für das jeweilige Board bereitstellen. Die Bibliotheken müssen von den Herstellern heruntergeladen werden und bereitgestellt werden.

TI Launchpad

TI Stellarisware

Texas Instruments stellt die sogenannte Stellarisware zur Verfügung. Neben Dokumentation, verschiedenen Bibliothken enthält das File auch Beispielcode. Die Stellarisware lässt sich nach Registrierung von der Homepage von TI herunterladen.

Man erhält dabei ein EXE-File "SW-LM3S-9453.exe", welche man aber mit unzip entpacken kann.

cp SW-LM3S-9453.exe ~/Development/.
cd ~/Development
mkdir stellarisware
cd stellarisware
unzip ../SW-LM3S-9453.exe
make

LM4Tools

LM4Flash installieren (zum Flashen von BINs aufs TI Launchpad):

Aus: [2]

git clone https://github.com/utzig/lm4tools.git
cd lm4tools/lm4flash
make


Projekt-Template mit Makefile

Ein Project-Template, um Anwendungen für das TI Stellaris-Evaluationsboard zu schreiben, findet man unter:

Stellaris-Template

STM32F4 Discovery

STM Standard Peripherals Library

Die entsprechende Library von STM lädt man sich am besten in Form des Firmware-Pakets für das STM32F4 Discovery von der STM-Homepage. Im Gegensatz zu TI ist es hier nicht erforderlich, sich dort anzumelden. Den Inhalt dieses Zipfiles habe ich ebenfalls in ~/Development/ gesichert und den Order in stm32f4xx-fw umbenannt. Die wichtigsten Ordner in diesem File sind die Ordner mit den Library-Dateien von STM und ARM. Diese müssen später im Makefile als includes eingebunden werden.


ST-Link

Mit dem ST-Link Paket kann man binarys auf das Discovery-Board flashen.

Benötigt wird hierzu autotools, welches sich am besten mit brew installieren lässt:

brew install autotools
git clone git://github.com/texane/stlink.git
cd stlink
./autogen.sh
./configure
make
make install

Projekt Template mit Makefile

Anbei befindet sich ein Template zur Erstellung von Anwendungen auf Basis STM32F4 Discovery. Das Template bindet die STM-Librarys direkt über das Makefile ein. Dieses ist also an die Pfade des eigenen Systems anzupassen. Das Makefile war vom Ursprungsauthor (siehe Quellenangabe im File) eigentlich zum Kompilieren des IO_Toggle Beispielcodes von STM gedacht und wurde von mir für das Project-Template angepasst. Ggfs. sind die verwendeten Bibliotheken noch als "SRC" im Makefile zu ergänzen.

Im Template sind die Linker-Skripte und der Startup-Code enthalten. Achtung: Bei dem Linker-SKript ("stm32_flash.ld") sind in dem FIrmware-Paket von STM sowohl Varianten für 128 kb RAM, wie auch für 192 kb RAM enthalten. Im Project-Template findet sich die richtige Version mit 192kB.

Das Template findet sich unter:


STM32F4Discover-Template bei GIthub

Links

Basis für diese Anleitung wahren zahlreiche Quellen im Internet. Vor allem aber: