Hlavní navigace

Poďte sa naučiť programovať mikroradiče ARM!

27. 2. 2014 13:05 | lubomirpatek

Kam? Na Texaskú univerzitu v Austine. Samozrejme, že tam nemusíte dochádzať – môžete sa učiť z pohodlia domova. Univerzita ponúka kurz programovania vstavaných (embedded) aplikácií prostredníctvom vzdelávacieho portálu edX. Prednášajúci Jonathan Valvano a Ramesh Yerraballi sľubujú, že vás v kurze naučia všeobecné základy programovania jednočipových mikroradičov, teda nejde o kurz špeciálne zameraný na programovanie procesorov ARM – to si len autori kurzu vybrali ako učebnú pomôcku skúšobnú dosku s mikroradičom Texas Instruments TM4C123 založeným na jadre ARM Cortex M4.

Ako vývojové prostredie budete používať Keil uVision, ktoré sa dá s určitými obmedzeniami používať zdarma. Obmedzenia by nemali začiatočníka nijako obmedziť – limit na kompilovanie a debugovanie je 32 kilobajtov. Ďalšie obmedzenia si môžete pozrieť na stránke výrobcu.

Možno sa niekomu bude zdať použitie procesora ARM Cortex M4 na učenie sa základov programovania a návrhu vstavaných systémov trocha prehnané, ale na univerzite na kurz nadväzujú dva pokročilejšie kurzy a zanedbateľný nie je ani fakt, že Texas Instruments predáva dosky za 13 dolárov (bez jedného centu). S frekvenciou hodín 80 MHz, 256kB flash pamäte, 32kB RAM, USB radičom, ladiacim (debugovacím) rozhraním a 12 bitovými A/D prevodníkmi vám chvíľku potrvá, kým narazíte na výkonové či funkčné hranice tohoto procesora.

Použitie mikroradičov ARM vo výuke sa dá naopak považovať za výhodu, pretože rad Cortex M vypĺňa medzeru medzi výkonnejšími aplikačnými procesormi a klasickými osem alebo šestnásť bitovými mikroradičmi, takže budete začínať niekde uprostred a neskôr by vám nemalo robiť problémy vydať sa či už smerom k jednoduchším mikroradičom, alebo pokračovať v zdokonaľovaní sa v architektúre ARM.

Keďže je tento kurz založený na skutočnom kurze EE319K „Introduction to Embedded Systems“, ktorý inštruktori vyučujú na univerzite v Austine, je pochopiteľné, že sa snažia študentov zoznámiť s architektúrou a s vývojovým prostredím, s ktorými sa budú stretávať aj vo svojej profesionálnej praxi a preto im náročný čitateľ tohto portálu iste odpustí, že nemysleli práve naňho a na jeho obľúbený operačný systém, či na jeho presvedčenie používať výhradne GNU nástroje. Podľa stránky kurzu žiaľ nie je vôbec možné spustiť odporúčané vývojové prostredie pod Linuxom. V prípade OSX sa spomína aspoň možnosť spustiť ho vo virtuálnom stroji, ale v prípade Linuxu ani to nie, takže väčšine záujemcov o kurz z radov čitateľov Roota ostávajú asi len dve možnosti – buď vytiahnuť spod postele nejaký ten starý počítač s Windowsom (stačí XP) a aspoň jedným USB portom, alebo si poradiť s nástrojmi GNU. V druhom prípade ale prídete o možnosť známkovania úloh, ktorá je podmienená použitím vývojového prostredia Keil uVision.

Kurz už síce začal 22. januára, ale tento kurz nemá pevné termíny úloh a skúšok, takže začať môžete hocikedy v priebehu kurzu. Aby som bol presnejší, na všetky úlohy existuje jeden termín, a tým je ukončenie kurzu 14. mája 2014. Tento prístup umožňuje študentom začať kedykoľvek v priebehu kurzu a určovať si tempo učenia podľa potreby, ale na druhej strane predpokladá zo strany študentov o niečo väčšiu disciplínu ako tie kurzy, ktoré vás každý týždeň donútia naštudovať si aspoň toľko, aby ste mohli spraviť testy.

Kurz začína celkom pozvoľna a ak máte nejakú predstavu o tom, čo to je elektrické napätie, prúd, či odpor a aspoň skromné skúsenosti s programovaním (stačí ak vám nie sú cudzie pojmy ako sú premenné, funkcie, slučky a máte základnú predstavu o zápise v rôznych číselných sústavách), niekoľko úvodných týždňov zvládnete bez väčšej námahy.

Neskoro nie je ani na objednanie si vývojovej dosky, ktorú si môžete objednať priamo u výrobcu. Úlohy si zatiaľ môžete robiť v simulátore a keď vám doska príde, dorobíte už len „ostré“ testy. Autori kurzu odporúčajú prikúpiť si k doske aj nejaké súčiastky – skúšobnú dosku („breadboard“), nejaké rezistory, tlačítka, LED a konektory v celkovej cene okolo 40 dolárov, ale ak chete ušetriť, určite si poradíte – stačí sa popozerať po šuflíkoch, či rozobrať nejakú už nepotrebnú elektronickú vecičku. Aby ste si mohli spraviť predstavu, celá súprava vyzerá takto.

Čo sa v kurze naučíte?

Autori kurzu sľubujú, že študentov oboznámia so všeobecnými princípmi navrhovania obvodov s mikroradičmi a ich programovania v jazyku C a že navyše pridajú zopár praktických rád. Pripravte sa, že po úvodných lekciách, v ktorých sa oboznámite, resp. si zopakujete základy elektroniky, digitálnych obvodov a jazyka C, začnete s jednoduchými úlohami ako je snímanie stavu tlačítiek, či ovládanie výstupov (blikanie LED). Postupne sa dostanete aj k zaujímavejším veciam – D/A prevodom, generovaniu zvuku, A/D prevodom, ovládaniu displeja, grafike, prerušeniam a komunikácii.

Obvody budete najprv simulovať v simulátore a neskôr si ich môžete postaviť a odladiť na skutočnom mikroradiči. Na konci kurzu by ste mali byť schopní postaviť si vlastnú jednoduchú hru. O tej hre som sa dozvedel len toľko, že si ju môžete spraviť buď v simulátore, alebo s reálnym displejom z Nokie 5110, môžete si vybrať.

Ak sa chcete dozvedieť viac, na stránke kurzu už nájdete kompletné materiály na prvých jedenásť týždňov, takže ak si chcete spraviť bližšiu predstavu, stačí sa prihlásiť. Autori pridali aj odkaz na samostatnú stránku, ktorá obsahuje materiály pre celý kurz. V tomto prípade ide o texty v „surovom“ tvare, z ktorých pripravovali kurz a ktoré sú vhodné na prezeranie aj mimo portálu edX. Na každý týždeň je to jedna webová stránka s textom, vloženými videami, obrázkami a krátkym testom na konci, vhodná napríklad na offline učenie, ale nie sú tam zahrnuté programovacie úlohy a videá neobsahujú titulky. Niekomu to môže vyhovovať viac, ako učenie sa cez rozhranie edX.

Celková dĺžka kurzu je 15 týždňov (ostáva vám teda ešte celých jedenásť). Jeho autori odhadujú, že štúdiom by ste mali stráviť približne 10 hodín týždenne, ak ho budete robiť kompletne – teda s cvičeniami, skúškami, úlohami a odporúčanou skúšobnou doskou. Len takto môžete získať certifikát potvrdzujúci že ste kurz navštevovali.

Ak certifikát nepotrebujete, neostáva vám toľko času, nechcete investovať do dosky, alebo len neviete, či bude kurz pre vás vhodný, stále sú tu možnosti, ako sa ho zúčasniť.

Kurzu sa môžete zúčastniť aj bez toho, aby ste si kupovali dosku – v tom prípade môžete robiť laboratórne cvičenia v simulačnom móde v IDE Keil uVision a malo by vám to zabrať asi päť až šesť hodín týždenne.

Ak chcete len sledovať videá, mali by vám stačiť dve až tri hodiny týždenne. Ak si chcete popritom robiť úlohy na nejakej inej doske (môžete použiť hoci aj Arduino, ak ho už máte a aspoň trocha poznáte, alebo niektorú z dosák spomenutých na konci článku), nejaký čas si pripočítajte – koľko, to už záleží na úrovni vašich znalostí.

Ako vidíte, možností je veľa, kurz vás do ničoho nenúti, stačí sa len prihlásiť. A ak by ste náhodou zistili, že kurz je zatiaľ nad vaše možnosti, nerobte si starosti, väčšina kurzov na edX sa zvykne opakovať, takže sa môžete prihlásiť v niektorom z nasledujúcich termínov.

Pre koho je kurz určený?

Online kurz je založený na kurze bežne vyučovanom na univerzite v prvom ročníku, ale podobne ako všetky kurzy na edX je aj tento upravený pre online štúdium a je určený pre širokú verejnosť. Kurz môže pomôcť vysokoškolákom, nemal by odradiť ani šikovnejších stredoškolákov, vhodný je aj pre tých čo sa učia na inej platforme a radi by sa zoznámili (aspoň zľahka) s architektúrou ARM a tiež pre všetkých nás ostatných, čo sme sa nikdy nenaučili programovať tie malé čierne šváby, ale vždy sme po tom túžili.

Na koniec snáď ešte poznámka k vyučovaciemu jazyku – kurz je samozrejme prednášaný po anglicky. Ak vás elektronika, výpočtová technika či programovanie baví, ale vaša angličtina by ešte potrebovala trocha vylepšiť, takýto kurz je výborná príležitosť. Videá si môžete pozerať dookola a jazykovo menej zdatným pomôžu titulky, ktoré je možné sledovať vedľa videonahrávok. Čitateľov, ktorí potrebujú získať v používaní jazyka väčšie sebavedomie, možno po pozretí si videí povzbudí zistenie, že ani všetci vysokoškolskí pedagógovia nemajú výslovnosť ako britská kráľovná a uživia sa, takže ani s vami to možno nebude až také zlé ako ste si doteraz mysleli.

Učebnica

Ku kurzu existuje aj učebnica, ktorej autorom je jeden z prednášajúcich J. Valvano, ale kupovať si ju nemusíte – kurz bude obsahovať všetky informácie potrebné pre jeho absolvovanie, ktoré pochádzajú práve zo spomínanej učebnice. Ak chcete vedieť, či sa vám oplatí dať za túto približne 500 stranovú knihu zhruba 40 dolárov, pozrite si jej obsah. Kniha je prvým dielom z trojdielnej série, ktorej ďalšie dva diely sa venujú pokročilejším operáciám v reálnom čase a operačným systémom; sú to tiež učebnice k pokročilejším kurzom.

Čo všetko teda dostanete?

Poďme si to spočítať – zadarmo dostanete úvodný kurz do programovania jednočipových mikroradičov UT.6.01×, IDE Keil uVision (demoverziu, ktorá je postačujúca na tento kurz a pravdepodobne aj na ďalšie štúdium či experimentovanie), učebné texty, videá s titulkami, pdf súbory s obrázkami z videí a ak chcete, aj certifikát. Ten síce nie je možné použiť ako dôkaz o štúdiu, ale niekomu možno tento kus papiera, hoci len elektronického, spraví radosť. V tom prípade ale už budete musieť investovať najmenej 13 dolárov za dosku LaunchPad, ku ktorým si pripočítajte ešte nejaké drobné na poštovné a ďalšie súčiastky. No a podľa vašej úrovne a toho, akú náročnú cestu si vyberiete, pridajte ešte takých 30 až 150 hodín času.

Alternatívne dosky

Autori sa na stránkach kurzu vyjadrujú, že ak nepotrebujete certifikát, môžete použiť aj inú ako predpísanú dosku. Ja by som ešte dodal – ak nie ste úplní začiatočníci, dokážete sa orientovať v katalógových listoch a prispôsobiť si programy použité v kurze podľa použitého procesora a kompilátora. Ak nechcete či nemôžete použiť IDE Keil uVision (napríklad ak chcete použiť autormi spomenuté Arduino), budete si musieť vedieť poradiť s inými vývojovými nástrojmi.

Zdá sa teda, že pre úplných začiatočníkov bude najvýhodnejšie kúpiť si predpísanú dosku a experimentovať až neskôr.

Ak vás predsa len zaujíma, aké iné dosky s procesormi založenými na jadre ARM Cortex M sú k dispozícií, vybral som pre vás dve – Discovery od ST a FRDM od Freescale, ale podobné dosky predáva za podobné ceny (cca 10 – 20 USD) viac výrobcov.

Freescale ponúka niekoľko dosiek pod názvom Freedom (FRDM) s procesorom založeným na jadre Cortex M0+. Tieto dosky ma zaujali tým, že obsahujú navyše 3D akcelerometer, 3D magnetometer, dotykovú plochu, segmentový LCD displej, trojfarebnú LED, či svetelný senzor (záleží od typu, nie každá doska obsahuje všetky tieto periférie). Tieto dosky sú rozmerovo aj pinovo kompatibilné s Arduinom UNO R3 – to znamená, že k nimi môžete pripojiť prídavné dosky (tzv. „shields“) navrhnuté pre Arduino. Za to všetko chcú asi o dva až päť dolárov viac, ako za dosku odporúčanú pre kurz.

Zaujímavé sú tiež vývojové dosky Discovery od ST, ktoré sa vyrábajú s procesormi založenými na jadrách Cortex M0 až M4 a obsahujú od jednej LED a spínača (najjednoduchšia), až po dosku obsahujúcu dotykovú plochu, gyroskop, 3D akcelerometer, 3D magnetický senzor alebo audio DAC so zosilňovačom pracujúcim v triede D. Dosiek je veľa, pozrieť si ich môžete na stránke výrobcu. Zaujať vás môžu aj dosky Nucleo (tiež od ST), ktoré sú pinovo kompatibilné s Arduinom.

Každý výrobca procesorov pridáva do jadra Cortex M svoje vlastné obvody/periférie, takže ak chcete použiť nejakú inú dosku, je vhodné si preštudovať katalógové listy k doskám, prípadne aj k procesorom.

Všetci výrobcovia sa okrem toho pýšia rôznymi pre autora tohto článku zatiaľ záhadnými možnosťami debugovania s ešte záhadnejšími názvami, ktoré by bolo tiež vhodné pred výberom dosky preskúmať podrobnejšie.

Niektorí výrobcovia dodávajú k doskám aj skúšobné verzie vlastných vývojových prostredí, ale v kurze použité prostredie Keil uVision by malo byť použiteľné aj na prácu s doskami iných výrobcov, obsahujúcimi procesory založené na architektúre ARM.

Ak teda chcete spoznať všetky periférie, ktoré ponúkajú napríklad spomenuté dosky FRDM či Discovery (a naučiť sa s nimi robiť), máte o zábavu postarané na dosť dlho a navyše si nemusíte robiť starosti so zaobstarávaním a pripájaním tých krpatých minisúčiastok, veľkých asi ako hlavička zápalky, z ktorých už dnes navyše ani netrčia žiadne nožičky ako to bolo zvykom kedysi, takže by ste ich nakoniec aj tak nepripojili. Ale práca so zložitejšími perifériami príde na rad až po naučení sa základov a teda bude stačiť, ak sa po podobných doskách začnete obzerať až po ukončení tohoto kurzu.

Ďalšie zaujímavé kurzy

Ak vás vás zaujíma aj to, čo sa deje vo vnútri procesora, 17. februára začal (tentoraz nie na portáli edX, ale na podobnom portáli Coursera) kurz „Digitálne systémy: Od logických obvodov k procesorom“, ktorý ponúka univerzita UAB v Barcelone a v ktorom vás naučia navrhnúť si vlastný procesor, alebo aspoň taký malý cvičný miniprocesorček. Tento kurz vás navyše pri výbere jazyka neobmedzuje len na výber angličtiny – štúdium si môžete vybrať aj v španielčine.

A nezabudnite si pozrieť aj ponuku ostatných kurzov na Coursera či na edX, určite tam nájdete mnoho ďalších zaujímavých tém.

Ak máte skúsenosti s vývojom pre architektúru ARM pomocou GNU nástrojov (a máte nejaké rady vhodné pre začiatočníkov), či skúsenosti s prácou so skúšobnými/vývojovými doskami vhodnými pre začiatočníkov od iných výrobcov, nezabudnite sa podeliť s ostatnými čitateľmi Roota v diskusii pod týmto článkom.