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

Vývoj bez kompromisů s procesory ARM – 3. část

DPS 2/2012 | Články
Autor: Ing. Jan Weinbrenner

V předchozích dvou částech jsme si stručně představili vývojový kit s ARM procesorem i.MX53 s jádrem typu Cortex-A8 od firmy Freescale. Popsali jsme si také použitý procesor od stejné firmy. Zjistili jsme, že jako snadno použitelný operační systém se nám jeví Linux. Po připojení napájecího napětí, klávesnice a myši dostaneme počítač, na kterém si bez problému prohlížíme internet, napíšeme textový dokument nebo vytvoříme nějakou tabulku. Jeho výkon je také dostatečný pro přehrávání videa. To vše je při spotřebě menší, než kterou má ventilátor v našem stolním počítači.

Při pořizování tohoto kitu jsem si však neuvědomil jednu důležitou věc a to, že druhý počítač nepotřebuji a že možnosti hardwarového rozšiřování tohoto kitu jsou velmi malé. Máme tedy na výběr standardní komunikační rozhraní TCP/IP, sériovou linku, nějaký SPI port a několik digitálně vstupně výstupních linek, což je vlastně obdoba PC. Přes tyto různé komunikační porty jsme v první řadě velmi silně omezeni rychlostí komunikace a musíme implementovat velmi složité protokoly. Kdo někdy jenom prolistoval dokumentaci k USB, dá mi za pravdu. Jelikož mě ale možnosti a komplexnost procesoru ARM velmi zaujaly, začal jsem se poohlížet po konkurenci. Po konkurenci, která má vyvedenou datovou sběrnici procesoru pro použití uživatelem. Získal bych tak jednu velmi důležitou vlastnost – komunikace kitu s okolím by se zjednodušila na pouhý zápis a čtení adresy v paměti. Potřebujeme tedy kit, který má vyvedenou adresovou a datovou sběrnici a několik řídicích signálů. Potom již můžeme velmi snadno používat věci, které známe i z těch nejjednodušších aplikací s 8bitovými procesory.

Při pátrání na internetu a zvažování několika možností jsem našel řešení v podobě vývojového kitu Pandaboard ES. Aby to ale nebylo tak snadné, připojíme si k adresové a datové sběrnici tohoto kitu jiný vývojový kit. Připojíme k ní vývojový kit pro práci s hradlovými poli od firmy Digilent nazvaný NEXYS3. Získáme tím kompletní vývojové pracoviště pro práci s elektronickými obvody, které je vhodné pro řešení velké většiny aplikací. Vývojový kit s procesorem ARM se nám bude starat o komunikaci s okolím, ukládání dat na flash paměť, zobrazení dat a další časově nekritické aplikace, zatímco se vývojový kit pro práci s hradlovými poli postará o časově kritické aplikace.

Uveďme si malý příklad, třeba konstrukci jednoduchého paměťového osciloskopu. K vývojovému kitu s hradlovými poli připojíme velmi rychlý A/D převodník (třeba 400 Ms/s), data rychle navzorkujeme do vnitřní paměti hradlového pole a přes datovou a adresovou sběrnici vyčteme data do kitu s procesorem ARM. Zde můžeme data zobrazit a dále s nimi pracovat. Celé řešení se nám takto velmi zjednoduší. Samotný procesor by neuměl tak rychle data z převodníku vyčíst a v hradlovém poli zase nemusíme programovat nějaký komunikační protokol, natož se pokoušet je zobrazit.

Možnost spojení ARM procesoru a hradlového pole byla popsána v jiném článku uvedeném v tomto časopise. My však použijeme běžně prodávané vývojové kity, jejichž hlavní komponenty nejsou na trhu ani rok a jsou výkonem na vrcholu současné technologie. Pro zajímavost – cena součástek, které jsou připájeny na obou vývojových kitech, je vyšší, než cena samotných kitů. My si v tomto článku popíšeme stručně oba kity, jejich možnosti a rychlé uvedení do provozu. Bohužel k oběma kitům není dodávána žádná dokumentace a tak se potřebné informace musí dohledat na internetu.

