Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

ARM - Linux není jen x86

Teprve v momentě, kdy sáhnete po jiné platformě, než je x86, pochopíte, kde je výhoda multiplatformnosti Linuxu. Jednou z alternativních platforem je ARM.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

V dnešním x86 centrickém světě si mnoho běžných lidí – ať už uživatelů, nebo programátorů – jen obtížně připouští, že existují i platformy založené na něčem jiném než na známých procesorech Intel a AMD x86, které navazují na původní intel 8086 resp. vylepšený i386. Ač tito dva zástupci x86 platformy v povědomí lidí hrají prim v počtu běžících procesorů, především pro embedded zařízení (vestavěná zařízení, nebo též různá mobilní zařízení jako PDA) se zdaleka nejedná o nejběžnější architekturu. Touto architekturou je podle posledních zpráv právě ARM (viz zprávičku na Root.cz). A linuxový kernel je na ARMu jako doma.

Co je ARM?

ARM je původně název společnosti Acorn RISC Machines, která vyvinula cca v roce 1987 první RISC procesor s názvem ARM – údajně původně pro desktopový počítač, ale nějak se to zvrtlo. Později se po úspěchu procesorů ARM1 až ARM3 odělila divize procesorů ARM jako firma Advanced RISC Machines (Acorn vyvíjel i OS – RISC OS). Jak plyne z názvu společnosti, zaměřovala se na procesory s architekturou RISC (Reduced Instruction Set Computing). Od doby odštěpení opustilo dílny ARM několik řad procesorů od ARM6 až po ARM11.

Většina řad se soustředí na vytváření procesních jader pro vestavěná zařízení a mnohdy obsahují i části specializované na digitální zpracování signálů (DSP core), případně tvoří celou platformu (řadiče, IO atd.).

Nejznámější jsou zřejmě procesory StrongARM díky jejich aplikaci v nejrůznějších PDA, především od Compaqu a HP. StrongARM je původně procesorové jádro vyvinuté firmou ARM ve spolupráci s DEC, které v roce 1998 „licencoval“ Intel (vysoudil ho na DECu – doba začátku konce Digitalu i procesorů Alpha) a prodával(!) ho pod označením SA110 (pro obecná zařízení), SA1100 jádro specializované pro PDA a doplňkový chip SA1111. Dnes jsou na této architektuře založeny procesory XScale, např. PXA250.

Na ARMu je zajímavé i to, ze dodává ucelenou řadu vývojových nástrojů RealView, která běží i na Linuxu (čistě komerční řešení, pro jednotlivce poněkud drahé).

Kde se vzal Linux na ARM, proč je zajímavý a jaké má výhody?

Doufám, že nikomu neukřivdím, když napíšu, že největší zásluhy na tom, že dnes linuxový kernel běží na ARM procesorech, má Russell King, který je dodnes správcem ARM větve linuxového kernelu. Přehled dění okolo ARM v linuxovém kernelu naleznete na stránkách The ARM Linux Project. Zvláště zajímavá je developerská sekce, kde naleznete velmi detailní seznamy patchů a info o jejich stavu.

Odvážně si zde troufnu tvrdit, že ARM procesory se staly zajímavé díky tomu, že si je jako základní platformu vybral Microsoft (právě jsem odradil půlku čtenářů, druhá odpadne záhy) pro své Windows CE/Handhelds/Mo­bile, a díky tomu, že licenci na StrongARM zakoupil Intel (to byla ta druhá půlka) a dále ARM rozvíjí. Samozřejmě se ale ARM nestal populární jen díky tomu, ale také díky své architektuře a relativně nízké spotřebě (snad jsem to vyžehlil..).

