Jste zde

ARM a Linuxu v embedded aplikacích I.

ARM a Linux jako nerozlučná dvojka nás provází nenápadně životem? nízký příkon, vysoká stabilita, to je jejich přednost?

V současné době přibývá téměř exponenciální řadou zařízení postavených na architektuře ARM (Advanced RISC Machines), jako jsou PDA, mobily, síťové směrovače, wifi AP, herní konzole, apod.  Na vzrůstající požadavek reagují také výrobci součástek. Nabízejí širokou škálu těchto procesorů počínaje od malých mikrokontrolérů typu LPC21xx ( jádro ARM7, výrobce Philips) pro jednoúčelové systémy (např. řídící jednotka termostatu) až po velmi výkonné mikrokontroléry na jádře ARM11 využívající se například při digitálním zpracování obrazu v digitálních kamerách. ARM architektura je založená na redukovaném instrukčním souboru (RISC) mající vysokou instrukční výkonnost a rychlou reálnou odezvu na přerušení. Nelze také opomenout 16bitovou Thumb podmnožinu která ušetří 35-40% paměti ve srovnání s 32bitovým instrukčním souborem aniž by se významně snížil výkon.

ARM 7 – specifikace jádra

  • 32 bitový RISC procesor (redukovaná instrukční sada)
  • 0,18 mm technologie
  • napájení 1,8 V
  • příkon < 0,4 mW
  • pracovní frekvence 60-110 Mhz
  • architektura typu von Neumann (data i program v jednom adresovém prostoru)
  • 3 stavové zpracování instrukcí (pipeline)
 

ARM 7 – z hlediska programování

  • 37 celočíselných 32 bitových registrů
  • 8,16,32 bitové datové typy
  • 7  pracovních režimů :
    • usr - normální programový režim
    • fiq – režim datového přenosu (rychlá obsluha IRQ, přenos dat prostřednictvím DMA )
    • irq – režim pro základní přerušovací služby
    • svc – chráněný režim pro operační systém
    • abt – režim pro případ, kdy data nebo prováděná instrukce se nepodaří správně vykonat
    • sys – privileg režim pro uživatelskou aplikaci
    • und -  režim pro případ vykonání nedefinované (neznámé)  instrukce

ARM7 – popis registrů

  • struktura registrů závisí na pracovním režimu
  • R0-R12  univerzální 32 bitové registry
  • R13 (SP) ukazatel do zásobníku adres
  • R14  (LR) registr pro uložení obsahu registru R15 při vykonání instrukce typu BL
  • R15 (PC) programový čítač
  • R16 (CPSR) stavový registr
 

ARM7 – instrukční sada (podrobnější popis viz. ARM instruction set.pdf)

  • 15 typů instrukcí  pro větvení programu  (B, BL, BLX, BX, ..)
  • 16 typů instrukcí pro aritmetické a logické operace (AND, ADD, SUB, MUL , ..)
  • 10 typů instrukcí pro přesun dat ( MOV, LDR, STR, SWP, ..)
  • SWI instrukce pro softwarové přerušení

ARM Thumb – specifikace (podrobnější popis viz. ThumbR instruction set.pdf)

  • instrukční sada je 16bitová , o 35-40 % méně programové paměti
  • redukované instrukce nemají vliv na snížení výkonu
  • registry zůstávají 32bitové, ale používá se jen jejich polovina
  • redukované instrukce se dekódují během standardního dekódovacího cyklu
  • významně zjednodušuje návrh procesorového systému
 

Jak psát aplikace pro ARM

Jako vhodný operační systém bývá stále častěji používán Linux. Nabízí totiž kompletní flexibilitu skrz volbu vývojového prostředí včetně otevřených zdrojových kódů a nespočetné řady komunit starajících se o tyto kódy. Neustálé požadavky a změny na trhu nutí výrobce ochránit své investice vložené do vývoje svého zařízení včetně snadné přenositelnosti kódu na jiné zařízení. Proto volba Linuxu jako otevřeného OS je často motivována ekonomickými faktory, neboť použití linuxového jádra je bez licenční poplatků.

Linux - správná volba

Linux  jako kvalitní otevřený systém  nabízí  velké množství voleb, před které je postaven každý vývojový pracovník. Prvotní volnou je volba vhodného linuxového jádra. Pokud mikrokontrolér obsahuje jednotku MMU (Memory Management Units) lze použít standardní linuxové jádro portované na ARM architekturu. Například distribuce Debian a Gentoo. Pokud však tato jednotka MMU chybí, což je nejčastější případ, poohlédneme se po upraveném linuxovém jádře.

Mezi nejznámější patří eCos, který je poskytován jako otevřený zdrojový runtime systém podporovaný GNU otevřenými  zdrojovými vývojovými prostředky. Aktuální verze podporuje osm hardwarových platforem, mezi ně patří i ARM. Na jeho jádře lze vyvíjet vlastní aplikace včetně možnosti využití běhu více úloh najednou.  Součástí tohoto systému je i Redboot (Red Hat Embedded Debug a Bootstrap firmware), umožňující snadné zavádění a ladění aplikace, neboť RedBoot přímo komunikuje s GDB (GNU Debugger).

Další vhodnou volbou je µClinux, což je embedded Linux speciálně upravený pro velkou řadu 16, 32 bitových mikrokontrolérů. Původně  byl µClinux odvozen od linuxového jádra 2.0. V současné době zahrnuje jádro 2.6.12 a 2.4.31 včetně velkého množství uživatelských aplikací a knihoven. K tomuto řešení přistoupila i například firma MOXA známá především na poli komunikačních karet a převodníků rozhraní ve svém produktu UC-7110-LX.

 

Jelikož tato problematika je velmi široká, v příštím díle tohoto seriálu se podíváme jak vytvořit jednoduchou aplikaci za použití modulu LPC-MT2106 s mikrokontrolérem LPC2106.

 

 

Miroslav Dvořák
Dvorak.Linux@ seznam.cz

Download & odkazy:

Hodnocení článku: