Stellaris Launchpad

From Frack - Hackerspace Friesland
Jump to navigationJump to search
Onderwerp: Stellaris Launchpad
Stellaris.jpg
Deskundigen
Gebruiker Fugu.jpg Fugu
Gebruiker Fugu.jpgLammert (Fugu) Rol: deelnemer Deskundig met: Arduino, CNC, CNC-Frezen, ENC28J60, Glasvezel lassen, Linux, Netwerken, Stellaris Launchpad Werkt aan: Geen projecten :(
Onderdeel van Elektronica

De Stellaris Launchpad is een ARM Cortex microcontroller op een printbordje samen met een USB en voedingsaansluiting, vergelijkbaar met de Arduino. Het grote verschillen zit 'm in de 32-bit CPU architectuur, flash geheugen en de ruime hoeveelheid aan timers en interfaces (I2C, SPI, serieel).

Hardware

De Stellaris Launchpad bevat een op een ARM-Cortex M4F gebaseerde Microcontroller. Deze LM4F120H5QR microcontroller biedt de volgende mogelijkheden:

  • 80 MHz, 32-bit ARM Cortex-M4 CPU met floating point.
  • 256 Kbyte flash geheugen wat zeker 100,000 keer beschreven kan worden.
  • 1 MSPS ADCs
  • 8 UARTs
  • 4 SPIs
  • 4 I2Cs
  • 27 timers waarvan sommigen configureerbaar tot 64bit

Aansturing

Texas Instruments stelt voor de Stellaris Launchpad een aantal verschillende tools ter beschikking. Deze tools zijn echter vooral Windows gebaseerd / IDE-integraties.

Gelukkig is het ook mogelijk om de Launchpad vanuit een Linux omgeving te programmeren. We moeten dan zelf iets meer doen, dus hieronder de stappen om dat te realiseren. Onderstaande gaat ervanuit dat je een Debian-acthtige Linux-variant (Debian, Ubuntu, Linix-Mint, etc.)

Installeren softwarepakketten

Voor de volgende stappen heb je eerst een aantal softwarepakketten nodig. Deze zijn allen beschikbaar in de repositories en in een stap te installeren:

$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev \
       libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev\
       python-yaml git libusb-1.0-0-dev

Installeren StellarisWare

StellarisWare bevat benodigde headerfiles en firmware om code te kunnen compileren. Daarnaast bevat het nog stukjes voorbeeldcode die erg nuttig kunnen zijn als referentie of als inspiratie voor je eigen projecten.

Je kunt StellarisWare downloaden van http://www.ti.com/tool/sw-ek-lm4f120xl Kies hier voor het SW-EK-LM4F120XL pakket. (Je hebt een ti.com login nodig om dit te kunnen downloaden)

Als download krijg je het volgende bestand aangeleverd: SW-EK-LM4F120XL-9453.exe Dit is een zip bestand en kun je met unzip gewoon uitpakken. Ik ga er even vanuit dat je de bestanden plaatst in de volgende directory ~/stellaris/stellarisware.

Installatie Toolchain

Om code voor je Stellaris te compileren heb je een toolchain nodig (C Compiler, Assembler, Linker) welke geschikt is voor de Cortex-M4F processor.

Je kunt ervoor kiezen om een pre-built toolchain te downloaden en te installeren. Ik heb deze niet getest en ga deze hier ook niet behandelen ik geef het alleen als alternatieve optie aan. Download en instructie is hier te vinden: http://processors.wiki.ti.com/index.php/Installing_CodeSourcery_Toolchain

Wij gaan de toolchain zelf bouwen. Dit doen we door middel van een build-script. Dit script installeert de toolchain standaard in ~/sat mocht je het in een andere directory willen bijv /usr voeg dan de juiste PREFIX toe. Ik geef beide voorbeelden hieronder:

Installatie in ~/sat

$ cd ~/stellaris
$ git clone https://github.com/esden/summon-arm-toolchain
$ cd summon-arm-toolchain
$ ./summon-arm-toolchain

Installatie in /usr

$ cd ~/stellaris
$ git clone https://github.com/esden/summon-arm-toolchain
$ cd summon-arm-toolchain
$ ./summon-arm-toolchain PREFIX=/usr SUDO=sudo

Nu gaat je pc een aantal pakketen downloaden en bouwen, dus kun je je even rustig richten op het volgende punt.

Koffie

Het compileren en installeren van de Toolchain duurt snel 15 a 30 minuten, tijd voor Koffie!

Testen Toolchain

Als het compileren en installeren klaar is kun je proberen wat van de sample-code te compileren.

Zorg ervoor dat de toolchain beschikbaar is in je PATH variabele. als je de installatie uitgevoerd hebt in /usr zou dit al voor elkaar moeten zijn. Heb je het geinstalleerd in ~/sat voer dan het volgende commando uit om de toolchain aan je PATH toe te voegen.

$ export PATH=$PATH:~/sat/bin

Idealiter wil je dit toevoegen aan je .bashrc of .zshrc

Voer vervolgens onderstaande commando's uit om te kijken of de stellaris sample code wil bouwen.

$ cd ~/stellaris/stellarisware/boards/ek-lm4f120xl/project0
$ make

Heb je StellarisWare daarstraks niet in de genoemde directory geplaatst zul je hier het pad even moeten aanpassen

Als het goed is bouwt deze code zonder problemen en heb je een directory genaamd gcc gekregen met daarin o.a. een bestand genaamd project0.bin

Dit is de binary file die we zometeen op je Stellaris gaan plaatsen hiervoor moeten we echter nog 1 ding doen.

Installatie lm4tools

Om de binary code op je Stellaris te kunnen flashen hebben we het programmaatje lm4flash nodig wat onderdeel is van lm4tools.

Voer hiervoor de volgende commando's uit:

$ cd ~/stellaris
$ git clone http://github.com/utzig/lm4tools.git
$ cd lm4tools/lm4flash
$ make

Als je dit gedaan hebt kopieer dan lm4flash naar /usr/bin of naar ~/sat/bin zodat ook deze weer in je PATH beschikbaar is.

Flashen

Om het voorbeeld wat we zonet gecompileerd hebben te flashen naar de Stellaris voeren we de volgende commando's uit:

$ cd ~/stellaris/stellarisware/boards/ek-lm4f120xl/project0/gcc
$ sudo lm4flash project0.bin

Het ledje op je Stellaris zou nu afwisselend rood en blauw moeten knipperen.

Zelf code schrijven

Uiteraard wordt het pas leuk als we zelf code gaan schrijven voor de Stellaris.

Ik heb een klein stukje voorbeeld-code op Github gezet wat kan dienen als basis voor je projecten.

Dit kun je als volgt op je computer krijgen:

$ cd ~/stellaris
$ git clone https://github.com/Kogelvis/stellaris-base.git

In deze directory vind je een aantal bestanden terug: de eerste 2 kun je ook terugvinden in de voorbeeldprogramma's in je stellarisware directory

startup_gcc.c

Dit bestand bevat zgn. startup code. Deze code draait voor de main in stellaris-base.c en zorgt voor het opzetten van de juiste omgeving vereist voor het functioneren van de main en de rest van de code.

stellaris-base.ld

Dit bestand is een zgn. linker script. Dit script wordt gebruikt door de toolchain om de juiste geheugen adressering toe te passen.

stellaris-base.c

Dit is het bestand met de daadwerkelijke code hierin worden nu een aantal header-files ingeladen en staan er een paar regels code om je ledje rood te laten knipperen.

Compileren

De code compileren gaat als volgt:

Compileren

$ arm-none-eabi-gcc stellaris-base.c startup_gcc.c -g -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Os -ffunction-sections -fdata-sections -MD -std=c99 -Wall -pedantic -DPART_LM4F120H5QR -c -I~/stellaris/stellarisware  -DTARGET_IS_BLIZZARD_RA1

Linken

$ arm-none-eabi-ld -T stellaris-base.ld --entry ResetISR -o stellaris-base.out startup_gcc.o stellaris-base.o --gc-sections

Strippen

$ arm-none-eabi-objcopy -O binary stellaris-base.out stellaris-base.bin

De stellaris-base.bin kunnen we dan weer op de stellaris flashen dmv: $ sudo lm4flash stellaris-base.bin

Omdat bovenstaand elke keer nogal veel typewerk is heb ik een Makefile toegevoegd. door make uit te voeren worden bovenstaande stappen m.u.v. het flashen voor je uitgevoerd en vind je de binary terug in ~/stellaris/stellaris-base/output


Veel Succes met het schrijven van coole software!