Celá výhoda ARMu spočívá především v jeho RISCantnosti – instrukce jsou vykonávány přímo hardwarem, nikoli mikrokódem. To, že procesor obsahuje menší počet hardwarových instrukcí, dělá jeho návrh do jisté míry jednodušší, samotný procesor je menší, a tedy má menší spotřebu. Jednodušší instrukční soubor umožňuje také snadnější vytvoření kompilátoru. Díky některým vlastostem ARMu je omezen i problém předpovídání skoků, který je tak ožehavý ve světě CISC a tvůrce kompilátorů i procesorů zaměstnává na dlouhé měsíce. Za výhody RISCových procesorů se považuje i větší počet univerzálně použitelných registrů. ARM má navíc některé vymoženosti, jako jsou podmíněné instrukce (nejen skoku!). Malý příklad:

SWI     "podprogram"    ; spust podprogram
MVNVS   R0, #0          ; pokud selhal nastav R0 do -1 (move negative)
MOVVC   R0, #0          ; jinak nastav R0 do 0 

x86 řešení spočívá ve volání podprogramu, porovnání obsahu akumulátoru, několika (minimálně dvou) skoků a mov instrukcí.

UUD operační systémy pro ARM

UUD jsem si právě vymyslel a je to zkratka User Used Devices – tedy zařízení používaná uživatelem. Pro ARM existuje i množství specializovaných OS, které slouží pro různé průmyslové aplikace (zpravidla RTOS apod.). Známé systémy pro UUD ARM jsou Palm OS, Symbian OS, Windows CE a samozřejmě obecně Linux. Většina jmen OS asociuje různá PDA, existují ale i stolní počítače postavené na ARM procesorech, na kterých běží RISC OS – např. Iyonix. Pro nás bude zajímavé, jaké volně stažitelné komunitní distribuce Linuxu pro běžně dostupný ARM existují. Distribuce se dělí na dvě skupiny – ty, které se zaměřují na embedded zařízení (tzn. optimalizují na velikost), a ty, které čistě kompilují danou distribuci pro ARM architekturu.

Debian GNU/Linux pro ARM

Většina distribucí pro ARM má kořeny právě v Debianu pro ARM, který je ovšem jen obecnou kompilací balíčků z Debianu pro ARM. Dá se říci, že to je vlastně jediná architektonicky nezávislá distribuce pro ARM. Ostatní se už specializují na přizpůsobení balíčků z Debianu konkrétním zařízením. Mezi ně patří především Familiar, jLiMe, OpenZaurus atd., i když většina je již dnes založena spíše na konsolidovaném OpenEmbedded, kde, zdá se, probíhá bouřlivý vývoj  – alespoň podle posledního Newsletteru.

openembedded

Dalšími distribucemi aspirujícími na to být použity na ARMu jsou ARMedslack, Gentoo pro ARM, Embededded Gentoo a Emdebian – v jakém jsou stádiu, se dozvíte níže.

Emdebian

Emdebian se tváří podle konference, že se poměrně dobře vyvíjí, bohužel stránky projektu jsou krapet neaktuální. O něco lépe je na tom WIKI. Projekt existuje již od roku 2000, od té doby se ale převaluje mezi různými přístupy k integraci a kompilaci Emdebianu v návaznosti na Debian. V podstatě ještě stále není rozhodnuto, jakým způsobem se bude Emdebian začleňovat do Debianu nebo naopak vyčleňovat z něj. Musím bohužel konstatovat, že tato nepružnost je pro kolos Debianu typická.

EmDebian

Gentoo pro ARM a Embedded Gentoo

Obě distribuce najdete v experimentální větvi a v podstatě k nim není dokumentace. Projekt Embdedded Gentoo již nějaký ten pátek existuje. Jeho hlavní cíle najdete ve WIKI, jednotlivá instalační stádia „stages“ najdete v experimentální větvi např. naFTP Silicon Hill. Embedded Gentoo je zaměřeno na malá zařízení a je postaveno na uClibc, jeho instalační stages jsou asi 2× menší než u obecného Gentoo pro ARM. Balíky zřejmě půjde využívat, podobně jako v Debianu, z normální distribuce pro ARM. Gentoo je pro mne znakem značné systematičnosti, a tak to, co najdete na webu, prostě funguje. Bohužel dostupných balíků je zatím příliš málo, aby se dala distribuce plně použít. Pro nadšence ovšem již je na čem vystavět Gentoo na jejich oblíbeném ARM zařízení.

ARMedslack

Je zástupce obecnější ARM distribuce se zaměřením na stolní Acorn RiscPC a Iyonix. Pochybuji ale, že si jeho KDE pustíte na iPAQu.:) V tuto chvíli se autor tváří, že už to skoro má…tak uvidíme.

Armedslack

Nebojte se kompilace pro ARM

Pro kompilaci je záhodno využít tzv. cross-compilace – to jest použít výkonnější a dostupnější platformu x86 a na ní kompilovat přímo binární balíčky pro jinou architekturu. Pro embedded zařízení se využívají toolchainy různých projektů, a to např. z handhelds.org, v současnosti arm-linux-gcc-3.4.1.tar.bz2, debianu nebo openembedded (bitbake). Existuje i projekt zaměřený na vytváření toolchainu, a to Scratchbox.

Samotný postup zpravidla sestává ze tří kroků:

  • stáhne se toolchain,
  • přidá se do cesty a
  • pustí se make (s parametry pro příslušnou architekturu)

Trochu problémy jsou s ./configure  resp. automake. K jejich přelstění se využívá qemu.

Na Debianu lze získat toolchain přes apt-get install dpkg-cross, editaci /etc/dpkg/cross-compile, kde nastavíte základní adresář, a následnou instalací dpkg-cross --arch arm --install libc6_2.3.1-9_arm.deb libc6-dev_2.3.1-9_arm.deb libdb1-compat gcc-arm-linux binutils-arm-linux.

Kompilace pro danou architekturu je v podstatě stejná jako pro x86, problémy s použitím ARMu tedy nejsou na aplikační úrovni, ale na úrovni obsluhy periferních zařízení, jejichž dokumentace je volně dostupná mizerná nebo žádná.

Jak vyvíjet pro ARM (v domácích pomínkách)

Pokud si vystačíte s tím, co vám nativně poskytuje ARM na Skiffu nebo iPAQu, pak pro testování a kompilace lze využít skiffclusterhandhelds.org. Na stroje se lze přihlásit zcela běžně přes telnet na adresách skiffcluster[1–4].handhelds.org (dostupné i SSH) nebo ipaq[0–7].handhelds.org.

Můžete ovšem využít též emulace ARM, a to buď na úrovni systémových volání – tuto emulaci poskytuje qemu-arm (bohužel qemu v tuto chvíli neumí pro ARM emulovat celý systém jako pro x86, ppc nebo sparc), nebo můžete použít některý kompletní emulátor. Nadějně se jeví např. ARMware, který emuluje kompletní systém iPAQ h3600, bohužel se nejedná o open source a dostupné jsou pouze binární balíčky. Dobře vypadá i softgun, neemuluje ale běžný iPAQ, nýbrž Netsilicon NS9750.

Pozn.: Použití qemulace: qemu-arm -L /cesta/arm/root/ /bin/ls kde /cesta/arm/root by měla být cesta ke kompletnímu rootu systému arm. Ten lze získat použitím debootstrap, není to ovšem dokonalé a vyžaduje to trochu zkušeností.

Disclaimer

Tento článek vznikl za účelem konsolidace znalostí ohledně ARMu. Neklade si za cíl být návodem ani komplexním přehledem, ale jakýmsi rozcestníkem do světa ARMovaného Linuxu. Tento svět je přeci jen méně přehledný než x86. Připomínky a diskuse jsou vítány.

TIB2012

       

Další odkazy

Skript pro vytvoření základního systému z debianu ARM pro HP Jornada 820 – lze použít jako příklad i pro jiné sestavy.

Letmý popis využití QEMU.

