česky english Vítejte, dnes je čtvrtek 21. listopad 2024

Vývoj bez kompromisu s procesory ARM

DPS 6/2011 | Články
Autor: Ing. Jan Weinbrenner

Cílem následujícího seriálu článků je seznámit vývojáře a širší odbornou veřejnost s posledními trendy ve vývoji digitální a spotřební elektroniky, kdy se zaměříme na zařízení, která můžeme potkat v každodenním životě. Budeme se tedy pohybovat v oblastech, jako jsou chytré mobilní telefony, navigace, čtečky elektronických knih či tablety. V našem seriálu článků postupně probereme hlavní komponentu těchto zařízení, tedy procesory ARM. Povíme si něco o jejich historii a možnostech použití do budoucna, představíme podrobněji jednoho zástupce a také jeho vývojový kit. A protože má vývojový kit konektor, kde jsou vyvedeny signály procesoru, tak si ukážeme i jeho začlenění do některé aplikace. Postupně půjdeme od celkové představy více a více do hloubky až k podrobnostem.

Budeme se na to dívat z pohledu člověka, který již má za sebou konstrukci různých zařízení, ale ARM procesory jsou pro něho nové. Kdysi začal u 8bitových mikroprocesorů, postupně přešel až k 32bitovým, např. AVR32, či signálovým procesorům, ale s takto komplexním systémem se setkává poprvé. Zmíněné procesory jistě umožňují zkonstruovat spousty funkčních zařízení, ale pokud je potřeba nějaká rozšířená funkce, jako třeba připojení USB disku, SATA disku, NAND flash pamětí a dalších, snadno zjistíme, že to samozřejmě lze, ale za cenu nezměrného úsilí. Bude to taky pohled konstruktéra, který již narazil na limity toho, co lze z pohledu jednoho vývojáře nebo menší vývojové skupiny zvládnout. Ale také z pohledu člověka, který se musí smířit s tím, že přestane mít celý svůj vývoj pod kontrolou a jako jádro svého vývoje použije nějaký základní procesorový modul od některého renovovaného výrobce a jako systémové prostředí některou distribuci Linuxu. Jako vždy je to však cesta kompromisů. Spousty práce již zde někdo vykonal za nás a nemusíme se jí zabývat a na druhou stranu je potřeba nastudovat věci, které s tím, co děláme, na první pohled nesouvisí. Bude to pohled člověka, který si bez znalostí této technologie zakoupil vývojový kit, připojil VGA monitor, USB klávesnici a myš a spustil jednoduchou aplikaci, kterou naprogramoval ve Visual studiu v C++ na svém počítači. A to vše během jednoho dne. Na druhou stranu člověka, který zjistil, že základní katalogový list procesoru má asi 5000 stránek v pdf souboru, takže je co studovat, pokud bude potřeba přidat některou zvláštní funkci.

Co se tedy pod zkratkou ARM ukrývá?

Tuto odpověď nám asi nejlépe poskytne Wikipedie [1] ARM je architektura procesorů vyvinutá v Británii firmou ARM Limited. Starší obchodní název architektury ARM je Advanced RISC Machine, původní název je Acorn RISC Machine. Tato architektura způsobila v několika směrech revoluci v informačních technologiích. Její návrh se řídil filosofií RISC. Neméně pozoruhodné je, že první procesory ARM byly založeny na GaAs polovodičích, které dovolily na tehdejší dobu velmi vysoké taktovací frekvence. Rovněž použitá 32bitová šířka slova nebyla v době vzniku ARMu samozřejmostí. První mikroprocesor s architekturou ARM byl navržen firmou ARM Limited v roce 1984.

V roce 2007 byla architektura ARM zastoupena v 98 % ve více než jedné miliardě každoročně prodaných mobilů.

Firma ARM časem ustoupila od výroby procesorů a místo toho se soustředila pouze na jejich vývoj. Schéma procesorů ARM je tedy „intelektuálním vlastnictvím“ firmy ARM, která od výrobců hardware vybírá licence za jeho použití. Procesory ARM je dnes možné najít ve všech odvětvích spotřební elektroniky, od PDA, mobilních telefonů, multimediálních přehrávačů, přenosných herních konzolí, kalkulaček až po počítačové periférie (pevné disky, routery). Procesory ARM mají pod svým vlastním názvem ve svém výrobním programu desítky výrobců, např. procesory XScale od firmy Marvell, OMAP od firmy Texas Instruments nebo i.MX od firmy Freescale.

Architektura ARM se nejvýrazněji uplatňuje ve vestavěných systémech [1].

Co stojí za výrazným rozšiřováním těchto součástek?

Jako hlavní důvod vidím stále menší nárůst výkonu procesorů ukrytých ve stolních počítačích v poslední době. Pokud se podíváme do plánů vývoje dvou hlavních výrobců procesorů x86 kompatibilních, tak vidíme ve výhledech do několika následujících let jen malý přírůstek výkonu. Uvidíme v nich, že se zvětšuje počet jader, pomalu roste frekvence, ale v konečném důsledku reálný výkon roste jen po procentech. Výkon těchto procesorů nebude v dohledné době natolik dostatečný, aby např. rozpoznal v použitelné podobě lidský hlas. Snadno také zjistíme, že vzhledem k počtu činností, které na počítači běžný člověk vykonává, je výkon stolního počítače nadbytečný. Knihu si lze přečíst na elektronické čtečce knih při spotřebě 100 mW stejně dobře jako na stolním počítači, který je schopen zahřát místnost. Z toho si tedy lze velmi snadno odvodit, že výkon stolních počítačů a přenosných zařízení se k sobě přibližuje a snad už jenom výkonné grafické karty se této situaci vymykají.

Není jistě bez zajímavosti, že nejnovější verze Windows bude vydána i pro tyto procesory.

Lze popsat architekturu procesoru ARM?

Ano, lze. Jako příklad zvolíme zástupce ARM procesoru od firmy Freescale typu i.MX535. Vybral jsem ho proto, že lze k němu zakoupit velmi levně vývojový kit, který později představím a na který se budu odkazovat.

Vývoj bez kompromisu s procesory ARM 1.jpg

Obr. 1 Vnitřní architektura procesoru ARM (Freescale i.MX535D)

Pro první představu o této součástce si pomůžeme obrázkem. Na obr. 1 je vidět, o jak ucelený procesor se jedná. Je to vlastně počítač na čipu, ke kterému se připojuje pouze externí periférie. Jelikož zde nechci zastupovat katalogový list, tak si uvedeme jenom základní vlastnosti.

Jedná se o procesor řady ARM Cortex A8 s maximální frekvencí 1 GHz, který je možné charakterizovat pomocí následujících interních periférií:

  • řadič paměti DDR2 a DDR3 o maximální frekvenci 800 MHz
  • řadič moderních pamětí NAND flash typu SLC i MLC
  • řadič SATA i PATA disků
  • grafický akcelerátor s podporou OpenGL, grafický 3D i 2D akcelerátor
  • USB 2.0 porty s rychlostí 480 Mbs
  • signály pro připojení LCD displeje, VGA displeje i LVDS displeje
  • řadič LAN sítě
  • řadič sensoru obrazu
  • slot pro připojení tří SD karet
  • podpora šifrování
  • porty SPI, UART, SPDIF, CAN a další standardy.

Výše uvedený procesor se vyrábí v pouzdře BGA s 529 vývody s cenou asi 20 USD.

Jaký výkon lze od procesoru očekávat?

Zde nám nezbývá, než se divit. Po vybalení zásilky s kitem jsem k němu připojil VGA monitor, do konektoru pro micro-SD jsem zasunul paměťovou kartu a připojil napájecí zdroj, který je také součástí dodávky. Po chvíli se k mému překvapení objevilo na monitoru grafické prostředí Linux Ubuntu. Do USB portu jsem potom připojil myš a klávesnici a ty hned fungovaly.

Jelikož se na ploše také objevila ikona pro test HD videa, hned jsem to vyzkoušel – běželo to netrhaně. Moc jsem tomu zpočátku nevěřil a tak jsem také vyzkoušel USB klíč s vlastím videem, ale opět vše běželo bez problému. Až zpětným pohledem do katalogového listu jsem zjistil, že procesor má hardwarovou podporu dekódování videa 1080p a kódování videa 720p.

Vývoj bez kompromisu s procesory ARM 2.jpg

Obr. 2 Komerčně dostupná dceřinná deska s procesorem i.MX535

Nyní asi každého napadne, co je na tom zvláštního. Vždyť to dnes umí každý, i ten nejslabší počítač. Ale tady je potřeba si uvědomit následující souvislosti. V tomto případě pracujeme s procesorem, který má spoustu periférií a tím spoustu možností pro komunikaci s okolím. Kromě vývojového kitu, který budu dále popisovat, dodává několik firem tento procesor napájený na malé destičce spolu s pamětí a napájecími obvody. Destička potom má DIL anebo jiné konektory pro instalaci do vyvíjeného zařízení. Naší úkolem je potom vývoj mateřské desky, což je ale už snadný úkol. Ale zde je hlavní rozdíl oproti různým standardním PC v mikroprovedení a tímto procesorovým modulem: zatímco k oběma zařízením celkem snadno připojíme například web kameru, tak např. DA převodník k nějakému počítači po SPI nepřipojíme, zatímco u modulu s procesorem ARM to je velmi snadné.

Jeden z komerčně dostupných procesorových modulů vidíme na následujícím obrázku. Modul o rozměrech 80×45 mm má ze spodní strany tři 100pinové konektory pro připojení do vyvíjeného zařízení.

Je seznámení s procesory finančně náročné?

Není. Zde je několik možností, které lze snadno dohledat na internetu. Za zmínku stojí třeba open source projekt Beagleboard XM, který obsahuje konkurenční procesor OMAP 35X od firmy Texas Instruments. Já jsem zvolil produkt firmy Freescale i.MX53 Quick Start Board. Mám velmi dobré zkušenosti s technickými informacemi v dokumentech této firmy, přičemž nemalou výhodou je také vývojové zastoupení v naší zemi. Tento produkt jsem zakoupil u firmy Farnell za cenu asi 2700 Kč bez DPH.

V této ceně obdržíme vývojový kit s procesorem o frekvenci 1 GHz a 1 GB DDR3 RAM, který má vyvedenu spoustu periférií na konektory. Součástí balení je také napájecí zdroj a SD karta s nainstalovaným Ubuntu Linuxem. Protože se jedná o Linux, tak jsou samozřejmě k dispozici zdrojové texty a překladač C++. Kit umí bootovat jak z SD karty tak i SATA hardisku, a tak se obejdeme bez programátoru pamětí. Tak je možné začít vyvíjet embedded zařízení za zlomkovou cenu oproti jiným, třeba jen 8bitovým kitům, přičemž možnosti tohoto vývojového kitu jsou nesrovnatelné.

Jak vlastně vývojový kit i.MX53 Quick Start Board vypadá a co obsahuje?

Součástí dodávky je vlastní vývojový kit, napájecí zdroj 5 V/2 A, karta s instalací Linux Ubuntu a DVD-ROM medium se zdrojovými kódy a dokumentací. Vlastní vývojový kit je vidět na obr. 3. Je to osmivrstvá deska plošného spoje o rozměrech 75×75 mm, která obsahuje následující konektory pro komunikaci s okolím:

  • 3× USB port
  • 1× výstup na VGA monitor
  • 2× pro SD-kartu
  • konektor pro JTAG
  • sériový port
  • konektor pro připojení SATA hardisku
  • LAN síť
  • 3,5mm konektor pro audio vstup a výstup
  • rozšiřující konektor s vyvedenými signály procesoru.

Vývoj bez kompromisu s procesory ARM 3.jpg

Obr. 3 Perspektivní pohled na vývojový kit i.MX53 Quick Start

Máme zde tedy několik UART portů, několik SPI portů atd. Jako důležitá součást je zde také rozhraní pro připojení rezistivní dotykové plochy a vlastní piny pro připojení LCD panelu. Ze spodní strany je napájen konektor pro případné připojení LVDS monitoru.

A co vývoj software?

Jelikož se jedná o první díl seriálu článků, tak si to nyní jen nastíníme. Jako první možnost se samozřejmě jeví dodávaný Ubuntu Linux a překladač C++. Z internetu lze také zdarma stáhnout diskový obraz pro operační systém Window Embedded Compact 7 a také Android. Od firmy Microsoft lze také zdarma stáhnout instalační balík (funkční 180 dní) do Visual studia. Ten umožňuje přeložit a zlinkovat vlastní obraz instalace Windows Embedded Compact 7. Další zkušenosti lze získat a sdílet na Internetu na velmi aktivní stránce imxcommunity.org.

Vývoj bez kompromisu s procesory ARM 4.jpg

Obr. 4 Instalace Ubuntu na i.MX53 QSB kitu

Jako malou „ochutnávku“ si zde uvedeme obrázky vyfotografované z monitoru připojeného k vývojovému kitu (udělat použitelné fotografie CRT VGA monitoru je celkem problém). Na prvním obrázku je vidět instalace Linux Ubuntu a na druhém obrázku je vidět instalace Windows Embedded Compact 7 s jednoduchou aplikací vygenerovanou pod wizardem ve Visual studiu 2008, kde byla také přeložena.

Vývoj bez kompromisu s procesory ARM 5.jpg

Obr. 5 Instalace Windows Embedded Compact 7 s aplikací na i.MX53 QSB kitu

Co říci na závěr úvodu tohoto seriálu?

Je to možná poprvé v životě, co se mi do ruky dostala vývojová platforma, která za velmi nízkou cenu umožňuje zkonstruovat velmi sofistikované konstrukce.

Potřebujeme sestavit HD kameru? Připojíme snímač obrazu na vyvedené vstupy a do SATA portu připojíme např. SSD disk. A co čtečku knih s bezdrátovým připojením do internetu? K tomu je potřeba připojit dotykový displej a zasunout hifi SD kartu do odpovídajícího slotu modulu. Naopak připojením GSM a GPRS modulu a LCD displeje lze zhotovit funkční mobilní telefon s navigací. S dávkou nadsázky tak sestavíme velký iPhone 6 za třetinu ceny, stačí jen trocha programování…

Tímto počínáním se samozřejmě nedostaneme na rozměry ani provedení hromadně vyráběných zařízení, ale to v tuto chvíli není hlavním účelem. Cílem prvního článku bylo ukázat, že je dnes možné zkonstruovat téměř cokoliv a to s malými náklady a že vše, co potřebujeme, je snadno dostupné. Potom už záleží jenom na píli a studiu dostupných materiálů.