[size=150]Avoimen STM32 -kehitysympäristön asennus Ubuntuun[/size]
Tämän tekstin tarkoituksena esitellä STM32VL Discoveryn käyttöönotto Ubuntussa käyttäen ilmaisia ja vapaita työkaluja ja kirjastoja. Discovery on varsin halpa ja tehokas kehityslauta, joka sisältää ARM Cortex-M3 -pohjaisen, 24 MHz prosessorin, jossa on 128 KB flashia ja 8 KB RAM-muistia. Protoilukäyttöön lauta sopii erinomaisesti kaikkien prossun pinnien piikkirimalle tuonnin ansiosta. Discovery sisältää ohjelmointipiirin ja virransyötön (5V USB:stä tai 5/3.3V ulkoiselta powerilta), joten kehityksen aloittamiseen ei tarvita mitään lisäkomponentteja.
Kääntäjänä tässä ympäristössä käytellään linaro-gcc:tä, joka asennellaan summon-arm-toolchainin yhteydessä. Lisäksi asennetaan stlink, jotta saadaan softat sisälle Discoveryyn ja viimeisenä muttei vähäisimpänä, lisätään settiin libopencm3, joka sisältää varsin kattavat kirjastot useille ARM Cortex-M3 -prossuille. Jonkinaliasta tukea löytyy myös Cortex-M4 -prossuille (lähinnä STM32F4).
Libopencm3 ei ole vielä missään määrin valmis, joten ominaisuuksia, varsinkin apufunktioita ja esimerkkejä puuttuu. Koodia lukemalla hommat kuitenkin selviää ja itse olen ainakin todennut kirjaston varsin päteväksi (suhteellisen pienen) testiprojektini perusteella.
Kaikkien käytettävien ohjelmien uusimmat versiot löytyy suoraan git-versionhallinnasta, joten sieltä asentaminen on helpoin vaihtoehto ja samalla varmistutaan ohjelmien tuoreudesta. Varsinkaan kirjaston kohdalla ei kannata unohtaa päivityksiä myöhemminkään, lisäominaisuuksia varmasti tulee ajan myötä.
Vaikka opas on tehty Discovery silmällä pitäen, sen pitäisi soveltua myös muille kehitysalustoille / prosessoreille.
Varsinaista asennusta en pahemmin ole kommentoinut, koska ainakin itselläni se sujui ongelmitta ja varsin suoraviivaisesti. Jos kysymyksiä tulee, pyrin niihin parhaani mukaan vastaamaan.
[size=150]Esitoimet[/size]
Ensimmäisenä aloitetaan asentamalla tarvittavia työkaluja:
sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev libusb-1.0-0-dev pkg-config git
Luodaan kotihakemiston alle tmp-kansio, jossa työskennellä
mkdir ~/tmp
[size=150]summon-arm-toolchainin asennus[/size]
Asennetaan summon-arm-toolchain hakemiston /usr/local -alle. Tähän tarvitaan joko root- tai sudo -oikeudet, joten käsketään asennusskriptin käyttää sudo:ta. Tässä kestää hetki, mutta muista välillä vilkaista onko asennus pysähtynyt kyselemään salasanaa sudo:lle.
cd ~/tmp
git clone https://github.com/esden/summon-arm-toolchain.git
cd summon-arm-toolchain
./summon-arm-toolchain PREFIX=/usr/local SUDO=sudo
[size=150]stlinkin asennus[/size]
cd ~/tmp
git clone https://github.com/texane/stlink.git
cd stlink
./autogen.sh
./configure
make
sudo make install
Asennetaan stlinkin tarjoamat usb-sääntötiedostot, jotta Discoveryn kytkeminen koneeseen toimii niinkuin pitääkin
sudo cp 49-stlinkv1.rules 49-stlinkv2.rules /etc/udev/rules.d
sudo udevadm control --reload-rules
[size=150]libopencm3:n asennus[/size]
cd ~/tmp
git clone git://libopencm3.git.sourceforge.net/gitroot/libopencm3/libopencm3
cd libopencm3
Käännetään kaikki kirjastot ja esimerkit ‘make’ -komennolla, samalla varmistutaan, että kaikki toimii kuten pitääkin.
make
Kirjastojen asennus järjestelmän laajuiseksi on omasta mielestäni hieman turhaa, itse ainakin jätin seuraavan vaiheen pois…
sudo make install
Tämän jälkeen kytke Discovery tietokoneeseesi. Jos se oli jo kytkettynä, irroita, odota hetki ja kytke uudelleen.
[size=150]Testaus[/size]
Testataan asennuksen toimivuus lataamalla Discoverylle esimerkki ‘button’. Jos kaikki menee oikein, pitäisi Discoveryyn mennä softan, joka vilkuttaa vihreää lediä ja hidastuu, kun painetaan sinistä nappia…
cd ~/tmp/libopencm3/examples/stm32/f1/stm32vl-discovery/button
make clean && make && st-flash write button.bin 0x8000000
Eli lyhykäisyydessään ensin puhdistetaan vanhat käännöstiedostot, käännetään uudelleen ja tämän jälkeen flashataan ‘button.bin’ Discoveryn flash-muistiin.
[size=150]Dokumentaation “kääntäminen”[/size]
Jos haluaa libopencm3:n (heikkoa, lähes olematonta) dokumentaatiota lukea selaimen kautta, kannattaa tehdä seuraavat toimenpiteet:
sudo apt-get install doxygen
cd ~/tmp/libopencm3
doxygen Doxyfile
Tämä luo dokumentaation html-muotoisena ja sitä pääsee näppärästi lukemaan kirjoittelemalla selaimen osoiteriville file:///home/KÄYTTÄJÄTUNNUS/tmp/libopencm3/doxygen/html/index.html
[size=150]Loppusanat[/size]
Tässä lyhykäisyydessään kehitysympäristön pystyttäminen Discoverylle uusimpaan Ubuntuun. Ikävä kyllä oma kokemukseni gdb:stä jne on sen verran heikkoa, etten siitä nyt alkanut mitään vielä kirjoittelemaan, mutta stlinkin kautta senkin pitäisi onnistua. Jos tuntuu, ettei libopencm3:n käyttö oikein luonnistu, examples-hakemistoa selailemalla löytyy jonkin verran esimerkkejä. Ei kannata rajoittua prossukohtaisiin esimerkkeihin, myös muille prosessoreille tehtyjen esimerkkien koodia voi hyödyntää varsin hyvin. Ja jos esimerkkiä ei löydy, niin koodia lukemaan
Kannattaa myös muistaa päivittely välillä, se onnistuu helposti (jos ei tmp-kansiota poista) menemällä sopivaan kansioon, vaihtamalla ‘git clone ’ -komento ‘git pull’ -komentoon ja seuraamalla ohjeet loppuun.
Kommentteja otetaan vastaan ja niitä saatetaan myös lukea. Oppaan ei ole tarkoitus olla kaiken kattava, mutta hyvään alkuun tällä pääsee. Toivottavasti tämä kuitenkin herättelee keskustelua aiheesta ja kenties hyviä koodivinkkejäkin näkyisi aiheen tiimoilta.
[size=150]Lähteet[/size]
github.com/esden/summon-arm-toolchain/
github.com/texane/stlink/
libopencm3.org/wiki/Main_Page
//edit 03.09.2012: Yksi huomaamani bugi korjailtu.