Školení: IP v 6 na Linuxu

Tento krátký kurz je určený speciálně pro zkušené správce sítí IPv4, kteří se chtějí seznámit s nastupujícím internetovým protokolem IPv6.

Platforma: Linux

  • Adresace
  • Link-local adresy
  • Dynamické přidělování adres
  • a další

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,68

Přehled názorů

ach ty ovladače
Marek Chlup 13. 9. 2005 07:48
Nový
└ 
Re: ach ty ovladače
Adam Přibyl 13. 9. 2005 09:06
Nový
 
└ 
Re: ach ty ovladače
Marek Chlup 13. 9. 2005 10:12
Nový
 
 
└ 
Re: ach ty ovladače
Radek Podgorny 13. 9. 2005 10:47
Nový
 
 
 
└ 
Re: ach ty ovladače
Zdenek 13. 9. 2005 13:07
Nový
 
 
 
 
└ 
Re: ach ty ovladače
Radek Podgorny 13. 9. 2005 15:50
Nový
ARM je super
Daniel Smolik 13. 9. 2005 08:31
Nový
├ 
Re: ARM je super
Adam Přibyl 13. 9. 2005 08:48
Nový
│
└ 
Re: ARM je super
Daniel Smolik 13. 9. 2005 10:04
Nový
│
 
├ 
Re: ARM je super
Daniel Smolik 13. 9. 2005 10:05
Nový
│
 
│
├ 
Re: ARM je super
anonymní uživatel 13. 9. 2005 16:36
Nový
│
 
│
│
└ 
Re: ARM je super
Franta 14. 9. 2005 19:52
Nový
│
 
│
│
 
└ 
Re: ARM je super
Franta 14. 9. 2005 20:42
Nový
│
 
│
│
 
 
└ 
Re: ARM je super
Franta 14. 9. 2005 20:49
Nový
│
 
│
│
 
 
 
└ 
Re: ARM je super
Franta 14. 9. 2005 21:28
Nový
│
 
│
└ 
Re: ARM je super
mobilix.szm.sk 14. 9. 2005 08:33
Nový
│
 
├ 
Re: ARM je super
Adam Přibyl 13. 9. 2005 13:22
Nový
│
 
│
├ 
Re: ARM je super
Jakub Chalupnik 13. 9. 2005 15:42
Nový
│
 
│
│
└ 
Re: ARM je super
Michal Sojka 15. 9. 2005 15:28
Nový
│
 
│
│
 
├ 
Re: ARM je super
Daniel Smolik 15. 9. 2005 16:16
Nový
│
 
│
│
 
└ 
Re: ARM je super
Jakub Chalupnik 15. 9. 2005 17:38
Nový
│
 
│
└ 
Re: ARM je super
Daniel Smolik 13. 9. 2005 23:39
Nový
│
 
└ 
Re: ARM je super
Yokotashi 13. 9. 2005 23:02
Nový
├ 
Re: ARM je super
vrabcak 13. 9. 2005 09:28
Nový
│
└ 
Re: ARM je super
Daniel Smolik 13. 9. 2005 10:34
Nový
└ 
Re: ARM je super
anonymní uživatel 13. 9. 2005 10:25
Nový
 
└ 
Re: ARM je super
Daniel Smolik 13. 9. 2005 10:35
Nový
k tomu asm
LiLu 13. 9. 2005 08:56
Nový
├ 
Re: k tomu asm
cxl 13. 9. 2005 13:31
Nový
│
└ 
Re: k tomu asm
LiLu 13. 9. 2005 14:49
Nový
└ 
Re: k tomu asm
Peter Helcmanovsky 13. 9. 2005 16:16
Nový
 
