EFM 32 Starter Kit unter Linux mit Eclipse benutzen

Das Starterkit für ist ein Entwicklerbord um Anwendungen für den Mikrocontroller EFM 32 zu entwickeln. Normalerweise werden diese Anwendungen als C-Programme geschrieben. Um neue Programme auf dem Gerät zu testen muss man diese erst passend kompilieren und dann auf das Gerät flashen. Es ist sehr nützlich wenn diese Zwischenschritte von einer Entwicklungsumgebung wie Eclipse abgenommen werden. Das hier soll eine möglichst kurze Schritt für Schritt Anleitung zum einrichten eines Projektes auf Eclipse unter Linux sein. 

Voraussetzungen

Ich hatte ich folgende Voraussetzungen:

  • ein EFM 32 Starter Kit (in meinem Fall ein EFM32GG-STK3700)
  • ein installiertes Debian 7, Xubuntu(also Ubuntu)
  • das Eclipse IDE (wenn man das noch nicht hat sollte man es Installieren, auch CDT installieren)
  • eine 64 bit Architektur 
  • dieses Tutourial (in weiten Teilen habe ich das nur übersetzt)

Die Verbindung mit der Hersteller Software testen

Als erstes legt man sich ein Unterverzeichnis in seinem Home-Verzeichnis an.

mkdir ~/edev
cd ~/edev

Dann wird mit wget die Herstellerumgebung runtergeladen und anschließend entpackt(dabei entsteht automatisch ein energymicro Unterverzeichnis)

wget http://cdn.energymicro.com/dl/packages/studio_linux.tar.gz
tar xzvf studio_linux.tar.gz

Dann wird das Simplicity Studio über gestartet. 

./energymicro/studio.py

Probleme auf 64-Bit Systemen

Weil es sich um ein 32-Bit Programm handelt kann es passieren, dass das Programm nicht ausgeführt wird. Hier muss man dann die fehlenden 32-Bit Bibliotheken nachinstallieren. Unter Xubuntu hat bei mir folgendes geholfen, unter Debian 7 wurde es etwas aufwändiger, weil es erstmal nicht einfach über die Paket-Installation geklappt hatte.

sudo apt-get install libreadline5:i386

Man sollte beim nachinstallieren von 32bit Bibliotheken lieber vorsichtig sein weil es dabei zu mittelschweren Problemen kommen kann. Es wird berichtet das das installieren des Paketes libicu48:i386 zu viel Ärger geführt hat.

Die passenden Beispiele herunterladen

Am besten mal lädt sich erstmal alles. Einfach auf Add/Remove klicken.

Simlicity Studio

 

Die passenden Tools bekommen

Die Tools sind bei Linux nicht direkt in das Simplicity Studio integriert. Deswegen muss man sie sich nochmal herunterladen. 

cd ~/edev 
wget http://cdn.energymicro.com/dl/packages/energyAwareTools_25052012.tgz 
tar xzvf energyAwareTools_25052012.tgz 
cd energymicro 
wget http://cdn.energymicro.com/dl/packages/energyAwareCommander_linux_pkg_2.72-beta.tar.gz
tar xzvf energyAwareCommander_linux_pkg_2.72-beta.tar.gz 
cp eACommander/eACommander bin
cp eACommander/JLinkExe bin 
cp eACommander/JLinkGDBServer bin
cp eACommander/libjlinkarm.so.4 lib/libjlinkarm.so.4

Auch hier kann es wieder nötig sein 32-bit Bibilotheken nachzuinstallieren. 

 

Eine erste Verbindung zum Gerät

Um das Gerät als normaler Benutzer nutzen zu können müssen erstmal die passenden Berechtigungen gesetzt werden.

sudo cp doc/45-jlink.rules /etc/udev/rules.d/
sudo groupadd plugdev
sudo usermod -a -G plugdev  

Danach muss dann erstmal das System neugestartet werden.

Dann kann man denn eAware Manager testen. Dafür verbindet man erstmal das Gerät und startet dann den eAware Manager.

cd ~/edev/energymicro
./eACommander.sh

Hier sollte jetzt ein Gerät erkannt werden

.energyAware

Wenn man glück hat kann man auch gleich schon mal eine Demo auf das Gerät flashen. Bei mir hat das geklappt.

Ein Projekt unter Eclipse einrichten

Jetzt braucht man eine Toolchain. Hier wird Eclipse + CodeSourcery ARM EABI Toolchain vorgeschlagen.

cd ~/edev
wget https://sourcery.mentor.com/GNUToolchain/package10926/public/arm-none-eabi/arm-2012.09-63-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
mkdir ~/edev/bin
tar xjvf arm-2012.09-63-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 -C ~/edev/bin