Představení kitu Pandaboard ES

Vývojový kit Pandaboard ES je open source řešení s ARM procesorem OMAP-4460 a vzniknul evolucí z vývojového kitu Pandaboard s procesorem OMAP- 4430. K dispozici tedy máme všechny zdrojové texty a schémata. Zajímavostí je, že právě nyní, v roce 2012, uvádí na trh Toshiba tablet AT200 právě s tímto slabším procesorem za cenu kolem 12 500 Kč, jako konkurenci iPadu. Nám se tak dostává do ruky vývojový kit s výkonem větším, než zmíněné produkty za cenu 4 000 Kč.

Nyní si vývojový kit stručně popíšeme. Srdcem námi představovaného vývojového kitu je mobilní dvoujádrový procesor OMAP-4460 od firmy Texas Instruments pracující na frekvenci 1,2 GHz. Tento procesor využívá nové technologie pro úsporu místa a především usnadnění návrhu. Procesor je vyroben v pouzdru typu BGA, na jehož horní straně jsou plošky pro připájení paměti DRAM DDR2 o velikosti 1 GB. Jelikož propojení rychlých pamětí je jeden z nejsložitějších úkolů vývojáře, je tato novinka téměř nedocenitelná. Dále obsahuje konektor pro umístění standartní SD karty, na kterou nahrajeme operační systém pro bootování. Součástí vývojového kitu jsou konektory pro připojení počítačové sítě, RS232, konektory USB pro připojení myši, klávesnice a USB klíče, konektor pro připojení napájecího napětí 5 V. Pro připojení monitoru slouží konektor HDMI. Na kitu je také místo pro připájení SMD konektoru pro připojení kamery s maximálním rozlišením 16 megapixelů. Vývojový kit rovněž obsahuje WIFI modul pro bezdrátové připojení.

Vývoj bez kompromisů s procesory ARM 1

Obr. 1 Blokové schéma vývojového kitu Pandaboard Zdroj: www.omappedia.org

A nyní se dostáváme k tomu, co tento kit činí vývojovým kitem – obsahuje konektory s vyvedenou sběrnicí procesoru. Je tedy možné připájet standardní konektory s roztečí 2,54 mm a připojit další periférie pomocí plochého kabelu. Další 2 konektory s jemnější roztečí 1,27 mm slouží pro případné připojení LCD displeje. Vše je zobrazeno na blokovém schématu (obr. 1).

Jak uvést kit do provozu

Nejdříve si uvedeme, co všechno budeme potřebovat pro jeho zprovoznění. Jelikož součástí dodávky je pouze holý vývojový kit, musíme si opatřit stabilizovaný napájecí zdroj 5 V a standardní rychlou SD kartu o velikosti nejméně 8 GB. Pokud nemáme monitor se vstupem HDMI, potom potřebujeme i kabel, který nám provede redukci na DVI signál. Pokud náš monitor obsahuje pouze standartní VGA konektor, potom zobrazení určitě nezprovozníme. Zde je potřeba upozornit na jednu nepříjemnou situaci, která vznikla v souvislosti s SD kartou. Kit je poměrně citlivý na typ karty, některá mi pracovala bezvadně a některá měla problémy. Na internetu jsem se dozvěděl, že se jedná o nějaký softwarový problém, který by měl být odstraněn. Mohu však potvrdit informaci, že problémy nenastávají s kartou Sandisk ultra. Je to však jediný problém, se kterým jsem se musel zabývat. Dále si popíšeme, jak připravit SD kartu pro nabootování operačního systému.

Vytvoření SD karty pro nastartování OS

Důležitou informací je skutečnost, že tento vývojový kit má vlastní webové stranky (www.pandaboard.org). Na nich lze zjistit, že máme na výběr ze 3 možností – Linux v minimální podobě, bez grafického rozhraní, dále Android a Ubuntu Linux. Zvolil jsem Ubuntu Linux. Vytvoření SD karty schopné bootování z prostředí Windows je následující:

Stáhneme přes odkaz z webových stránek kitu předinstalovanou verzi operačního systému Linux. Zvolil jsem verzi Ubuntu 11.10. Dále budeme potřebovat volně šiřitelný program WIN32DiskImager. Tento program umí pomocí čtečky karet nahrát na SD kartu jakýkoliv soubor z počítače. A provádí to fyzicky od nultého sektoru. Součástí souboru tedy může být i tabulka rozdělení disku. Této vlastnosti využívá předinstalovaná verze Ubuntu. Program umí naopak i přečíst SD kartu od 0. sektoru a uložit ji do souboru. Pokud tedy máme na kartě nainstalovaný Linux a spousty programů, tak lze snadno provést zálohu karty do počítače. Funguje to tedy podobně jako Norton Ghost u stolního počítače. Nyní máme tedy všechny potřebné informace pro první spuštění vývojového kitu.

První spuštění OS Ubuntu Linux

Zasuneme SD kartu s předinstalovanou kartou Ubuntu Linuxu do slotu, připojíme napájecí zdroj a DVI monitor a zapneme zdroj. Po několika vteřinách vyskočí průvodce nastavením Ubuntu Linuxu. Jako první provede úpravu tabulek souborového systému podle velikosti SD karty, což bylo první příjemné překvapení. Dále probíhá nastavení operačního systému, dotázání na jména a hesla uživatelů, národní nastavení (čeština zde nechybí), instalace sítě atd. V mém případě WIFI modul dokonce nalezl okolní dostupné sítě, o kterých jsem neměl ani ponětí. Takto pěkně to všechno funguje s kartou od firmy Sandisk. Předtím jsem však strávil mnoho času s velmi rychlou kartou Adata. Snad bude tato citlivost na výrobce karty opravena v další verzi Ubuntu.

Vývoj bez kompromisů s procesory ARM  2

Obr. 2 Běžící Ubuntu Linux s aplikací Code::Blocks

Na obr. 2 je možné vidět běžící verzi Ubuntu Linuxu se spuštěným překladačem Code::Blocks. Zde jsem také přímo v tomto prostředí přeložil a spustil jednoduchou aplikaci. Správnou verzi software Code::Blocks mi nabídnul správce programů, který je součástí Ubuntu. Při prvních pokusech s Ubuntu Linuxem na tomto vývojovém kitu musím s povděkem konstatovat, že 2 jádra procesoru na takto vysoké frekvenci jsou znát.

Dále si ukážeme, jak tento vývojový kit dále začlenit do nějakého komplexního výrobku.

Začlenění kitu Pandaboard do ucelenějšího systému

Uvedli jsme si, že tento vývojový kit umožnuje funkci běžného stolního počítače s výkonem srovnatelným s několik let starými počítači. Ale protože se zabýváme vývojem zařízení, tak půjdeme dále. Zkusíme si připojit věci, se kterými jsme u PC většinou v koncích (pokud nedovedeme vyrábět PCI karty a psát pro ně ovladače pod Windows).

Důvod, proč jsme si tento vývojový kit vybrali, je datová a adresová sběrnice procesoru. Z katalogového listu snadno zjistíme, že pracuje s 1,8 V a tady vzniká první problém – dostupné součástky. V této souvislosti mne napadá jiná možnost – vývojový kit pro seznámení s hradlovými poli, u kterých lze vstupy a výstupy nakonfigurovat na mnoho různých standardů. Snad mi to pomůže ochránit a oddělit vývojový kit od okolí, přičemž vývojový kit s hradlovým polem by byl přece jenom levnější. A jak jsem uváděl na začátku článku, rozšířím možnosti kitu Pandaboard o práci v reálném čase. Pro přesnější pochopení se mi jeví jako nutnost popsat vývojový kit pro práci s hradlovými poli.

