Open Source OS na průmyslovém hardwaru

Autor: František Ryšánek <rysanek AT fccps.cz>
Datum: 10.9.2003

Úvod, tradiční řešení

Mnoho aplikací průmyslového řízení a regulace dnes spoléhá na rozličné I/O moduly, komunikační konvertory a miniaturní "terminálové servery" - zařízení založená na mikrokontrolérech (průmyslových mikroprocesorech), která sbírají data či prodlužují dosah průmyslových komunikačních sběrnic. Komunikace směrem k řídícímu počítači probíhá přes prostou unipolární linku RS232, případně přes ethernet + TCP/IP, tj. technologie pocházející původně z oblasti "kancelářských" sítí.

Jednodušší měřící/sběrné moduly lze skutečně obsloužit osmibitovým mikrokontrolérem, který má na čipu AD převodník a UART. Takových mikrokontrolérů se dnes vyrábí obrovská spousta druhů a rodin, populárních i méně známých.

V oblasti převodníků RS232 na IP/Ethernet jsou populární některá typická řešení s čipy Intel 80186 nebo 80188 a kompatibilními - jde o průmyslové procesory z rodiny x86, z řady, která nikdy neexistovala v "kancelářské" verzi. Pro tyto procesory je na komerční bázi k dispozici 16bitový TCP/IP stack, standardní poměrně bohatá sada hotových softwarových modulů (HTTP, SNMP apod) a vývojové nástroje pro další tvorbu či úpravy připravených polotovarů.
Jiní výrobci dávají přednost procesorům od dálně-východních výrobců, jako jsou Hitachi, NEC, Mitsubishi apod., pro které také existuje TCP/IP stack a vývojové nástroje.

Výše zmíněné tradiční převodníky a I/O moduly na bázi mikrokontrolérů a průmyslových verzí "velkých" procesorů mají softwarové vybavení uloženo v paměti EPROM - buď "na čipu" procesoru nebo v samostatném pouzdře.


Advantech ADAM4570
= 2xRS232/422/485 přes Ethernet


Lantronix UDS-10 vulgo Equinox MDS-10
= RS232 přes Ethernet
(Obrázek pochází z
www.lantronix.com)

Nové možnosti

Poslední dobou vzrůstá mezi vývojáři průmyslových aplikací znalost a obliba Linuxu a dalších open-source platforem, zejména z rodiny BSD (FreeBSD, OpenBSD, NetBSD).

Tyto volně šiřitelné operační systémy UNIXového typu představují špičkovou platformu pro vývoj síťových aplikací, podporují standardní PC periferie jako jsou RS232 linky a paralelní port, na trhu jsou k dispozici víceportové RS232 karty, přinejmenším Linux podporuje také mnoho specializovaných měřících a řídících desek, které se zasunují do sběrnice ISA nebo PCI.

Zdálo by se, že systémy z rodiny BSD v podpoře exotického hardwaru zaostávají. V dnešní době na platformě PC je to snad i pravda, ale na druhou stranu systémy odvozené od BSD odedávna fungují v zařízeních, kde by je laik těžko hledal, např. v kopírkách, faxech a telefonních ústřednách, kde procesor Intel x86 je spíše výjimkou. V počtu podporovaných procesorových platforem je přinejmenším NetBSD dodnes napřed před Linuxem.

Na trhu je již delší dobu k dispozici miniaturní průmyslový hardware kompatibilní s IBM PC, na kterém lze tyto operační systémy provozovat. V posledních několika letech se škála průmyslového PC hardwaru rozšířila a překotný technologický rozvoj krok za krokem odbourává nutnost utahovat opasek při oblékání operačního systému unixového střihu do miniaturizovaného průmyslového kabátku.




Přinejmenším pro pořádek bychom neměli opomenout zajímavou řadu procesorů Motorola MPC85x/86x, jinak též nástupce podobně orientované starší řady Motorola 68360. Obě tyto řady mají společný on-chip modul zvaný QUICC nebo PowerQUICC, což je univerzální čtyřkanálový sériový komunikační řadič, který lze s minimem externích součástek použít k realizaci asynchronních i synchronních sériových portů a 10 Mb ethernetu. Tyto procesory jsou odjakživa používány např. v nižších modelech routerů od fy. Cisco (cca až po řadu Cisco 2600).

Starší řada 68360 měla jádro příbuzné s rodinou Motorola 68000 někde těsně před 68300, tedy zhruba na úrovni počítačů Commodore Amiga, Atari ST nebo Apple Macintosh Classic. Toto jádro postrádalo MMU a proto se nikdo příliš nenamáhal portovat na něj například Linux. Novější řada MPC8xx má jádro z rodiny IBM PowerPC, které je bezezbytku připraveno podpořit plnohodnotný multitaskový operační systém s ochranou paměti. Linux již několik let podporuje i platformu PowerPC. Lze ho proto nainstalovat například na novějších řadách počítačů Apple. Ale objevují se i "průmyslové" projekty právě s procesory MPC8xx.

Podobně zajímavý je síťový procesor Broadcom BCM1250 - dvojité (SMP) 64bitové jádro kompatibilní s architekturou MIPS, taktované na 600 MHz - 1 GHz, 3x integrovaný Gb Ethernet (MAC) atd.

Vyvíjet software pro specializovaný průmyslový počítač na platformě MPC8xx nebo BCM1250 nicméně stále předpokládá řádově lepší vybavení a znalosti, než jsou k zapotřebí ke startu na průmyslové PC platformě.




Co nabízí platforma PC v miniaturní průmyslové podobě

Miniaturní univerzální průmyslová PC mají typicky většinu součástek, které jinak očekáváme spíše od stolního počítače: řadič a zásuvky pro klávesnici a myš, grafický čip s výstupem na analogový VGA monitor (případně digitální výstup na LCD panel), z vnějšku přístupné sériové porty. Základem je samozřejmě procesor z rodiny x86 a paměť RAM, která může být osazená napevno nebo rozšiřitelná. Uvnitř jsou dále k dispozici rozhraní IDE (pro 2.5" pevný disk) a pro disketovou jednotku. Dokonce BIOS Setup je typicky v zásadě stejný jako na stolních počítačích.


Jedná se tedy s trochou nadsázky o obyčejné PCčko stlačené do miniaturních rozměrů. Pokud se všechny obvyklé konektory nevejdou na vnější panely skříňky, nevadí - periferie, které se běžně nepoužívají, jsou vyvedeny na přímý konektor někde uvnitř na desce, na který lze připojit konverzní kabel (bývá součástí standardní výbavy).

Je však třeba připustit, že miniaturní rozměry skříňky a průmyslové podmínky provozu kladou na PC hardware specifické požadavky.

Hardware musí zabírat co nejméně místa, aby se do malého prostoru vešel. Kromě toho je omezena celková tepelná ztráta zařízení, jednak kvůli malé ploše pro přestup tepla, jednak kvůli potenciálně vyšší teplotě prostředí. Navíc je tu požadavek na minimalizaci točivých součástí a odolnost schránky vůči vlivům prostředí. To omezuje využitelnost větráků a diskových pamětí.

Procesor a čipset

Těmto požadavkům nejlépe odpovídají specializovaná "průmyslová" řešení, která nabízejí výrobci jako National Semiconductors nebo Via - jedná se o vysoce integrované čipy, které sdružují do jednoho či dvou pouzder procesor, north bridge, grafiku a další periferie, to vše při minimalizaci spotřeby energie, takže takováto dvojice čipů může běžet i bez pasivních chladičů.
Podobně i "velcí" výrobci platformy x86, jako Intel a AMD, nabízejí morálně starší procesory v průmyslovém provedení - v miniaturním pouzdře, vyrobené v jemnějším litografickém rastru, a tedy s nižší spotřebou. V úvahu připadají také "mobilní" varianty desktopových procesorů, které mají opět typicky menší spotřebu a tepelnou ztrátu. Novým hráčem na tomto trhu je Transmeta. Daní za nízkou spotřebu je přesto typicky nižší hodinový kmitočet, tj. ve srovnání se soudobými stolními čipy nižší výkon.



Mechanické uspořádání

Skříňky a základní desky miniaturních průmyslových PC se vyrábějí v mnoha více či méně standardních formátech. Konkrétní výrobce obvykle nabízí vzájemně kompatibilní skříňky a desky o typizovaných rozměrech.

Pro ilustraci, u různých výrobců se vyskytují namátkou například následující formáty desek: 8x5.75", 5.7x4", 3.7x4.5", 3.7x3.9", 68x40mm. Větší formáty mají dost místa na některé standardní konektory pro PC periferie - případně jsou na desce miniaturní přímé konektory, ke kterým se standardní periferie v případě potřeby připojují přes konverzní kabely. Nejmenší formáty mají podobu DIMM nebo SO-DIMM modulů a potřebují backplane s příslušnou paticí, aby vůbec bylo možné připojit je k napájecímu zdroji a externím perifériím - tyto nejmenší moduly jsou určeny především pro použití v zákaznických základních deskách.


Formát Advantech 3.5" Biscuit PC


Formát Advantech 5.25" Biscuit PC

Asi jediným skutečným standardem je PC/104 a PC/104plus. Tento standard definuje rozměr desky (90x96 mm) a systémovou sběrnici - rozměry a umístění konektorů, zapojení a protokol. Zajímavou mechanickou vlastností tohoto standardu je mechanicky neomezené "stohování" procesorových a rozšiřujících desek. Systém nepotřebuje základní desku (její použití není vyloučeno).

Sběrnicová část PC/104 je průmyslovou verzí standardu ISA - pouze konektor je jiný. Obdobně PC/104-Plus přidává navrch sběrnici PCI - oproti standardu PC/104 pouze "přibyl jeden konektor navíc", takže do systému PC/104-Plus lze nadále osazovat i desky PC/104. Díky základu v ISA a PCI je na trhu obrovské množství rozšiřujících desek - na deskách PC/104 se používají běžné ISA a PCI čipy, vyvinuté původně pro "stolní" verze těchto standardů.

Z pohledu elektrické spolehlivosti už stohování PC/104 tak úžasně nepůsobí - sériově zapojené přechodové odpory v konektorech důvěru zrovna nebudí. V praxi se ovšem vysoké stohování nepoužije - typický miniaturní motherboard obsahuje vše potřebné, např. včetně integrovaného Ethernetu, takže rozšiřujících desek je potřeba malý počet, pokud vůbec nějaké.


Sběrnice PC/104 je stohovatelná.
(Obrázek pochází z
Linux Mini-cluster HOWTO)

Flashdisky

Minimální prostor a potřeba vyloučení točivých součástí také vedou k většímu využití Flash disků. Tyto existují buď jako čipy v pouzdru DIL na způsob tradičních EEPROM pro uložení BIOSu, nebo jako moduly CompactFlash. Existují také PCMCIA flashdisky, nebo PCMCIA adaptéry pro CompactFlash média.

Potažmo různé modely průmyslových motherboardů a procesorových desek obsahují buď patice pro DIL flashdisky, nebo CompactFlash či PCMCIA sloty. V praxi pak volba typu flashdisku závisí na mnoha okolnostech - ani ne tak na ceně samotného flashdisku, jako spíš na tom, jaký druh patice je k dispozici v počítači, který se nám z toho či onoho důvodu všobecně zamlouvá. K dispozici jsou také přídavné ISA a PCI karty s paticí pro DiskOnChip a CompactFlash adaptéry na IDE kabel.

CompactFlash je striktní standard, velmi populární v oblasti spotřební elektroniky. Pokud pomineme miniaturní dvouřadý konektor CF karet, který je patrně specialitou tohoto média, jedná se v zásadě o standardní IDE disk, který lze připojit na standardní IDE řadič. Mimochodem, firma IBM vyrábí točivé magnetické IDE disky ve formátu CF (řada MicroDrive).
Hardwarová emulace disku na médiu CF je bezchybná. Jenom přenosová rychlost zejména při zápisu je nižší než u dnešních točivých disků.

   
CompactFlash - detail konektoru, redukce na IDE

PCMCIA flashdisky se historicky vyskytovaly ve dvou variantách: buď jako paměťový čip přímo mapovaný do paměťového prostoru PC (tzv. "lineární" flash), nebo nověji jako IDE disk včetně řadiče - zasunutím do notebooku tedy přibude do počítače další IDE řadič s jedním diskem. Podobně PCMCIA adaptér pro CF médium poměrně přesně odpovídá IDE řadiči a tedy adaptér s médiem je takřka totéž jako "monolitický" PCMCIA flashdisk. Zajímavým exotickým využitím této skládačky je například aplikace v zařízeních vyšších modelových řad u firmy Cisco.


Lineární PCMCIA flash


ATA PCMCIA flash

     
PCMCIA adaptéry pro CompactFlash média

Flashdisků v pouzdu DIL je na trhu několik modelů od různých výrobců - typickým představitelem je rodina produktů Disk-On-Chip od firmy M-Systems.

Flashdisky v pouzdru DIL mohou disk emulovat jedině softwarově. Pokud má systém z takového flashdisku bootovat, potřebuje k tomu podporu v BIOSu. Přesněji řečeno, DIL flashdisk obvykle emuluje standardní EEPROM v adresním prostoru PC alespoň do té míry, že si příslušný "diskový BIOS" nese s sebou sám - tento kus kódu se zařadí do startovací sekvence BIOSu a pověsí se na obsluhu relevantních softwarových přerušení. Podobně to dělají BIOSy přídavných diskových řadičů, grafických a síťových karet apod. BIOS DIL flashdisku tímto způsobem beze zbytku emuluje pevný disk či disketu pro všechen software, který využívá pro přístup k disku výhradně služby BIOSu na standardních vektorech přerušení. Není tedy třeba mít podporu DIL flashdisku přímo v BIOSu základní desky.

Pozorný čtenář a znalec operačních systémů již při čtení posledního odstavce zajisté odhalil zradu. Ano, správně - nainstalovat na emulovaný disk MS-DOS nebude problém, ale potíž přijde ve chvíli, kdy chceme obsah DIL flashdisku "vidět" i z Linuxu nebo BSD. Nedejbože z něj startovat - pak musí flashdisk vidět nejen jádro operačního systému, ale už zavaděč, což také není samozřejmost.

Tento problém je vyřešen, rozhodně v Linuxu, údajně i v rodině BSD. Existují přinejmenším "záplaty" pro Linux, lilo a grub, které pokryjí přístup k disku a start. Lehce neaktuální podpora pro "Memory technology devices" je ostatně i ve standardním kernelu. Konkrétně v případě zařízení M-Systems Disk-On-Chip těchto záplat a ovladačů existuje několik verzí, jednak od výrobce, druhak z open-source komunity, což je dále komplikováno neustále novými modely hardwaru - dají se najít verze ovladačů a zavaděče, které si s daným hardwarem rozumí.
Proč se vlastně zabývat softwarovými problémy kolem DIL flashdisků, když máme compactflash? Třeba proto, že DIL flashdisky vycházejí levněji než CF média a zdá se, že dosud nevycházejí z módy, a také proto, že některé miniaturní plaformy patici pro CF vůbec nenabízejí. Většinou je k dispozici jedno nebo druhé.

Obě podoby flashdisku mají společné to, že se s nimi v konečném důsledku pracuje podobně jako s pevným diskem - médium má partition table, lze na něj použít program fdisk, ve vytvořených oddílech lze používat libovolné souborové systémy.
Jistou nectností flashdisků obecně je postupné opotřebení a destrukce opakovanými zápisy - více o tom v kapitole o doporučené konfiguraci softwaru.
V konkrétní aplikaci mohou být hardwarovou alternativou miniaturní a otřesuvzdorné točivé disky pro notebooky ve formátu 2.5" a 1.8".

Vývoj, ladění, instalace

Jak již bylo výše zmíněno, průmyslová mini-PC jsou typicky vlastně zmenšeninou stolního počítače. Ladění přímo na cílovém hardwaru je proto velmi snadné. V laboratoři a vlastně i v terénu lze připojit všechno, co je potřeba - klávesnici, monitor, disketu, CDrom, nebo třeba jen sériovou konzoli (notebook s terminálovým emulátorem). Pod Linuxem/xBSD je samozřejmě možný také vzdálený přístup čistě po síti, a záleží takřka výhradně na kapacitě disku, jaký uživatelský komfort si na průmyslovém miniPC můžeme dovolit.

Obvykle je k dispozici IDE řadič, vyvedený na nějaký standardní konektor - často jde o miniaturní IDE, jak je známe z 2.5" disků. Případně na atypický konektor, ke kterému je k dispozici konverzní kabel. Pomocí pasivních konektorových redukcí pak není problém připojit 2.5" nebo 3.5" disk, ATAPI CDrom nebo CompactFlash médium.

Není proto problém nainstalovat "stolní" distribuci zvoleného operačního systému přímo na průmyslové mini-PC. Kvůli typicky nižšímu procesorovému výkonu a menší RAM ale v dnešní době není tato varianta pro seriózní vývoj příliš komfortní. Přinejmenším kompilace jádra OS proběhne na moderním silném stolním PC výrazně rychleji, a také integrovaná vývojová prostředí jsou na stolním PC svižnější a vzhlednější. S ohledem na cenu vyvíjeného finálního produktu bude také zřejmě zapotřebí poskládat minidistribuci, která se vejde na pokud možno co nejmenší flashdisk. Velký disk připojený k průmyslovému PC je proto skutečně spíše vývojovým mezikrokem, který časem odpadne.

Instalaci hotového softwarového balíku na cílové miniPC lze provádět různými způsoby.

Existují adaptéry do stolních PC jak pro CompactFlash tak pro DIL flash (DiskOnChip). Hotový software lze instalovat v cílovém miniPC z bootovatelného CD nebo po síti (s bootem z diskety, z CD nebo po síti).
Pokud používáme ve velkých výrobních dávkách jediný typ a velikost flashdisku, je možné rozkopírovat na cílová média surový obraz disku - a to buď příkazem dd pod Linuxem/BSD, nebo v případě DiskOnChipu třeba dodávanou utilitou v prostředí DOSu.

Pokud potřebujeme instalovat software na různé typy a velikosti diskových médií, nezbývá než použít skript, který instalaci v maximální míře zautomatizuje. Je třeba rozdělit cílový disk, v oddílech vytvořit souborové systémy, přimontovat je na podadresář běžícího systému a nakopírovat data, třeba z tarového archivu, nebo příkazem `cp -dpR` ze zdrojového adresáře. Nakonec je třeba nainstalovat zavaděč.

Pokud posledně zmíněným způsobem instalujeme software na flashdisk přimontovaný ve stolním vývojovém počítači, můžeme narazit na problém právě se zavaděčem, pokud bude v cílovém stroji flashdisk připojen na jiném kanálu/pozici IDE řadiče než ve vývojovém systému. Lze to do značné míry ošetřit konfigurací zavaděče, ale přesto se z tohoto pohledu jeví jako optimální instalovat systém v cílovém stroji, nebo alespoň na správném kanále/pozici, třeba s použitím vlastního bootovacího CD.

Existuje samozřejmě i možnost diskless bootu cílových zařízení po síti - ale to je téma na samostatný článek.

Poznámky ke skladbě softwaru

Jak již výše zmíněno, s ohledem na cenu flash médií je vhodné při použití tohoto typu "disku" ručně vyrobit minidistribuci.

Volitelná minimální instalace dnešních "velkých" distribucí Linuxu zabere několik set megabajtů diskového prostoru a poběží v ní spousta zbytečných démonů. Je tedy třeba systém dále minimalizovat.

Při výrobě minimální distribuce lze zvolit jednu z několika strategií. Především lze buď postupně odmazávat nepotřebné soubory a sledovat, co to udělá, nebo lze naopak stavět od nuly na prázdném disku a sledovat, co tomu schází tentokrát.

Známý tip praví, že ušetřit místo lze použitím speciální "disketové" sady knihoven (hlavně libc), shellu a utilit - jedna taková populární distribuce se jmenuje Busybox.
Případně lze zvolit radikální přístup a la LFS - zkompilovat všechno ze zdrojového kódu.

Autorův oblíbený postup je postavit mini-linux od nuly kopírováním pouze nezbytných součástek z živé "velké" distribuce, s přídavkem vlastních konfiguračních souborů a skriptů. Má to své háčky, ale výhodou je, že základní software není třeba kompilovat ze zdrojových kódů, natožpak proti podivné minimalistické odrůdě libc. Na cílovém stroji potom všechny knihovní funkce fungují tak, jak je na ně vývojář zvyklý ze své pracovní stanice. Pro úsporu diskového prostoru je vhodné použité knihovny a programy očistit od ladících informací programem ‘strip’.

Kopírování souborů provádí pochopitelně skript - aby byly výsledky opakovatelné. Při vytváření vlastní minidistribuce (resp. kopírovacího skriptu) se vývojář nejlépe naučí, jak fungují základní systémové součástky Linuxu - což se v každém případě velice hodí. Bootloader, kernel, init, shell, rc.sysinit, další rc skripty, getty, login... není to o tolik složitější než MS-DOS.

Klíčově užitečné při této činnosti jsou dva ladící nástroje: strace a ldd.

Strace se pověsí na konkrétní proces (program) a vypisuje systémová volání a jejich návratové hodnoty - jaké soubory se program pokusil otevřít a kde je hledal, zda se mu to povedlo, co z nich přečetl a co do nich zapsal apod.

Ldd prozkoumá daný binární program a vypíše dynamicky linkované knihovny, které tento program potřebuje.

Minimální systém vytvořený kopírováním z moderní "velké" distribuce se v každém případě již nevejde na 1.44MB disketu - ani při použití komprimovaného initial ramdisku. Minimem je patrně 4MB flashdisk, 8MB flashdisk již poskytne dostatek prostoru k testování zákaznických aplikací.

Flash média je lépe používat v režimu read-only. Když necháme Linux na flashdisk zapisovat všechno co si umane, flashdisk se časem (po několika měsících) opotřebuje a zhavaruje. Což je o důvod víc pro výrobu vlastní minidistribuce, ve které nepoběží nic zbytečného. Kromě toho má flashdisk namountovaný v zapisovatelném režimu obecně vyšší sklon k rozsypání souborového systému při výpadku napájení.

Věc má spoustu zajímavých háčků a neméně zajímavých řešení. S podrobnostmi rádi poradí specialisté od firmy FCC Průmyslové Systémy s.r.o.

Hardware od firmy Advantech

Firma Advantech nabízí několik zajímavých modelů miniaturních průmyslových PC, které připadají v úvahu jako cílová platforma pro Linux/xBSD pro potřeby průmyslového měření a regulace, případně jako síťová zařízení pro všeobecné použití.

Prakticky celá řada PCM-xxxx představuje počítače z této kategorie. Všechny modely této řady jsou vybaveny sběrnicí PC/104, vyšší modely mají PC/104-Plus.
Všechny modely mají standardní Award BIOS.

S ohledem na rozměry jsou zejména zajímavé modely ‘3.5" biscuit PC’, tj. desky o rozměrech 5.7x4", které lze zamontovat do typizované skříňky pro tento rozměr. Pro ilustraci následuje neúplný přehled základních parametrů:
(DoC = DiskOnChip, CF = CompactFlash, TV = TV výstup)

Řada PCM-xxxx dále obsahuje rozměrnější ‘5.25" SBC’ modely (8"x5.75), které podporují patřičně výkonnější procesory, mají standardní konektory pro více periferií apod.