Wenn das fertig ist werden die Erweiterungen für Eclipse installiert. Im Menü klickt man unter „Help > Install New Software“. In dem sich öffnenden Fenster sollte man mit dem Pfeil links neben Add.. die Indigo Updates auswählen können. Ansonsten gibt man „http://download.eclipse.org/releases/indigo/“ manuell in das „Work with:“ Feld ein. Dort wählt man dann unter Mobile and Device Development”das Feld “C/C++ GDB Hardware Debugging” aus. Danach geht es mit „Next“ weiter und den Anweisungen folgen.

Software installieren

Danach kann man ein Eclipse-Projekt anlegen. Entweder wählt man den Projekt Button (New-Project) oder geht über  „File>New Project“. Dann wählt man ein normales C Projekt.C-Projekt

 

Dann Wählt man als den Dateipfad (Location) einen Pfad zu den Beispielen die mit dem Simplicity Studio runtergeladen wurden. /home/<Benutzer>/edev/energymicro/kits/<name des Kits (steht auf der Packung)> /examples/blink. In Meinem fall hies das Kit EFM32GG_STK3700.

New C-Project

Jetzt müssen noch einige Einstellungen vogenommen werden damit es funktioniert.

Pfad anpassen

  • C/C++ Build:  build directory als  ${workspace_loc:/blink/codesourcery} einstellen. (unter Xubuntu hatte das nicht funktioniert und man musste die volle Dateisystem Variable eingeben)
  • C/C++ Build->Discovery Options: Haken bei Automatic discovery of paths and symbols entfernen.
  • C/C++ Build->Settings: Prüfen ob der GNU Elf Parser gewählt ist.

Wenn alles eingestellt ist: „OK“ klicken.

Dann kopiert man Makefile.blink und nennt es um in Makefile. Im neu erstellten Makefile ersetzt man die Zeile die mit LINUXCS anfängt durch folgende.

LINUXCS    ?= ~/edev/bin/arm-2012.09/

Makefile anpassen

Jetzt das Makefile abspeichern und kompellieren.

 Debugmodus einstellen

Wenn so weit alles gut aussieht können jetzt die debug Einstellungen vorgenommen werden. Erstmal muss aber der J-Link Server gestartet werden. Dafür schliesst man erstmal das Gerät über den J-Link Anschluss an (wenn man den kleinen Schalter auf DBG gestellt hat braucht man auch nur ein Kabel) und gibt dann folgendes ein:

cd ~/edev/energymicro
./gdbserver.sh

In Eclipse klickt man dann „Run>Debug Configuration“ . Dann mit rechtsklick auf GDB Hardware Debugger einen neuen Debugger erstellen. Im dardurch geöffneten Tab klickt man dann auf den Blau unterlegten Text in der Linken unteren Ecke und stellt den Standart GDB Launcher ein.

Select other

GDB Standart wählen

 

In den anderen Tabs stellt man dann folgendes ein:

  • Debugger Tab: den ganzen Pfad zu arm-none-eabi-gdb in  „GDB Command“ eingeben . ( also /home/<Benutzer>/bin/arm-2012.09/bin/arm-none-eabi-gdb)
  • Debugger Tab: noch prüfen ob  Use remote target mit Generic TCP/IP JTAG Device und localhost als Host name gewählt ist, und 2331 als Port number setzen.
  • Startup Tab: Im Initialization Commands Feld folgendes eingeben:
    set tdesc filename target-m3.xml
    mon speed 4000
    mon endian little
    mon flash download = 1
    mon flash device = EFM32TG840F32
    mon reset 1
  • Startup Tab (möglicherweise runterscrollen): Set breakpoint at: Häkchen machen und ins Feld „main“ eingeben
  • Common Tab:  Debug in „Display in favorites menu“ abhaken.

Wenn man jetzt auf Debug klickt kommt man in den Debugmodus dort klickt man dann auf „Resume (F8)“ oder gleich F8.

Dann sollte es wie Folgt aussehen:

Debugmodus

Wenn man jetzt nochmal F8 drückt blinken die User-LEDs abwechselnd.

EFM32

Irgendwie arbeitet Eclipse bei mir noch nicht sauber mit dem SEGGER J-Link GDB Server zusammen. Immerhin geht es überhaupt. Auf Windows ging das einrichten des Simplicity Studios in etwa drei Klicks. Die Linux unterstützung ist noch nicht ganz so cool.

Wenn es noch nicht funktioniert

Viele Probleme lagen bei mir an mangelnder 64-Bit unterstützung wenn in den Fehlermeldungen dann etwas über fehlende Libaries steht kann man zu diesen mit „apt-file find“ passende Pakete suchen die man dann mit einem „:i386“ hinter dem Paketnamen installiert. CNXSoft warnt davor „libicu48:i386“ zu installieren.