Vestavné systémy
V přehledovém článku je vymezen pojem vestavný (embedded) systém a jsou uvedeny charakteristiky a funkce vestavných systémů a požadavky na ně kladené. Je pojednáno o možných přístupech ke konstrukci vestavných systémů, o softwaru pro ně a o vlastnostech současných mikrořadičů určených pro vestavné aplikace.
1. Co jsou to vestavné systémy
Vestavné systémy se staly nedílnou součástí života lidí v průmyslově vyspělých zemích. Běžný občan se s nimi setkává, aniž by si to příliš uvědomoval, téměř na každém kroku. Co je to tedy vestavný systém (anglicky embedded systém)? Odpověď na tuto otázku není snadná ani jednoznačná. Význam pojmu je poměrně široký a v literatuře lze nalézt mnoho definic vestavných systémů, např.:
Jde o systém obsahující jeden nebo několik mikroprocesorů, jehož (jejichž) úkolem je řídit činnost displejů, motorů, světel nebo jiných přístrojů. Program prováděný mikroprocesorem je „mozkem“ stroje nebo přístroje. Dostává vstupní informace od operátora nebo ze snímačů a ovládá elektronické nebo mechanické zařízení.
Vestavný systém je malý počítačový systém, který je zabudován uvnitř zařízení (stroje, elektrického spotřebiče, elektronického systému) za účelem dosažení vyšší úrovně inteligence a tím lepší nebo efektivnější činnosti daného zařízení.
Vestavný systém je dedikovaný počítač pracující v reálném čase jako součást nějakého uceleného systému. Slouží pro řízení celého systému a poskytuje výpočetní služby ostatním částem systému.
Počítač, který je zabudován do systému, ale pro uživatele není jako počítač viditelný.
Jde o cílové prostředí umožňující program pouze provádět (execute-only target enviroment), např. mikroprocesorový systém s programem uloženým v pevné paměti. V samotném vestavném systému nelze program vyvíjet a vývoj se uskutečňuje např. na hostitelském PC (což již ale v poslední době přestává platit – viz dále).
2. Charakteristika vestavných systémů
Vestavné systémy lze charakterizovat ze dvou různých úhlů pohledu. Uživatele příliš nezajímá, co je uvnitř, ale jsou pro něj důležité užitné vlastnosti, spolehlivost a cena. Naopak konstruktéři a výrobci považují za podstatné otázky metodiky vývoje, dostupnosti klíčových součástek, požadavků na přístrojové vybavení atd.
Z pohledu uživatele lze vestavné systémy charakterizovat takto:
jde o systémy určené pro jednotlivou konkrétní aplikaci a navržené k vykonávání pouze určité úlohy nebo skupiny úloh,
jsou na ně kladeny různé omezující požadavky, např. na rozměry, cenu, příkon, rychlost uvedení na trh apod.,
jde o reaktivní systémy (reactive systems), tedy systémy, které s využitím vhodných prostředků sledují okolní prostředí a odpovídají na podněty z něj nebo řídí v reálném čase,
jsou u nich kladeny kritické požadavky na bezpečnost a spolehlivou funkci, neboť selhání hardwaru nebo softwaru může být životu nebezpečné (např. u systémů jako tzv. airbag nebo ochrany před zablokováním kola automobilu).
Z pohledu vývojáře se vestavné systémy jeví jako systémy:
jejichž hardware i software jsou vyvíjeny paralelně,
pro jejichž konstrukci je na trhu velké množství různých typů mikroprocesorů,
pro něž jsou k dispozici různé operační systémy, přičemž se ve vestavných aplikacích převážně používají operační systémy reálného času,
disponující menším množstvím systémových zdrojů, než je tomu u stolních systémů (např. menší kapacitou paměti),
k jejichž vývoji jsou nutné vesměs dosti nákladné speciální vývojové nástroje jako emulátory, logické analyzátory, speciální překladače vyšších programovacích jazyků se zaručenou spolehlivostí generovaného kódu apod.,
u nichž je ladění programového vybavení podstatně složitější než u programů pro PC,
jejichž hardware i software by měly být až extrémně robustní (ve smyslu odolnosti proti vnějším poruchám, rušivým signálům, změnám teploty okolí apod.).
3. Funkce požadované od vestavných systémů
Mezi základní aplikace vestavných systémů patří sběr dat, přímé číslicové řízení a interakce člověka se strojem.
Data jsou sbírána prostřednictvím čidel, za nimiž většinou následují další analogové obvody pro impedanční přizpůsobení, galvanické oddělení a úpravu úrovně signálu. Upravený signál je v A/D převodníku převeden do číslicové formy a předán řídicímu systému. V jednodušších případech přicházejí vstupní data v podobě logických signálů.
Řídicí systém obvykle realizuje určitou formu diskrétního regulačního algoritmu, jako jsou např. proporcionálně-sumačně-derivační (PSD) algoritmus, různé typy identifikačních a adaptivních algoritmů, algoritmy optimálního řízení nebo fuzzy algoritmy. Důležitou funkcí řídicího systému je vyhodnocování a zpracování chybových signálů, tzv. alarmů.
Vestavné systémy bývají součástí zařízení, jako jsou např. pračky, televizory, měřicí přístroje, tiskárny apod., kde je třeba, aby uživatel mohl zadávat ovládací příkazy nebo nastavovat požadované hodnoty. Systémy naproti tomu musí uživateli nebo i nadřazenému systému předávat provozní informace, indikovat poruchové stavy, popř. zobrazovat naměřené hodnoty. V těchto případech je velmi důležité vhodně vyřešit komunikaci člověka s přístrojem anebo strojem. Běžně se problém komunikace s uživatelem řeší pomocí malé klávesnice nebo jen několika nastavovacích tlačítek a několikařádkového zobrazovače LCD.
4. Příklady vestavných systémů
Použití vestavných systémů je opravdu velmi široké. Nelze zde proto vyjmenovat všechny možné aplikace. Mezi nejtypičtější oblasti použití vestavných systémů patří:
automobily: automatické řízení dodávky paliva, ochrana kol před zablokováním (ABS), automatické zamykání dveří atd.,
domácí spotřebiče: vestavné mikrořadiče (microcontroller) řídí činnost praček, radiopřijímačů, televizorů, videorekordérů apod.; v nepříliš daleké budoucnosti lze očekávat nástup ovládání domácích spotřebičů na dálku přes internet,
- čipové karty,
- telekomunikace (mobilní telefony),
- senzorika (inteligentní čidla),
- měřicí a diagnostické přístroje (jejich ovládání a autonomní řízení činnosti),
- průmyslové regulátory, regulátory plynových kotlů v domácnostech apod.,
- servomechanismy, roboty,
- vojenské a kosmické aplikace.
5. Konstrukce vestavných systémů
Při konstrukci vestavných systémů lze v zásadě vyjít z jednoho z těchto tří koncepčních přístupů:
realizace vestavného systému pomocí jednoúčelového hardwaru,
použití procesoru speciálně určeného pro danou aplikaci – ASIP (Application Specific Processor),
konstrukce založená na použití klasického mikroprocesoru pro všeobecné použití nebo mikrořadiče.
Systémy založené na jednoúčelovém hardwaru obsahují číslicové obvody umožňující provádět jediný jednoúčelový program. Nemají paměť programu. Jejich konstrukce obvykle bývá založena na použití plně zákaznických obvodů s vysokým stupněm integrace (Very Large Scale Integration – VLSI), zákaznických obvodů (Application Specific Integrated Circuit – ASIC, např. hradlová pole) nebo obvodů PLD (Programmable Logic Device). Výhodou této koncepce jsou velká rychlost, malá spotřeba a malé rozměry výsledného systému. Příkladem systémů založených na jednoúčelovém hardwaru může být matematický koprocesor nebo akcelerátor pro grafické operace.
Dedikované procesory typu ASIP mají speciální funkční jednotky a architekturu optimalizovanou pro příslušný typ úloh. Tím je dosaženo velké rychlosti zpracování dat. Systémy s ASIP obsahují paměť programu. Výhodou systémů založených na dedikovaných procesorech jsou částečná flexibilita, dobrá výkonnost, malé rozměry a malá spotřeba. Typickým příkladem ASIP jsou známé signálové procesory (Digital Signal Processor – DSP). Ty obsahují speciální funkční jednotky jako hardwarové násobičky, kruhové posouvače (barrel shifter) a jsou optimalizovány pro úlohy typu, jako je např. výpočet rychlé Fourierovy transformace (Fast Fourier Transformation – FFT), číslicová filtrace, konvoluce nebo operace s maticemi.
Mikroprocesory pro všeobecné použití nemají architekturu optimalizovanou pro specifický typ úloh. Obvykle mají velké pole registrů a obecnou aritmeticko-logickou jednotku (Arithmetic-Logic Unit – ALU). Systémy s mikroprocesory mají paměť programu. Výhodou jsou krátká doba uvedení na trh, nízké náklady na vývoj a velká flexibilita.
Pro realizaci vestavného systému samotný mikroprocesor samozřejmě nestačí. Je třeba jej doplnit přídavnými obvody, jako jsou paměti, řadič přerušení, obvody vstupů a výstupů (v/v), komunikační obvody atd. Tím však rostou rozměry i cena systému. Řešením tohoto problému je integrace mikroprocesoru a periferních obvodů na jeden čip. Vznikne tak obvod typu SOC (System-On-Chip) nebo mikrořadič.
Obvody SOC obvykle obsahují mikroprocesor, obvody v/v, grafický a zvukový adaptér, řadič Ethernetu apod. Zjednodušeně lze říci, že obvod SOC na jednom čipu poskytuje funkce ekvivalentní funkcím základní desky PC.
Mikrořadič vznikne také integrací mikroprocesoru a periferních zařízení společně na jeden čip. Tyto periferie se však liší od periferií obvodu SOC. Jsou většinou orientovány na styk vestavného systému s okolními subsystémy (čidly, výkonovými členy), nikoliv s člověkem, a na zajištění dalších funkcí, které jsou od vestavného systému požadovány (komunikace po průmyslových sběrnicích, watchdog atd.). Typické prvky mikrořadiče integrované spolu s výpočetním jádrem (mikroprocesorem) na jeden čip jsou:
paměti RAM, ROM, EPROM, EEPROM a flash,
binární v/v rozhraní,
sériové komunikační kanály (synchronní i asynchronní),
A/D a D/A převodníky,
čítače vnějších událostí, časovače pro měření a generování časových intervalů a hodiny reálného času (Real Time Clock – RTC),
řadiče přerušení,
obvody pro generování pulsní šířkové modulace (Pulse Width Modulation – PWM),
hlídací obvody (watchdog),
řadiče sběrnic datových sítí jako např. Ethernet, CAN (pro průmysl), I2C (zejména pro spotřební elektroniku), USB, J1850 (automobilní sběrnice).
6. Mikrořadiče pro vestavné systémy
Prvním všeobecně dostupným mikrořadičem byl osmibitový mikrořadič I8048, uvedený na trh firmou Intel v roce 1976. Jeho zdokonalením vznikl v roce 1980 také osmibitový mikrořadič I8051. Ten dosáhl značné popularity a rozšíření. Hlavním výrobním programem firmy Intel jsou však procesory pro PC a servery. Největším světovým výrobcem mikrořadičů se stala firma Motorola. Spolu s ní a firmou Intel se výrobě mikrořadičů věnují i další světoví výrobci, jako Hitachi, Toshiba, Siemens, Atmel, Microchip Technology (malé procesory typu PIC s architekturou RISC).
Charakterizovat moderní konstrukci mikrořadiče lze na příkladu nové řady šestnáctibitových mikrořadičů HCS12 firmy Motorola, která je sice určena především pro automobilový průmysl (např. ABS), ale jistě najde široké uplatnění i v mnoha jiných vestavných aplikacích. Na čipu těchto mikrořadičů mohou být integrovány tyto periferní subsystémy:
tři typy paměti: 32kB až 512kB paměti flash třetí generace pro uložení programu, 2kB až 14kB paměti RAM pro umístění proměnných a zásobníku a 1kB až 4kB paměti EEPROM pro uložení kalibračních konstant, údajů výrobce apod.,
průmyslová a automobilní rozhraní: až pět rozhraní CAN (verze 2.0a/2.0b) a po jednom rozhraní J1850 a I2C,
až dva kanály SCI (asynchronní sériový kanál typu UART) a až tři kanály SPI (synchronní sériový kanál pro připojení A/D, D/A převodníků, kalendářových obvodů apod.); USB a další sériová rozhraní jsou plánována,
až dva osmikanálové desetibitové A/D převodníky,
šestnáctibitový osmikanálový časovač s jednotlivými kanály konfigurovatelnými jako záchytné registry nebo komparátory a dva šestnáctibitové pulsní akumulátory (softwarově překonfigurovatelné na čtyři osmibitové),
osm kanálů osmibitových PWM nebo čtyři kanály šestnáctibitové PWM,
modul generátoru hodinových impulsů obsahuje oscilátor, fázový závěs (Phase Locked Loop – PLL) pro násobení kmitočtu oscilátoru, hodiny reálného času a obvody pro generování signálu reset. Zdrojem signálu reset může být COP (Computer Operating Properly), watchdog timer, obvod pro hlídání poklesu kmitočtu oscilátoru pod minimální hodnotu, logická úroveň nula na vývodu RESET nebo připojení procesoru na napájecí napětí,
integrovány jsou základní rozhraní pro ladění (background debug interface) a modul hardwarových zastavení (breakpoint), společně umožňují ladit aplikace přímo v systému při použití pouhých dvou vodičů (signálového a zemnicího), bez potřeby dalšího nákladného vybavení,
až 91 obvodů v/v, z nichž některé jsou opatřeny číslicovými filtry pro odstranění rušivých zákmitů např. od mechanických kontaktů.
Dvanáct členů této rodiny mikrořadičů je k dispozici již nyní a dalších dvacet hodlá firma Motorola uvést na trh do konce tohoto roku. Podrobnosti lze nalézt na http://e-www.motorola.com
Mezi nejdůležitější vývojové trendy v oblasti mikrořadičů pro vestavné aplikace v současnosti patří:
přechod od osmibitových procesorových jednotek k šestnáctibitovým pro méně náročné a k 32bitovým pro náročnější aplikace,
použití pokročilých architektur jako RISC (Reduced Instruction Set Computer – procesor s redukovanou množinou instrukcí), řetězení instrukcí (pipelining), superskalární architektury (superskalární procesory mají několik funkčních jednotek, např. ALU, což procesorové jednotce umožňuje vykonávat několik operací současně; jde o paralelismus na úrovni instrukcí),
integrace pamětí flash s kapacitou řádově stovek kB až MB na čip mikrořadiče namísto dříve používaných programovatelných pamětí (PROM, EPROM), které byly integrovány na čipu (jejich kapacita však byla řádu jednotek, maximálně desítek kB) nebo se připojovaly k mikrořadiči z vnějšku,
možnost ladit aplikace bez nutnosti vyjmout procesor ze systému a bez použití emulátoru (in circuit debuging): bloky integrované na čipech moderních mikrořadičů umožňují za chodu běžného programu načítat a modifikovat hodnoty proměnných, zastavovat, spouštět a krokovat program a číst a modifikovat obsah registrů procesoru (např. již zmíněné prostředky pro ladění u mikrořadičů Motorola HCS 12).
7. Software pro vestavné systémy
Dříve se programové vybavení pro vestavné systémy vytvářelo převážně v assembleru a někdy i přímo ve strojovém kódu. Bylo to převážně dáno malou rychlostí a malou paměťovou kapacitou tehdejších systémů. Pro použití vyššího programovacího jazyka nebyla optimalizována ani architektura centrální procesorové jednotky. Tento přístup je v současné době již překonán. Všichni přední světoví výrobci moderních mikrořadičů navrhují architekturu procesorové jednotky přímo pro podporu vyšších programovacích jazyků a příliš neuvažují o tom, že by tyto procesory byly programovány v assembleru. Paměťové kapacity vzrostly z dřívějších jednotek na stovky kilobytů a v současnosti již i na megabyty. Stejně zásadně vzrostla i rychlost provádění kódu. S rozvojem PC byly vytvořeny efektivní překladače, jimiž vygenerovaný výsledný kód je rychlejší a menšího objemu, než jaký by člověk sám dokázal vytvořit pomocí assembleru. Použití vyššího programovacího jazyka znamená:
rychlejší vývoj softwaru a z toho plynoucí menší náklady na vývoj celého výrobku,
snazší údržbu softwaru,
značné zjednodušení týmové práce na jednom softwarovém projektu,
vzrůst bezpečnosti softwaru,
přenositelnost programů mezi různými typy procesorů, a tudíž možnost využívat odladěné a dlouhodobě ověřené algoritmy.
Protože v něm lze snadno pracovat na nízké úrovni (blízko hardwaru), využívá se pro programování vestavných systémů převážně programovací jazyk C. V současné době se u rozsáhlejších projektů začíná používat jazyk C++ (objektové rozšíření jazyka C).
Jako operační systémy se pro vestavné aplikace používají převážně operační systémy reálného času (Real-Time Operating System – RTOS). Mezi nejčastěji užívané patří:
Windows CE (PocketPC), vytvořený pro vestavné aplikace firmou Microsoft,
Palm OS, v současnosti podporovaný mnoha významnými firmami,
CMX, umožňující spojovat osmibitové a šestnáctibitové procesory v sítích s protokolem TCP/IP,
RTLinux, což je verze systému Linux určená pro práci v reálném čase,
Symbian, určený pro telekomunikační zařízení.
Například uvedený systém CMX je k dispozici v několika verzích jako CMX Tiny+, CMX TCP/IP, CMX MicroNet a CMX RTX. Každá jednotlivá verze je určena pro specifické použití. Například CMX Tiny+ je multitaskingový operační systém reálného času pro procesory Motorola 68HC08, Hitachi H8/300 & H8/300H & H8S, Atmel AVR aj. Podrobnosti lze nalézt na http://www.cmx.com
8. Závěr
Vestavné systémy jsou v současné době dynamicky se rozvíjejícím oborem, který zasahuje do různých aplikačních oblastí, a to nejen technických, ale např. i do lékařství apod. Tento trend se pravděpodobně bude dále prohlubovat. Lze očekávat, že kvalita a komfort našeho života budou v budoucnu stále více ovlivňovány „inteligencí“ vestavných systémů. Poroste také vliv vestavných systémů na ekonomiku.
Literatura:
[1] MACHO, T.: Embedded systémy. In: Sborník ze semináře Teorie a praxe v automatizaci, ÚAMT FEKT VUT v Brně, listopad 2002.
[2] BERGER, A.: Embedded Systems Design: An Introduction to Processes, Tools, & Techniques. CMP Books 2001.
[3] VAHID, F. – GIVARGIS, T.: Embedded System Design: A Unified Hardware/Software Introduction. John Wiley & Sons 2002, ISBN 0471386782.
[4] MICHAEL, B.: Programming Embedded Systems in C and C++. O’Reilly Books 1999, ISBN 1-56592-354-5.
[5] MORTON, T.: Embedded Microcontrollers. Prentice Hall 2000, ISBN 0-13-907577-1.
[6] VALVANO, J.: Embedded Microcomputer Systems Real Time Interfacing. Brooks/Cole Publishing 2000, ISBN 0534366422.
Ing. Tomáš Macho,
Ústav automatizace a měřicí techniky FEKT VUT v Brně
(macho@feec.vutbr.cz)
|