Za zmínku dále stojí řada SOM - moduly pro vestavbu do zákaznických základních desek. Modul se na základní desku osadí do patice SODIMM-144 nebo do skupiny proprietárních konektorů. Moduly SOM-23xx mají rozměry 68x100 mm a konektor SODIMM-144, moduly SOM-44xx mají rozměry 95x114 mm a proprietární konektory.

(SOM-4470 a 4472 nemají CF/DoC)

Zajímavou novou řadou výrobků je UNO-2xxx - v elegantní schránce z masivního hliníku se ukrývá procesor 486 až NS Geode (připravují se modely s procesory VIA C3/Eden a Intel Celeron) s bohatou periferní výbavou. Srdcem některých modelů je SODIMM modul SOM - důležitou součástkou je tedy speciální základní deska nesoucí doplňkové periferie. V tuto chvíli jsou k dispozici v různých kombinacích přídavné porty USB, RS 232/422/485, izolované digitální vstupy/výstupy a PCMCIA, připravuje se varianta s dvěma CAN porty a dvoukanálovým analogovým vstupem.

Literatura

http://www.pc104.org
http://www.pc104.com
http://e-www.motorola.com/webapp/sps/site/prod_summary.jsp?code=MPC860
http://www.broadcom.com/products/1250.html
http://www.broadcom.com/products/91250A.html
http://www.advantech.com/EPC
http://www.advantech.com/products/model.asp?Category_ID=1-D6HAD&bu=