en en en en nl nl la nl nl pl nl en en nl de en nl nl en nl en nl it en en nl en nl nl nl en ru pl en nl nl nl nl de nl en en nl nl nl nl nl nl nl en en en en nl nl nl en nl nl ceb nl nl en nl nl nl nl nl nl en nl sv nl en nl nl nl nl nl en nl en nl en nl ru nl nl nl nl en de en de en nl nl nl en mn en en en en en en en en en en en en en en en en el en en nl en nl nl fr nl en nl nl nl en en en en en en en en en en en en en en en en
Lammert (Fugu) Rol: deelnemer Deskundig met: Arduino, CNC, CNC-Frezen, ENC28J60, Glasvezel lassen, Linux, Netwerken, Stellaris Launchpad Werkt aan: Geen projecten :(
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).
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.
27 timers waarvan sommigen configureerbaar tot 64bit
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.)
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 bizon libgmp3-dev libmpfr-dev libncurses5-dev \ libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev\ python-yaml git libusb-1.0-0-dev
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.
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:
$ cd ~/stellaris $ git clone https://github.com/esden/summon-arm-toolchain $ cd summon-arm-toolchain $ ./summon-arm-toolchain
$ 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.
Het compileren en installeren van de Toolchain duurt snel 15 a 30 minuten, tijd voor Koffie!
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.
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.
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.
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.
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
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.
Dit bestand is een zgn. linker script. Dit script wordt gebruikt door de toolchain om de juiste geheugen adressering toe te passen.
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.
De code compileren gaat als volgt:
$ 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
$ arm-none-eabi-ld -T stellaris-base.ld --entry ResetISR -o stellaris-base.out startup_gcc.o stellaris-base.o --gc-sections
$ 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!
This page was last edited on 3 January 2013, at 01:39.
Content is available under Creative Commons Attribution-ShareAlike 3.0 Netherlands License unless otherwise noted.