Proprietary System

1.1 A könyv története és mit fogsz kapni az olvasásából

Egy év alatt, miután befejeztem az első könyvemet, felelevenítettem egy régi kedvenc projektemet, egy autonóm tengeralattjáró építését (E-2 projekt néven), bizonyos, meglehetősen kihívást jelentő funkcionális követelményekkel. Az ötlet kidolgozása során sok órát töltöttem az interneten és máshol, különböző elektromechanikus vezérlőrendszerek és platformok gyors fejlesztésének technikáit kutatva, hogy meglehetősen összetett jelfeldolgozó algoritmusokat futtassak. Bár természetesen több ezer hasznos projekt és információrészlet található az interneten és a hobbi-robotikáról szóló könyvekben, úgy találtam, hogy senki más nem rendelkezik az én pontos prioritásaimmal. Különösen úgy tűnik, hogy nincs egyetlen olyan hivatkozás, amely legalább bevezető megoldásokat gyűjtene össze az összes olyan beágyazott tervezési kérdésre, amely az én projektemet érintette: olcsó (nyílt forráskódú) eszközök és operációs rendszerek használatának szükségessége, számos, meglehetősen kemény valós idejű követelményeket támasztó funkcióra vonatkozó követelmény, valamint az olcsó, szabványos, fogyasztói minőségű alkatrészek használatának vágya, ahol csak lehetséges. A sok témában rendelkezésre álló források vagy nagyon drága ipari alkatrészekre, vagy egyetlen mikrokontroller köré épülő, szigorúan korlátozott rendszerekre koncentrálnak, finoman optimalizált, nem hordozható kóddal a perifériák vezérlésére – ráadásul a perifériák támogatásának nagyon korlátozott skálájával. Ez utóbbi rendszertervezési korlátozások elkerülhetetlenek, ha szűk energiaigény, helyszűke vagy a lehető legalacsonyabb anyagköltség (BOM) mellett dolgozunk, de az ilyen rendszerek megépítése és hangolása egy egyszeri projekt vagy prototípus esetében aránytalanul nagy erőfeszítést jelent. Ráadásul egy ilyen rendszer összeszereléséhez szükséges összes részlet megtanulása óriási feladat; könnyű elveszni a részletek finomhangolásában anélkül, hogy valaha is sikerülne egy teljes, működő rendszert üzembe helyezni. Bosszantó módon, sok finomítást és a gondos tervezés nagy részét, amit a rendszer működőképessé tételéhez elvégeztél, el kell dobnod, ha tényleges termelésbe kezdesz, vagy ha több egységet kell építened, kissé eltérő komponensekkel.

Az E-2 projekt fejlesztése során azt kerestem, hogy hogyan lehet különböző kemény valós idejű modulokat (érzékelőket és működtetőket) építeni, amelyeket könnyen és olcsón össze lehet kapcsolni egy általános célú, Linuxot futtató számítógéppel. A Linux-doboz olyan algoritmusok tesztelésére szolgált, amelyeket később egy kisebb, hűvösebb, energiatakarékosabb feldolgozó modulba lehetett volna átültetni. Szükségem volt egy szilárd alapra az ismert, jó kódokból és technikákból, hogy onnan kiindulva megépíthessem a saját, testre szabott rendszeremet. Ezen kívül szerettem volna egy egyszerű, működőképes útmutatót a beágyazott Linux-disztribúciók építéséhez. A tengeralattjáróm kezdeti, nem bevethető prototípusa esetében nem volt pontos elképzelésem arról, hogy a végleges verzióban mennyi CPU lóerőre lesz szükségem – így nem akartam egy konkrét mikrokontroller-architektúrához kötődni, és nem akartam belegabalyodni abba, hogy egyetlen mikrokontrolleren sok valós idejű feladatot próbáljak finomítani és hangolni. Néhány olyan perifériát – például kamerákat – is használni akartam, amelyeket a legkönnyebben egy általános célú operációs rendszeren keresztül lehet összekapcsolni.

Ezek a követelmények talán az Ön munkájára is hasonlítanak. Valószínűleg Ön is találkozott már olyan helyzetekkel, amikor hasznos lenne automatizálni valamilyen hosszú távú adatgyűjtési kísérletet, vagy létrehozni egy egyszerű automatizált vezérlőt egy programozási, gyártási vagy egyéb feladathoz. Ennek szellemében három másik eset, amikor alkalmaztam a könyvben leírt technikákat:

Egy sor sikeres (kereskedelmi forgalomba kerülő) hálózatba kapcsolt multimédiás készülék kifejlesztése, amelyeket felügyelet nélküli reklám és művészeti galéria alkalmazásokhoz terveztek.

Egy speciális, szinte teljesen automatikus mechanikai hibavizsgáló berendezés kifejlesztése bizonyos szórakoztatóelektronikai cikkekhez.

Egy olyan automatikus nagysebességű datalogger megépítése, amely egy rádiókapcsolatot felügyel és meghatározott vevőkészülékekre célzott DTMF-üzeneteket von ki.

A fenti második tétel különösen érdekes, mert szépen mutatja, hogy ez a könyv milyen gyakorlati értéket képviselhet folyamatirányítási és tesztelési alkalmazásokban. 2002-ben rövid ideig egy multinacionális vállalat egy kis részlegénél dolgoztam, amelynek fő profilja a háztartási és irodai műanyagáruk voltak. Nagyon tanulságos volt megvizsgálni az automatizált tesztberendezéseiket – saját rendszereket -, és összehasonlítani ezeknek a berendezéseknek a költségeit és beállítási bonyolultságát egy egyszerű Linux-alapú SBC viszonylag alacsony költségével és beállítási idejével, amely ugyanazokat a pneumatikus működtetőket és érzékelőket vezérli. Nyilvánvaló, hogy az ilyen típusú, alacsony költségű tesztrendszerek piaca kihasználatlan. Az ebben a létesítményben használt saját fejlesztésű rendszerek csaknem 20 000 dollárba kerültek féltucatnyi aktuátorért és a hozzájuk tartozó PLC-kért, plusz számtalan órányi beállítási időért1. Ezeknek az eszközöknek a vezérlőszoftvere speciális és nem jól ismert volt; valójában a berendezések nagy része kihasználatlanul állt, mert az azokat eredetileg konfiguráló emberek elhagyták a vállalatot. Ezzel szemben ugyanezeket a feladatokat könnyedén el lehetett volna végezni egy néhány száz dollárba kerülő hagyományos PC-vel, plusz talán 200 dollárral működtetőnként a kapcsolódó pneumatikáért. Ennél is fontosabb, hogy egy ilyen rendszer vezérlőszoftvere egy egyszerű C program, amelyet bármely hozzáértő informatikus vagy elektronikai mérnök szakos hallgató könnyen megérthet és adaptálhat; a cég laboratóriumában több jelölt is könnyen elérhető volt.

Az e könyv megszületéséhez vezető kutatás jellegéből adódóan a szövegbe beleszórtam egy sor tengerészeti részletet, amelyek közül nem mindegyik releváns közvetlenül a beágyazott mérnök számára. Ha ez az anyag nem érdekli, nyugodtan figyelmen kívül hagyhatja anélkül, hogy a szöveg többi részének megértését bármilyen módon veszélyeztetné. Az ok, amiért ezek az információk a “tiszta” beágyazott fejlesztéssel kapcsolatos megbeszélések mellett szerepelnek, elsősorban az, hogy szemléltessék azokat a valós követelményeket és gondolkodásmódot, amelyek az E-2 projekt különböző tervezési döntéseihez vezettek. A mérnöki tudomány nem elméleti tudomány; ez egy alkalmazott tudományág, és ezt szem előtt tartva használok konkrét példákat az elméleti pontok illusztrálására.

Meg kell jegyeznie azt is, hogy néhány, ebben a könyvben kifejtett vélemény, ha nem is éppen ellentmondásos (kivéve a Usenet szabványai szerint – a Useneten minden ellentmondásos!), de legalábbis vitatható; például az AVR mint valós idejű vezérlőplatform kiválasztása. Ezért ebben a szövegben további indoklást adtam a döntéseimhez. Ez a kiegészítő magyarázat hivatott bemutatni azokat az okokat, amelyek miatt bizonyos utakat választottam, de kifejezetten nem arra szolgál, hogy az AVR-t hirdessem azoknak, akiknek más architektúrával kapcsolatos tapasztalataik vannak, és azt előnyben részesítik. Ismétlem, ez a “bónuszanyag” nem kritikus az itt bemutatott alapfogalmak megértéséhez, és ha akarja, nyugodtan kihagyhatja.

Azt is tartsa szem előtt, hogy ez a könyv szándékosan nem “biblia”. Nem a tárgyalt témák minden egyes árnyalatának kimerítő lefedése; egy ilyen mű több polcot is felölelne. A könyv elsődleges célja, hogy leírjon és illusztráljon egy egyszerű, moduláris, olcsó módszertant az összetett beágyazott rendszerek megvalósítására, és bemutasson néhány kész modult, amelyeket az olvasó saját projektjeihez adaptálhat. Különös hangsúlyt kap a végponttól végpontig terjedő megoldások megvalósítása olcsó fejlesztőhardverek és ingyenes szoftvereszközök felhasználásával. Mire eléri az utolsó oldalakat, remélhetőleg a következőkkel fog rendelkezni:

A Linux x86-os platformokon történő indításához szükséges kritikus “motorháztető alatti” részletek funkcionális megértése.

Egy bevezetés azokba a problématípusokba, amelyekkel a beágyazott x86-os egylapos számítógépek adatnaplózó és mozgásvezérlő rendszerek magjaként történő használata során találkozhat.

Az Atmel AVR mikrokontroller-családdal kapcsolatos alapvető információk.

Egy gyakorlati bevezetés néhány egyszerű adatgyűjtő és motorvezérlő áramkör megépítéséhez, valamint ezek PC-khez való csatlakoztatásához.

Néhány alapvető “alapozó” információ a beágyazott rendszereket érintő adatbiztonsági, hitelesítési és megbízhatósági kérdésekről.

A könyv alapgondolata, hogy az olvasó már kellően bensőséges tapasztalattal rendelkezik a Linux-alkalmazásfejlesztés egyik vagy másik témakörében, vagy a mélyen beágyazott rendszerek fejlesztésében – ez a könyv arra szolgál, hogy a tanulási görbe élére lendítse az olvasót az egyenlet bármelyik oldaláról hiányzó alapvető tudnivalókkal. Emellett biztosítja azt a ragasztót is, amely ezeket az információdarabokat egy meglehetősen összetett projekt átfogó kontextusában összeköti. Megjegyzem egyébként, hogy a címben szereplő “szakácskönyv” szót némi tartózkodással használtam. A tisztán szakácskönyves tervezés – a rosszul értelmezett darabok összeillesztése, mint a Capsela gömbök – soha nem jó gyakorlat. Ebben a könyvben adok néhány kész Capsela-darabot, de azt is elmondom, hogyan és miért készítettem el az egyes darabokban lévő fogaskerekeket és tengelyeket, és bizonyos mértékig azt is, hogyan tudsz továbblépni és jobb darabokat készíteni magadnak. Ezek a magyarázatok sokkal fontosabbak, mint maguknak a daraboknak a tervrajzai.

Egy ilyen könyv megtervezésekor könnyű két csapda egyikébe esni: vagy egyetlen, monolitikus “mega-alkalmazást” készíteni, amely minden kívánt pontot illusztrál, de rendkívül nehéz tömören elmagyarázni, vagy másrészt a témát számos kis absztrakt jegyzetre bontani, amelyeket sok olvasónak nehéz lesz beépíteni a valós projektekbe. Megpróbáltam e két véglet között lavírozni azáltal, hogy az E-2 projekt érdekesebb moduljait néhány kis, gyakorlati alkalmazásra bontottam, alapvetően önálló kóddal és elegendő elmélettel együtt ahhoz, hogy ezeket az alkalmazásokat saját felhasználásra módosítsuk és bővítsük.

Végezetül egy megjegyzés azoknak, akik az előző könyvemet, a Embedded System Development on a Shoestring. Ez a könyv nem annak a kötetnek a folytatásaként készült, de mindenképpen kapcsolódó anyag. Ha az ebben a könyvben található technikákat követi egy prototípus eszköz megépítéséhez, és azt később egy optimalizált egychipes megoldássá akarja összenyomni, a korábbi munkám segít megérteni, hogyan használhatja az ingyenes GNU eszközöket ahhoz, hogy a szoftverét könnyen átültethesse egy ARM mikrokontrollerre. A fő kritika, amit a korábbi könyvvel kapcsolatban kaptam, az volt, hogy szélesebb körű információt kellett volna tartalmaznia, és hogy túl kevés volt benne az illusztráció, ami meglehetősen száraz olvasmánnyá tette. Meghallgattam ezeket az észrevételeket, és remélem, hogy ez a könyv mindkét tekintetben kielégíti az igényeit. Mint mindig, most is szívesen fogadom észrevételeit és javaslatait; írjon nekem a http://www.zws.com/.

e-mail címre, vagy látogasson el a honlapomra a http://www.zws.com/. címen.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.