Proč připojit Pandaboard pomocí hradlového pole?

Jelikož stručný popis hradlových polí by vyžadoval celou knihu, uvedeme si zde pouze základní informace. Hradlová pole začínají být fenoménem poslední doby, jejich vývoj nabral na obrátkách a jejich používání bylo hodně usnadněno. Pokud bych řešil připojení vývojového kitu k okolí před několika lety, tak bych pravděpodobně použil dvoubránové paměti RAM, oddělovače sběrnice a spousty přídavné logiky. Byly velmi drahé, braly spousty energie a vývojové prostředí by nebylo až tak dokonalé. Dnes je však situace jiná, cena hradlových polí šla výrazně dolů. Dnes lze zakoupit hradlové pole s deseti tisíci hradel za několik dolarů, prodávají se však i podstatně dražší pole s desítkami miliony hradel. Vývojové prostředí, které je velmi komplexní nástroj, je zdarma a po instalaci nám zabere několik GB místa na disku. Pro programování snadno použijeme další zdarma dodávaný nástroj ISE Webpack. Jako první mě napadla možnost navrhnout si destičku s hradlovým polem a tu připojit ke kitu Pandaboard. Když jsem si potom ale vzpomněl na vývojový kit hradlových polí, bylo rozhodnuto. Proč si práci neusnadnit a nepoužít již něco hotového.

Kit pro práci s hradlovými poli

Budu zde popisovat vývojový kit od firmy Digilent s označením NEXYS3. Tento kit obsahuje hradlové pole poslední dostupné generace od firmy Xilinx typu Spartan-6 s asi 16 000 logickými buňkami. To je odhadem více než 1 milion propojitelných hradel. Dále tento kit obsahuje paměť DRAM, sériovou paměť typu flash, výstup na VGA monitor, počítačovou síť atd. Tyto periférie pro naši popisovanou aplikaci trošku ztrácí na významu, protože se nám bude o komunikaci a vizualizaci starat Pandaboard. Co však určitě využijeme je vysokorychlostní konektor, kde je vyvedeno 40 pinů z hradlového pole a tento konektor je routován s ohledem na impedanci a kde tedy napojíme Pandaboard. Tento vývojový kit má rovněž vyvedeno na 4 konektorech dalších 32 pinů hradlového pole. Lze tedy snadno připojit další zařízení, jako například D/A a A/D převodník atd. Snadné využití také najdeme pro několik mechanických přepínačů a LED diod, což je také součást kitu. Konfigurační soubor lze nahrát do kitu snadno přes USB port. Je dobré poznamenat, že tento kit lze používat i samostatně pro seznámení s hradlovým polem. Vývojový kit je zobrazen na obr. 3.

Vývoj bez kompromisů s procesory ARM  3

Obr. 3 Vývojový kit pro hradlová pole NEXYS3 Zdroj: www.digilentinc.com

Závěr

V tomto článku jsme si představili dostupný vývojový kit s dvoujádrovým procesorem s možností hardwarového rozšíření, popsali instalaci operačního systému a zdůvodnili, proč provést rozšíření pomocí hradlového pole. Pro usnadnění vývoje použijeme vývojový kit pro hradlová pole. Za povšimnutí jistě stojí to, že pracujeme s nejnovější technikou. Vývojové kity NEXYS3 i Pandaboard ES nejsou na trhu ani rok, ale oba dva lze u nás snadno zakoupit. Určitou nevýhodou je zatím nedostatek dostupných informací.

V příštím článku si ukážeme konstrukci propojovací destičky mezi oběma kity a připojíme A/D převodník ke kitu s hradlovým polem. Toto by nám mělo umožnit konstrukci jednoduchého paměťového osciloskopu. Zde očekávám největší úskalí v softwarovém přístupu na sběrnici Pandaboardu z Linuxu a doufám, že neudělám v návrhu nějakou závažnou hardwarovou chybu a že oba dva kity nezničím.