ARM Cortex-M ohjelmointi ja Mbed OS

Julkaistu: lauantai 25.1.2020

Mbed OS on avoimen lähdekoodin Cortex M -prosessoreille suunniteltu käyttöjärjestelmä, suunniteltu erityisesti IoT-laitteille (Internet Of Things). Käyttöjärjestelmä tarjoaa paljon valmiita rajapintoja aina GPIO-pinnin ohjauksesta kompleksisimpiin ajurirajapintoihin.

Ohjelmointi Mbed OS:lle tapahtuu C++ ohjelmointikielellä ja ohjelmointiympäristönä toimii online-palvelu Mbed.org. Palvelu vaatii rekisteröitymisen, mutta se on nopeaa ja rekisteröidyttyään käytössä on lähes täyden palvelun IDE (Integrated Development Environment).

Tässä kirjoituksessa käydään lyhyesti läpi STM32 Nucleo kehitysalustan ohjelmointia Mbed.org -kehitysympäristön avulla. Tarkka malli käytettävälle kehitysalustalle on NUCLEO-F429ZI, mutta periaatteessa mikä tahansa Nucleo levy kelpaa, kunhan vain pinnimääritykset asettaa oikein. Kehitysalustalle ohjelmoidaan ledin vilkutus, joka toimii ponnahduslautana monimutkaisempiin ohjelmiin.

Tässä kirjoituksessa käytetyn kehitysalustan voi ostaa mm. Mouserin verkkokaupasta:

Nucleo kehitysalustan Mouser-linkki

https://www.mouser.fi/ProductDetail/STMicroelectronics/NUCLEO-F429ZI?qs=mKNKSX85ZJcE6FU0UkiXTA==

Edellä mainitut asiat on tehty aika helpoksi, jos on vähänkään ymmärrystä mikroprosessorien ohjelmoinnista (esim. Arduinosta) ja osaa lukea manuaalia/ohjeita. Tämä kirjoituskin on lähinnä suomennos, lisättynä omakohtaisella kokemuksella aiheesta.

Mbed.org rekisteröinti

Ensiksi täytyy (kehitysalustan hankinnan jälkeen) rekisteröityä palveluun. Käyttäjätunnuksen ja salasanan luonnin jälkeen voidaan siirtyä online-IDE:n pariin:

Mbed OS lyhyesti

Mbed OS on suunniteltu helppokäyttöiseksi ja modulaariseksi käyttöjärjestelmäksi, mihin voidaan lisätä tarvittavia laiteajureita esimerkiksi erilaisia anturointeja ja/tai langattomia yhteyksiä varten.

Laiterajapintojen (API) avulla antureiden ja muiden ARM-prosessorille kytkettyjen oheislaitteiden käyttäminen on suhteellisen kivutonta, mutta toisinaan voi joutua "kikkailemaan" - kuten sulautetuissa järjestelmissä saattaa joskus käydä.

Lisää ominaisuuksista voit lukea Mbed.org:in sivuilta: https://www.mbed.com/en/platform/mbed-os/#features.

Mbed kääntäjä, ohjelmointiympäristö (IDE) ja uuden projektin luonti

Osoitteesta https://ide.mbed.com/compiler pääsee kirjautumaan ohjelmointiympäristöön (IDE), missä varsinainen koodi ja sen kääntäminen tapahtuu. Kyseessä on siis selaimella toimiva ohjelma, joten mitään asennuksia tietokoneelle ei tarvita. Tämä voi tietysti joitain ihmisiä ahdistaa, mutta toisaalta tämä on aika kätevää, koska koodit kulkevat aina mukana (sikäli mikäli kenelläkään niitä varsinaisesti tarvitsee kanniskella...).

Kun on kirjauduttu sisään, avautuu IDE:n perusnäkymä (kuvaa pienennetty), mistä voidaan aloittaa uuden projektin luonti tai jatkaa edellisiä kesken jääneitä koodauksia.

Mbed ohjelman perusnäkymä
Mbed perusnäkymä

Platformin tai käytettävän kehitysalustan voi valita Mbed perusnäkymän oikeasta reunasta:

Kehitysalustan tai platformin valintanappi
Kehitysalustan tai platformin valintaikkuna

Kun alusta tai platform on valittu, päästään uuden projektin luontiin vasemman yläkulman valikosta New -> New Program...

Uuden ohjelman luonti valikosta New
Mbed.org Uuden ohjelman luonti-ikkuna ARM ohjelmointi
Uuden ohjelman luonti-ikkuna

Uusi ohjelma ikkunasta voidaan valita alusta (Platform) ja myös mahdollinen koodipohja (Template). Koodipohjat tarjoavat paljon valmiita esimerkkejä, joista voi hyvin tutkia kuinka mikäkin ohjelma on toteutettu.

ARM ohjelmointi Ohjelman luonti koodipohjan avulla.
Ohjelman luonti koodipohjan avulla.

Tässä kuitenkin valitaan nyt yksinkertaisuuden vuoksi "Blinky LED test for the ST Nucleo Boards" ja annetaan sille haluttu nimi. Lopuksi painetaan OK, jolloin ohjelma luo uuden projektin, missä on valmiina ledin vilkutuskoodeja. Tuplaklikataan tiedostopuussa olevaa main.cpp tiedostoa ja avataan editori-ikkunaan pääohjelman koodi.

Tiedostopuusta nähdään projektin rakenne ja tiedostot
Tiedostopuusta nähdään projektin rakenne ja tiedostot
ARM ohjelmointi Koodieditoriin avautuva näkymä
Koodieditoriin avautuva näkymä

STM32 Nucleo -levyn ohjelmointi

Kun koodi on avattu/tehty, Nucleo-levyn ohjelmointi tapahtuu klikkaamalla IDE:n yläreunassa olevaa "Compile" nappia:

Mbed IDE Ohjelman käännösnapin sijainti
Ohjelman käännösnapin sijainti

IDE-alkaa kääntämään tehtyä ohjelmaa konekielelle ja ruutuun ilmestyy alla oleva ikkuna:

Mbed.org Status-ikkuna
Status-ikkuna

Kun käännös on valmistunut, selain lataa automaattisesti ohjelman käännetyn tiedoston. Tarkista selaimesi lataus-ikkuna käännöksen jälkeen:

Mbed org ohjelmatiedoston lataus
Käännetty ohjelma latautuu koneellesi .bin -tiedostona.

Ilmoitus onnistuneesta käännöksestä tulee myös IDE:n "output" ikkunaan koodieditorin alapuolelle. Samoin tähän ikkunaan tulee kaikki virheet ja muut varoitukset, joita mahdollisesti tapahtuu käännöksen aikana.

Ilmoitus onnistuneesta käännöksestä.

Nyt voidaankin kytkeä Nucleo levy tietokoneeseen kiinni ja ohjelmoida ARM-prosessori.

Ohjelman "poltto" ARM-prosessorille ja toiminnan toteaminen

Kytkettyäsi Nucleo-levyn tietokoneeseen, pitäisi Oma Tietokone -ikkunassa näkyä uusi levyasema:

Levyn nimessä on käytetty prosessorityyppi, joten sen voi tunnistaa esimerkiksi siitä.

Nyt aiemmin ladattu .bin tiedosto yksinkertaisesti vain kopioidaan aseman juureen ja ohjelmointiprosessi tapahtuu automaattisesti. Lopuksi voidaan tarkastella ohjelman toimintaa ja ihmetellä, kuinka helpoksi se tämäkin asia on nykypäivänä tehty!