└ 
Re: k tomu asm
Radek Hnilica 13. 9. 2005 18:11
Nový
ARM pro prumysl
dejfson 13. 9. 2005 08:59
Nový
├ 
Re: ARM pro prumysl
Adam Přibyl 13. 9. 2005 09:12
Nový
├ 
Re: ARM pro prumysl
Daniel Smolik 13. 9. 2005 10:33
Nový
└ 
Re: ARM pro prumysl
Jenicek001 15. 9. 2005 09:40
Nový
 
└ 
Re: ARM pro prumysl
Daniel Smolik 15. 9. 2005 10:20
Nový
 
 
└ 
Re: ARM pro prumysl
anonymní uživatel 15. 9. 2005 16:25
Nový
 
 
 
└ 
Re: ARM pro prumysl
Daniel Smolik 15. 9. 2005 16:30
Nový
 
 
 
 
└ 
Re: ARM pro prumysl
hwsoft 16. 9. 2005 11:35
Nový
 
 
 
 
 
└ 
Re: ARM pro prumysl
Daniel Smolik 16. 9. 2005 14:28
Nový
 
 
 
 
 
 
└ 
Re: ARM pro prumysl
hwsoft 18. 9. 2005 11:50
Nový
 
 
 
 
 
 
 
└ 
Re: ARM pro prumysl
Daniel Smolik 20. 9. 2005 10:13
Nový
MIPS vs arm
eax 13. 9. 2005 09:30
Nový
scratchbox
Jiří Pírko 13. 9. 2005 09:38
Nový
Desktopy
Jakub Chalupnik 13. 9. 2005 10:16
Nový
Desktopy 2
Logout 13. 9. 2005 11:20
Nový
Gentoo embedded
Ctirad 13. 9. 2005 12:27
Nový
├ 
Re: Gentoo embedded
Daniel Smolik 13. 9. 2005 12:43
Nový
└ 
Re: Gentoo embedded
Ladislav Michl 13. 9. 2005 13:30
Nový
 
└ 
Re: Gentoo embedded
Ctirad 13. 9. 2005 16:13
Nový
 
 
└ 
Re: Gentoo embedded
Ladislav Michl 13. 9. 2005 17:50
Nový
non-i386 Linux devel meeting
Ladislav Michl 13. 9. 2005 13:35
Nový
nj nejenom linux je pro ARM ;)
rezna 13. 9. 2005 16:13
Nový
├ 
Re: nj nejenom linux je pro ARM ;)
rezna 13. 9. 2005 16:14
Nový
│
└ 
Re: nj nejenom linux je pro ARM ;)
Daniel Smolik 13. 9. 2005 23:34
Nový
│
 
└ 
Re: nj nejenom linux je pro ARM ;)
rezna 14. 9. 2005 08:51
Nový
├ 
Re: nj nejenom linux je pro ARM ;)
Ladislav Michl 13. 9. 2005 18:01
Nový
│
├ 
Re: nj nejenom linux je pro ARM ;)
Jakub Chalupnik 13. 9. 2005 18:16
Nový
│
│
└ 
Re: nj nejenom linux je pro ARM ;)
anonymní uživatel 18. 9. 2005 09:55
Nový
│
│
 
└ 
Re: nj nejenom linux je pro ARM ;)
anonymní uživatel 18. 9. 2005 19:47
Nový
│
└ 
Re: nj nejenom linux je pro ARM ;)
rezna 14. 9. 2005 08:48
Nový
│
 
├ 
Re: nj nejenom linux je pro ARM ;)
Yokotashi 14. 9. 2005 09:31
Nový
│
 
│
└ 
Re: nj nejenom linux je pro ARM ;)
Adam Přibyl 14. 9. 2005 09:52
Nový
│
 
│
 
└ 
Re: nj nejenom linux je pro ARM ;)
Adam Přibyl 14. 9. 2005 10:05
Nový
│
 
└ 
Re: nj nejenom linux je pro ARM ;)
hwsoft 14. 9. 2005 09:52
Nový
└ 
Re: nj nejenom linux je pro ARM ;)
MarSik 14. 9. 2005 13:42
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem