Skip to main content
Témakör:

MCU-alkalmazásfejlesztés a „felhőben”

Megjelent: 2012. március 05.

Dr. Ning Li – Wuhan University of Technology, China

farnell_cloud computing_1_abraHa egy az internetre kapcsolt berendezés információs kapcsolatait próbáljuk „szemmel követni”, akkor az adat útja nagyon hamar elvész a szemünk elől. Bonyolult, dinamikusan változik, ezért az adatáramlási sémákon gyakran csak egy alaktalan „felhő” jelképezi. Napjainkban a „felhőben” már nemcsak az adattovábbítás, hanem összetett informatikai szolgáltatások infrastruktúrája is elhelyezkedik. A „felhőinformatika”1 (Cloud Computing) a felhasználói igények nagyságától és időtartamától függően vehető igénybe.

 

 

A felhőinformatika fogalma

A felhőinformatika (Cloud Computing) internetalapú informatikai modell, amely az elosztott informatikai feldolgozás (Distributed Computing), a párhuzamos feldolgozás (Parallel Computing) és a hálóinformatika (Grid Computing) eljárásaiból fejlődött ki. A felhőinformatika hardver- és szoftvererőforrások internetes megosztását teszi lehetővé bárki számára, beleértve azokat is, akik számára ennek technológiai háttere, a berendezések mű­ködése és a szolgáltatások internetes elérésének módja ismeret­len. [1, 2][1]

Felhőinformatikán alapuló MCU-fejlesztési platform

A mikrovezérlős (MCU) rendszerek fejlesztésének hagyomá­nyos eszköze a professzionális, integrált fejlesztőkörnyezet, amely rendszerint csak jelentéktelen kapcsolatban van az inter­nettel. Az utóbbi években azonban jelentősen felgyorsult az a folyamat, amelynek eredményeképpen az integráltáramkör-gyártók új MCU-modelleket bocsátanak a piacra. Ezek használatbavételét is a kibocsátás üteméhez hasonlóan fel kell gyorsítani, ezért folyamatosan nő az igény az MCU-alapú termékfejlesztéshez szükséges információk és adatok gyorsabb és teljesebb internetes elérésére. Ha a gyártók a felhőinformatika módszereit is felhasználják az MCU-fejlesztőeszközökben, és önként, aktívan hozzájárulnak ahhoz, hogy ez a tudásbázis a fejlesztőkhöz kerüljön, az MCU-alapú végtermékfejlesztés folyamata is felgyorsul. Ez a cikk egy felhőinformatikán alapuló MCU-fejlesztőrendszert mutat be. A CooCox Tools nevű eszközt a szerző fejlesztőcsapata hozta létre a hagyományos MCU-fejlesztőrendszerek hiányosságainak elemzése alapján.

A hagyományos felépítésű MCU-fejlesztőrendszerek hiányosságai

A hagyományos MCU-fejlesztőrendszerek használói rendszerint az alábbi problémákkal szembesülnek:

Túl sok időbe kerül a szükséges információ összegyűjtése és szűrése Az MCU-fejlesztési folyamat kezdetén a mérnök kiválasztja a használni kívánt MCU-típust és a használatához szükséges erőforrásokat, periféria-áramköröket, fejlesztőesz­közöket, technikai támogatási forrásokat stb. Az MCU-alkalmazásfejlesztéshez rendszerint nagy mennyiségű, lényeges információ szükséges: kézikönyvek, kapcsolási rajzok, előregyártott programelemek, alkalmazástechnikai jegyzetek stb. Az információ forrása rendszerint a használt integrált eszközt gyártó cég weblapja vagy más, erre specializált webes erőforrás, de a mérnökre hárul az a feladat, hogy az információtömegből kiemelje a számára lényeges és használható elemeket. Az adatgyűjtés, annak rendezése és tartalom szerinti áttekintése rendszerint hatalmas munka, amelyhez a hagyományos MCU-alkalmazásfejlesztő rendszerek nem adnak megfelelő támogatást a tervezőmérnöknek.

Az „elszigetelt mérnök” problémája Manapság a legtöbb esetben kevés (néha csupán egyetlen) mérnök dolgozik egy MCU-alapú projekt hardver- és szoftvertervezési munkáinak megvalósításán. Emiatt, ha valamilyen probléma merül fel, nagyon nehéz hozzáértő segítséget találni. Gyakran internetes fórumokat vagy levelezőlistákat használnak az ilyenfajta együttműködési lehetőségek megtalálására és felhasználására, ám az ettől remélhető támogatás rendszerint nem áll időben rendelkezésre.

Kevés idő jut az alkalmazási réteg kidolgozására Az MCU-alkalmazásfejlesztés rendszerint hardver- és szoftverfejlesztési feladatokból is áll. A szoftvertervezés általában a meghajtóprogramok elkészítését, az operációs rendszer „honosítását”, az algoritmusok honosítását és optimalizálását, valamint az alkalmazási réteg kifejlesztését foglalja magában. A mérnök munkaidejének legnagyobb részét a meghajtóprogramok (driverek) megtervezése, az operációs rendszer és az algoritmusok hardverkörnyezethez igazítása tölti ki, és viszonylag kevés idő marad az alkalmazási réteg kidolgozására és optimálására. Mivel a termékek életciklusa napjainkban egyre inkább rövidül, a hagyományos fejlesztőeszközöket használó mérnökök egyre többször ütköznek a fejlesztésre fordítható (rövid) idő korlátaiba, időt rabló fejlesztési problémákba, és a termék minőségét veszélyeztető kompromisszumokra kényszerülnek.

Az információ szervezésének változása az internet korában

Az internet új módszereket kínál az információk terjesztésére. Az információk korábban elképzelhetetlenül bőséges tárához való hozzáférés, a felhasználó számára lényeges tartalmak kiemelése és a kívánt formában való prezentációja az adatbányászat (data mining) szakterületének fontos kutatási témája. Az internetes információk szervezésének módja az alábbi kategóriákba sorolható:

Keresés az internetes tárolómappákban (Direc­tory Search): az interneten tárolt információk és adatbázisok tartalmán végrehajtott manuális keresés. A felhasználó olyan webes adatbankokban keres kézi vezérléssel, mint például a yahoo. Ezek osztályozási rendszere általában világos és áttekinthető, de nehézségekbe ütközik a specifikus információkra való szűkített keresések végrehajtása.

Szöveges keresőmotorok használata: ezek az eszközök a teljes weben képesek információt keresni, és ennek alapján nagyméretű, online elérésű adatbázisokat építenek fel a felhasználók keresési szokásai alapján. A keresés az indexelt adatbázisokban keresési kulcsszavakkal történik – mint például a Google rendszerében is. Ezen a módon a kulcsszavakkal jellemezhető forrásokat lehet megtalálni, ám a számos érdektelen találat közül a felhasználónak kell kiválasztania a számára használhatókat.

Wiki: bárki által létrehozható, szerkeszthető, módosítható vagy vitatható internetes információtárolási és -elérési rendszer. A Wikiken található információ rendszerint nagyon szakszerű és pontos[2].

Közösségi alapon szervezett kérdés–felelet rendszerek: sok felhasználó osztja meg kérdéseit,  tapasztalatait, szaktudását internetes fórumokon, amelyek különösen a rendszeresen felmerülő kérdésekre kínálnak gyors választ. Tipikus példa az element14 közösség, amelyben személyes kérdések is feltehetők, és ezen a módon gyakran időben kap professzionális szintű szakmai segítséget az érdeklődő.

Az internetes alkalmazások fejlődési folyamatának fontos kérdésévé vált annak tanulmányozása, hogyan lehet az információt hatékonyan szervezve felkínálni az érdeklődőknek. A felhőinformatika és a szolgáltatásként kínált szoftver (Software as a Service – SaaS) megjelenése révén lehetővé vált, hogy a „felhőszoftverek” megtörjék a nagy gyártók monopóliumát. Ezek révén mindenki számára elérhetővé válik, hogy szabadon használják ezeket kreatív céljaik megvalósítására, és hozzáférhessenek a szoftverszolgáltatások összes fajtájához. A felhőinformatika révén előreléphetünk az információ hatékonyabb szervezési módjainak kifejlesztésében és a „kollektív szakmai tapasztalat” hasznosításában. A beágyazott rendszerek fejlesztőeszközei terén pedig a felhőinformatikával egészen új felhasználói élmény valósulhat meg, és lehetővé válik a hagyományos fejlesztőrendszerek hiányosságainak kiküszöbölése.

„Felhőalapú” MCU-alkalmazásfejlesztés

A felhőinformatikai alapú MCU-alkalmazásfejlesztő eszköz maga is egy „felhőszoftver”, amely képes arra, hogy a hálózaton fellelhető érvényes információkat bármikor hatékonyan felhasználja. Az MCU-típus kiválasztása után a hozzá kapcsolódó ismeretek (adatlapok, kézikönyvek, előre kidolgozott szoftverelemek, áramköri rajzok és algoritmusok) közvetlenül a felhasználó rendelkezésére állnak. A fejlesztés közben szerzett felhasználói tapasztalatokat pedig a fejlesztőmérnök megoszthatja a többi felhasználóval. Az ideális MCU-alkalmazásfejlesztő eszköz használatához csupán egyetlen internetböngészőre van szükség. Amint az az 1. ábrán látható, a program forrásszövegének szerkesztése, tárolása, fordítása, a projekt- és az információmenedzsment mind a „felhőben” történik.

Egy gyors prototípus-fejlesztő eszköz, az ARM® által kibocsátott mbed (2. ábra) olyan platform, amely hardvertesztelési lehetőséggel is el van látva. A böngészőn keresztül elérhető embed.org weblapon végrehajtható a forrásszöveg szerkesztése, fordítása, a projektkezelés és a kommunikáció a rendszer többi felhasználójával. Azonban jelenleg az mbed nem több, mint egy gyors eszköz a prototípus működőképességének bizonyítására, de hiányzik belőle a beágyazott rendszerek fejlesztéséhez szükséges eszközök teljes láncolata. A szerző és munkatársai kibővítették az mbed ötletét, amely révén létrejött egy felhőinformatikai alapon működő, ingyenes MCU-alkalmazásfejlesztési eszközkészlet Coocox Tools néven.

A Coocox Tools

A Coocox Tools felépítése a 3. ábrán látható. Részei a CoIDE, CoFlash, CoAssistant, CoLinkEx, CoOS and CoCenter. A Coocox Tools a www.coocox.org weblapról ingyen letölthető.

CoIDE A CoIDE a Coocox Tools központi alkalmazása. A hagyományos beágyazott alkalmazásfejlesztő környezetektől (IDE) eltérően a CoIDE programozási megközelítése a programkomponenseken, rutinokon és súgóprogramon alapul. Mindezek automatikusan az interneten keresztül frissülnek. A CoIDE forrásszöveg-szerkesztési felületét a 4. ábra mutatja. Négy olyan ablaka van, amely eltér a többi IDE-felülettől: a komponens-, a komponensfa-, a példa- és a súgóablak.

Komponensablak (Component Window). Ebben az összefüggésben komponensnek tekinthető minden aránylag függetlenül használható programkód, perifériameghajtó program, bizonyos algoritmusok és az operációs rend­szer. Ha a felhasználó kiválasztott egy processzort, annak az adott pillanatban elérhető összes komponensei megjelennek a komponensablakban. Ahhoz, hogy ezek közül valamelyiknek a programkódját a projekt részévé tegyük, elég megjelölni a listán a kiválasztott komponenst. Ha a  komponensek önmagukban elegendők a feladat megoldásához, a megfelelő komponensek kijelölése (az alkalmazási réteg elkészítésén kívül) az egyetlen feladat, ami a szoftverfejlesztéshez szükséges. A komponensablak valójában egy böngésző. Minden regisztrált felhasználó feltöltheti a Coocox követelményrendszerének, „szabványának” megfelelő, saját fejlesztésű komponenseit, és megoszthatja azokat a többi felhasználóval. A komponensablak ezeket a feltöltött komponenseket a felhasználók értékelése szerint rangsorolja.

Komponensfaablak (Component Tree Window).                     A projektbe beválasztott komponensek fastruktúra szerint szervezve jelennek meg a komponensfaablakban. A komponensfa közvetlenül hivatkozik a projektfára (Project Tree). Amikor egy komponenst megjelölünk, a pro­jekt­fán a megfelelő fájlok kiemelten jelennek meg, és a példaablakban automatikusan megjelenik a használati módjukat mutató prog­rampélda.

Példaablak (Examples Window)

Amint egy komponenst megjelölünk a kom­ponensfaab­lakban, az arra utaló összes példát felsoroló lista jelenik meg a példaablakban.
A felhasználó hivatkozhat ezekre a példákra és beemelheti azokat a projektjébe. A példaablakot a komponensablakhoz hasonlóan böngészőként valósították meg. A közösség példaadatbázisához bármely regisztrált felhasználó hozzáadhatja saját példáit annak érdekében, hogy megossza azokat másokkal, kommentárokat fűzhet a többi felhasználó által feltöltött példákhoz, illetve értékelheti azokat.

Súgóablak (Help Window) A súgóablak az épp aktuális objektummal kapcsolatos támogatóinformációt mutatja attól függően, hogy a felhasználó épp mivel foglalkozik. Ha például kiválaszt egy processzort, a súgóablakban annak alapinformációi, adatlapja és technikai kézikönyvei jelennek meg. Ha viszont egy programkomponenst választ ki, a súgóablakban a rá vonatkozó API- (Application Programming Interface) -információ válik láthatóvá. Ha példákat néz a felhasználó, a súgóablakban azok kapcsolási rajzát, esetleg értékelőpanel-információit találja. A jövőben a CoIDE webalapú változata kerül megvalósításra. Amint az 5. ábrán látható, a CoIDE nemcsak egy IDE, hanem egyben hálózati platform is a fejlesztők számára, amely révén kommunikálhatnak, megoszthatják a beágyazott alkalmazásfejlesztére vonakozó információikat és ismereteiket.

CoFlash A CoFlash egy ingyenes flash-memória programozási segédeszköz, amely akár grafikus kezelőfelületről (GUI) vagy parancssorból is kezelhető. A többi flashprogramozási segédeszköztől eltérően a CoFlash támogatja a felhasználó által definiált flashprogramozási algoritmusokat is. A felhasználó az Init, az EraseSector, az EraseChip, a ProgramPage és az UnInit funkciókból összeállíthatja saját flashprogramozási algoritmusát a CoFlash által biztosított programűrlap (template) kitöltésével. A CoIDE által kezelt komponensekhez és példákhoz hasonlóan a felhasználó flashprogramozási algoritmusait is megoszthatja másokkal, illetve kommentárokat fűzhet a mások által feltöltött algoritmusokhoz.

CoAssistant A CoAssistant egy ingyenes, online beágyazott programozói segédeszköz, amely a www.coocox.com:8080/coassistant_en/rap webhelyen érhető el. Miután kiválasztottunk egy bizonyos processzortípust, a CoAssistant automatikusan megmutatja annak regisztereire vonatkozó részleteket a 6. ábra szerint. Ennek segítségével a fejlesztő könnyen konfigurálhatja a kívánt perifériaregisztert anélkül, hogy a processzor technikai kézikönyvében kellene keresgélnie. A felhasználó ugyancsak megoszthatja más felhasználókkal a tapasztalatait a perifériáról vagy annak regisztereiről azáltal, hogy kommentárokat fűz a felhasznált regiszterhez. A jövőben a CoAssistant funkciót integrálni kívánják a CoIDE-be. Ennek révén automatikus kódgenerálás valósulhat meg a felhasználó forráskódjában grafikus programozási lépéseken keresztül.

CoLinkEx A CoLinkEx egy ingyenes és nyílt használatú ICE- (In-Circuit Emulator) -megoldás, amely támogatja a JTAG-szabványt és a szoftver-hibakeresési interfészeket. Ez a funkció jelenleg
a Cortex-M0, valamint Cortex-M3 processzorokhoz érhető el. A CoIDE és a CoFlash segítségével végzett programozás és hibakeresés lehetőségein kívül a CoLinkEx az MDK és az IAR fejlesztőeszközeivel is használható. Bárki szabadon letöltheti a CoLinkEx SCH (elvi kapcsolási rajz), PCB (NyÁK), BOMList (alkatrészjegyzék) és Firmware funkcióit a www.coocox.org weblapról, amelyekből saját CoLinkEx funkciót állíthat össze. A megoldás a céges felhasználók számára is ingyenes.

CoOS A CoOS egy ingyenes és nyílt forráskódú, valósidejű operá­ciós rendszer (RTOS), amelyet a Cortex-M processzorhoz terveztek. Ez támogatja a preemptív prioritásos és körforgó (round robin) prioritáskezelést, a szemaforokat, a kölcsönös kizárásos (mutex) végrehajtás-vezérlést, a flag-eket, a postafiók (mailbox) alapú task-kommunikációt, a sorbanállást (queue). Ez egy széles tartományban skálázható megoldás, amely már egy – csupán 927 bájt terjedelmű – minimális rendszerkernellel is működőképes. Támogatja a taszkváltás közbeni megszakítást, a veremtúlcsordulás detektálását, valamint az ICCARM-, az ARMCC- és a GCC-platformokat. A CoOS időspecifikációi az 1. táblázaton láthatók, a CoOS tárhelyfoglalási adatait pedig a 2. táblázat foglalja össze. (Az 1. és 2. táblázat adatait egy STM32F103RB CPU-n mérték, 72 MHz-es órafrekvenciánál, belső flashmemóriából történő programvégrehajtással, 2 váróciklusnyi flash-latenciá­val és engedélyezett utasítás-elővételi (prefetch) pufferrel). A CoIDE szempontjából a CoOS is egy komponens. A CoOS programkódját a projekthez kapcsolni csupán abból áll, hogy bejelöljük a komponensablakban a CoOS-komponenst, és a projekthez tartozó OS_Config.h headerfájlban módosítjuk a taszkszámot, a veremméretet, a rendszer-órafrekvenciát és más, az operációs rendszer tulajdonságait meghatározó paramétereket. A példaablakban látható CoOS-példák áttekintésével és kipróbálásával mindenki könnyen eljuthat a CoOS-alkalmazások programozásáig.

CoCenter A CoCenter-központ, amelyben a Coocox-felhasználók regisztrációjukat, a szoftverek letöltését, verziófrissítését és más funkciókat intézhetnek. A jövőben a Coocox egy külön azonnali üzenetközvetítési eszközzel is bővülni fog. Azok a fejlesztők, akik ugyanarra az MCU-típusra fejlesztenek alkalmazást, automatikusan kapcsolódnak majd ugyanahhoz a csoporthoz, és valós időben, online módon kommunikálhatnak egymással.

Összefoglalás

A Coocox Tools bemutatását azzal foglalhatjuk össze, hogy célja a beágyazott rendszerek fejlesztésében dolgozó mérnökök „szociális hálózatának” platformjaként szolgálva online közösség kialakítását segítse elő. A felhőinformatikai alapú, beágyazott fejlesztési platform jelentősen rövidítheti a fejlesztési időt azzal, hogy hasznos és célzott erőforrásokat, érdemi információkat bocsát a fejlesztők rendelkezésére, online kommunikációval segíti a problémamegoldást, a mérnökök és alkatészgyártók közötti információmegosztással és együttműködéssel szolgálja a hatékony információcserét.

Források

1) Cloud Computing: Clash of the clouds. The Economist. 2009‑10‑15. www.economist.com/displaystory.cfm?story_ id=14637206. Retrieved 2010‑11‑03.

2) Cloud Computing Defined. www.cloudcomputingdefined.com. 17 July 2010. Retrieved 2010‑11‑03.

3) A. Acquisti and R. Gross. Imagined communities: Awareness, information sharing, and privacy on the Facebook. In Privacy Enhancing Technologies Workshop, 2006.

Farnell

Ingyenesen hívható telefonszám: 06 80 016 413

E-mail: Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.

www.farnell.com/hu,

www.element14.com



[1] A Cloud Computing fogalmát ma még inkább csak a hálózati szakemberek ismerik. Tudomásunk szerint még nincs kiforrott, rövid és jól használható, a köznyelv által is elfogadott magyar változata. A cikk magyar változatában használt „felhőinformatika” változat a fordító javaslata. A végleges döntést azonban még csak nem is a szakmai nyelv használói hozzák, hiszen megfigyelésünk szerint az informatikai szakma általában nem hiányolja a magyarul is jól hangzó fordításokat. Mivel a „felhőinformatika” használata várhatóan egyre nagyobb mértékben „popularizálódik”, a magyar köznyelv számára is érdemes jól használható megnevezést keresni. A „felhőinformatika” kifejezés egy kísérlet erre .
A ford. megj.

[2] Ennek a kijelentésnek az a legnagyobb veszélye, hogy „nagyjából igaz”. A wiki­rendszerek (legismertebb a Wikipedia) felhasználói legtöbbször valóban értékes és pontos információkat találnak, ezért gyakran „elkényelmesednek”, kritikátlanul fogadják el az itt talált információkat. Semmi sem garantálja azonban a szerzők, tartalommódosítók szaktudását, sőt még jóhiszeműségét sem. Az információ megbízhatóságában egyedül a nyilvánosság ellenőrző ereje miatt bízhatunk. Ez a „nyilvánossággarancia” azonban éppen azoknál a wikiszócikkeknél nem eléggé hatékony, ahol nagyon szűk és széttagolt a közölt információ tartalmi ellenőrzésére szakmailag eléggé felkészült – és ami a legfontosabb – aktív szerkesztésre is hajlandó felhasználók köre. Ezért például számos egyetem nem fogadja el forrásanyagként a hallgatók dolgozataiban a wikihivatkozásokat, de általában is célszerű kialakítani bizonyos óvatosságot és kritikai szemléletet a wiki típusú webes információforrások felhasználásánál. – A szerk. megj.