Témakör:
Tervezzük külön, egyesítsük könnyedén
Megjelent: 2020. február 13.
Örök dilemma, hogy sok munkával tervezzünk egyszerű felépítésű, olcsón gyártható készüléket, vagy korlátozzuk-e inkább a fejlesztési erőforrásokat, és helyette fizessük meg az árat a kevésbé takarékos kialakítású, drágábban gyártható készülékkel. A válasz természetesen a szérianagyságtól is függ, de amint a cikkből is kiderül, létezhet az egyszerű tervezés előnyét az olcsóbb gyártáséval egyesítő megoldás is.
A beágyazott alkalmazások egyre összetettebbé és kidolgozottabbá válnak, miközben bizonyos lényeges elvárásoknak kívánjuk megfeleltetni azokat. Először is, az alkalmazásoknak növelniük kell a hatékonyságot, amelyet csak kifinomult algoritmusok futtatására alkalmas, jelentősen megnövekedett processzorteljesítménnyel érhetünk el. Ezenkívül a „mindenütt jelen levő” internetelérhetőség is hozzájárul ahhoz, hogy a beágyazott alkalmazások „okosabbak” és „kommunikációképesebbek” legyenek. A harmadik tervezési cél a költségek csökkentése azáltal, hogy egyetlen vezérlőben integrálunk néhány olyan funkciót, mint a szenzorok illesztése, a kommunikációképesség, a motorvezérlés, az elektromos energia digitálisan vezérelt átalakítása, az informatikai biztonság és a felhasználó vagy az anyagi javak fizikai biztonságának garantálása. Az integrációnak ezt a magas fokát úgy lehet elérni, ha az egyes szakterületek szakértői kezdetben külön kezelik és dolgozzák ki a sajátos funkcionális területeket vagy modulokat, és azokat csak ezután integrálják a végtermék egyetlen közös alkalmazásává. Az is gyakran előfordul, hogy a multinacionális társaságok tervezőcsoportjai a világ eltérő helyszínein tevékenykednek. Ilyen esetekben még fontosabb, hogy a különböző modulokat egymástól függetlenül lehessen kidolgozni, majd azokat problémamentesen lehessen egyesíteni, egyaránt csökkentve ezzel a fejlesztés kockázatát és erőforrásigényét.
1. ábra A jelenkor alkalmazásai egyre „okosabbak” és „kommunikációképesebbek”
A hatékonyság növelése
Először is lássuk, hogyan érhető el a hatásfok növelésének célja a vezérlő megnövelt számítási teljesítménye révén. Vegyünk példának egy motorvezérlési alkalmazást. Az iparban egyre inkább eltávolodnak a csupán 75…80%-os hatásfokú működésre képes kefés egyenáramú (DC) motoroktól, amelyek helyét a kefe nélküli DC motorok (BrushLess DC – BLDC), vagy a még újabb állandó mágnesű szinkronmotorok (Permanent Magnet Synchronous Motor – PMSM) veszik át. Ez utóbbiakkal akár 85…90% hatásfok is elérhető, ráadásul kevésbé zajos a működésük és a végtermék élettartama is hosszabb lehet. Egy tipikus kefés DC-motorvezérlés nagyon egyszerű irányváltó és fordulatszámszabályozó rendszerrel is megelégszik, amely egy „belépő szintű” nyolcbites mikrovezérlővel is megvalósítható. Ezzel összehasonlítva egy érzékelőmentes BLDC- vagy PMSM-motorhoz szükséges „mezővezérlési” (Field Oriented Control – FOC) techológia bonyolultabb és számításigényesebb vezérlést tesz szükségessé. Cserébe viszont az energiafelhasználás szorosabb ellenőrzését kapjuk a motor széles terhelési és fordulatszám-tartományában, amely a hatásfok növelésében nyújthat jelentős segítséget. Ezenkívül olyan további vezérlőalgoritmusok is megvalósíthatók az alkalmazás igényeinek megfelelően, mint a Rotor Stall Detection and Recovery (a forgórész teljes lefékeződésének észlelése és a hibaállapot helyreállítása), a Wind Milling (a gerjesztés irányának megfelelő forgásiránnyal ellentétes forgás külső meghajtónyomaték hatására), a PI-típusú motorszabályozás telítődésének megakadályozása (PI Loop Saturation and Anti-windup), a motor mágnesanyagának telítődésekor fellépő fluxusgyengülés kezelése (Flux Weakening) vagy az egységnyi motoráramra vonakoztatott maximális nyomaték (Maximum Torque per Ampere). Ezek segíthetnek a végtermék minőségének javításában, lehetővé teszik, hogy a motor helyesen reagáljon a dinamikus terhelésváltozásokra, és hozzájárulhatnak a rendszer teljes hatásfokának növeléséhez. Az összes ilyen korszerű vezérlési technika erősen számításigényes, mivel olyan matematikai műveletek nagy sebességű elvégzésével jár, mint a szorzás, osztás, négyzetgyökvonás és trigonometriai függvényértékek kiszámítása, amelyekhez a központi egység (CPU) jelentős számítási teljesítményére van szükség. Mivel ezeket a vezérlési feladatokat periodikusan, nagy gyakorisággal kell végrehajtani, szükséges, hogy ezek számára a CPU számítási képességéből állandó időszeletet foglaljunk le. Az ilyen „szoros” vezérlőhurkok végrehajtása lefoglalhatja akár a CPU csaknem teljes számítási képességét, amely miatt egy bonyolult alkalmazás más időkritikus funkcióinak végrehajtására esetleg már nem is jut kapacitás. Ez korlátozza a lehetőséget, hogy bármilyen más funkcionalitásokkal is kiegészíthessük az alkalmazást, mint például a kommunikáció, a biztonsági felügyelet, a rendszermenedzsment és a „háztartási” funkciók, amelyek így kölcsönösen zavarhatják egymás működését az időkritikus motorvezérlési funkciókkal. A kihívás még nagyobb a digitális energiaátalakító rendszereket vezérlő alkalmazásoknál, ahol az időkritikus szabályozóhurkokat még nagyobb ismétlődési frekvenciával kell végrehajtani.
Összetett szoftver
Most vegyük szemügyre a következő tervezési szempontunkat, amelynek fő hajtóerejét az internet és/vagy a felhőszolgáltatások használatba vétele adja. Az alkalmazások legfrissebb ipari trendjeit olyan „hívó szavak” jellemzik, mint az „okos” és „kommunikatív” alkalmazások (1. ábra), amelyek bárhonnan elérhetők és lehetővé teszik, hogy azok révén távolról szerezzünk információkat. Ezek a követelmények megkívánják, hogy a beágyazott alkalmazások számos olyan szoftverképességet tartalmazzanak, mint
-
a fő alkalmazási funkciót megvalósító szoftver. Példánkban ezek a funkciók a motorvezérlés, a „háztartás” és a felhasználói interfész műveletei, amelyek általában szükségesek az alkalmazások legtöbbjében.
-
A kommunikációs szoftver, amelyben a szükséges hálózati alkalmazási protokollok futnak a végtermék kommunikációs képességekkel való felruházásához.
-
Az adatbiztonsági szoftver a szellemi tulajdon (Intellectual Property – IP), valamint az érzékeny adatok védelméhez, a jogosultság ellenőrzéséhez, a hozzáférés kezeléséhez, továbbá a rendeltetésszerű használat akadályozásának és illetéktelen befolyásolásának meggátlásához.
-
Ha az alkalmazás emberi közreműködést is igényel, amely hibás működés esetén személyi sérülést is okozhat, akkor a funkcionális biztonság feladatait is be kell építeni a biztonságkritikus alkalmazások közé.
-
A végfelhasználói alkalmazások némelyike támaszthat bizonyos egyéni testreszabhatósági követelményeket is, amelyekkel teljesen egyedivé tehető az eszköz működése még a különféle piaci szegmensek igényei szerint készült változatokon túl is.
Mindezek a funkcionális követelmények is eléggé eltérőek ahhoz, hogy szakterületenként különálló szakértői csoportokat tegyenek szükségessé a részfeladatnak megfelelő szoftvermegoldások megvalósításához, amelyeket azután optimálisan és gyorsan kell a végtermékben futó összetett alkalmazássá egyesíteni. A különféle részterületek szakértőinek szorosan együtt kell működniük a rendszertervezővel a végfelhasználói alkalmazás megvalósításához. Ez a forgatókönyv még bonyolultabb is lehet olyan multinacionális cégek projektjeinél, ahol különféle közreműködő szakterületek képviselői a világ földrajzilag egymástól távol eső régióiban tevékenykednek.
Költségcsökkentés
Végül pedig a költségoptimalizálás is lényeges cél, amely minden végfelhasználói alkalmazásra egyaránt jellemző igényként jelentkezik. A beágyazott rendszereket tervező mérnököknek gyakran nem áll rendelkezésére elegendő anyagi erőforrás egy többmikrovezérlős megoldás megvalósításához, amelyben minden önálló, eltérő szoftver-részfeladatot külön – egymással csak lazán csatolt – mikrovezérlők hajthatnának végre. Hardverszempontból optimálisnak az a megoldás tekinthető, amelyben egyetlen mikrovezérlő hajtja végre az összes feladatot, amelyek együtt egy magas fokon integrált alkalmazást alkotnak. Ez már azzal is csökkenti az anyagköltséget, hogy kis méretű NyÁK-lapon helyezhető el, és a szükséges külső alkatrészek (kristályoszcillátorok és passzív elemek) száma is ekkor a legkisebb.
Melyek a tervezési nehézségek?
Ahhoz, hogy kifinomult algoritmusokat vagy egyidejűleg többféle feladatot megoldó szoftvermegoldásokat futtathassanak, a tervezők gyakran kényszerülnek nagyobb teljesítőképességű mikrovezérlők beszerzésére. Ez viszont nem feltétlenül a legjobb választás amiatt, hogy az időkritikus végrehajtás, a többféle szoftverfeladatot megvalósító modulok fejlesztése, integrációja és együttes tesztelése maga is komoly kihívást jelentő feladat lehet. Egy egyszerű ütemezővel vagy valósidejű operációs rendszerrel (Real Time Operating System – RTOS) kielégíthető az a követelmény, hogy egy nagy teljesítőképességű CPU képes legyen a különféle feladatokat a CPU számítási képességének időszeletekre felosztásával és az időszeleteknek az egyes részfeladatokhoz való hozzárendelésével, látszólag egyidejűleg megoldani. Azonban az ütemező vagy RTOS futtatása maga is olyan háttérműveleteket generál, amelyek terhelik a processzor számítási kapacitását, a memóriát és más erőforrásokat. Az időszeletes végrehajtás az egyes részfeladatok közötti átkapcsolással is növeli a háttérműveleteket, és ezzel csökkenti a processzornak a tényleges feladatokra fordítható számítási kapacitását. Ez a forgatókönyv még bonyolultabbá válik, ha két időkritikus szabályozóalgoritmust kell periodikusan végrehajtani pontos időzítéssel és egymást részben átfedő időintervallum alatt, vagy amikor két, egymással nem szinkronizálható biztonságkritikus funkciót kell végrehajtani egyszerre, valós időben. Ilyen esetekben még nagyobb teljesítőképességű mikrovezérlőt kell betervezni, amely követelmény azonban nem mindig felel meg a rendszer egyéb követelményeinek.
Ám még ha a rendelkezésünkre áll is egy nagy teljesítőképességű, egymagos processzor, amelynek elegendő a számítási képessége a többfeladatos rendszer szoftvermoduljainak, vagy akár még a valósidejű operációs rendszernek is a futtatásához, sok más tervezési bonyodalommal kell számolnunk. A többféle szakmai feladatot megoldó szoftvermodulok fejlesztése, integrációja és tesztelése különálló szakértői csoportok közötti koordinációt kíván. Egy kompatibilis és moduláris szoftvermodul-rendszer tervezését tételezi fel, amelynek elemei dinamikusan osztoznak a rendszer erőforrásain és információt cserélnek egymással. A bonyodalmak tovább fokozódnak, ha már készre fejlesztett, de kompatibilis architektúrával nem rendelkező modulrendszert kívánunk hasznosítani.
-
Kész programmodulok újrahasznosításakor felmerülhet az a probléma, hogy azok architektúrája eltérő megoldáson alapul (például az egyik lekérdezéssel (polling), a másik programmegszakítással (interrupt) kezeli az aszinkron eseményeket).
-
A készen kapott programmodulok esetleg a mikrovezérlőnek ugyanazokat az erőforrásait használják, amelyeket mindenképpen konfliktusmentesen kell megosztani ahhoz, hogy elkerüljük a versenyhelyzetek vagy feltételes „holtpontok” kialakulását. (Ilyen eset például, amikor az A folyamat egy B folyamat által előállított feltétel teljesülésére vár, miközben B folyamat azért várakozik, mert az A folyamattól nem kapja meg a továbbfutása egy másik feltételét. Ráadásul ennél összetettebb, többszereplős holtpontok kialakulása is elképzelhető. Az ilyen holtpontokat a rendszer külső beavatkozás nélkül nem képes elhagyni. A hibakeresés azért nehéz, mert sokszor az „egymásra várást” a külső forrásokból származó információk szerencsétlen kombinációja váltja ki, és ezért a jelenség reprodukálása, tanulmányozása nem mindig lehetséges. – A szerk. megj.)
-
A készen kapott, különböző szerzők által írt programmodulok forrásszövege tartalmazhat akár több, azonos nevű globális változót és/vagy funkciót is.
Még ha az egyes – készen kapott – programmodulok önmagunkban esetleg hibátlanul futnak is, az integráció során számos okból helytelenül működhetnek. Az ilyen integrált megoldások hibakeresése kész „rémálom”, amely jelentősen megnöveli a fejlesztés időszükségletét.
Végeredményben egy már létező programmodul-készlet újrahasznosítása nem mindig segít a fejlesztés időigényének csökkentésében, amennyiben azokat egyetlen, egymagos mikrovezérlőn kívánjuk futtatni. Minden ilyen probléma jelentős fejlesztési kockázattal jár és növeli a végtermék piacra kerüléséhez szükséges időt.
Kétmagos vezérlő
Egy kétmagos vezérlő használata segítséget nyújthat a fenti problémák elkerülésében. Növelheti a hatékonyságot, egyszerűsítheti a fejlesztési folyamatot és csökkentheti a költségeket is az alábbi lehetőségek kihasználása révén:
-
Nagyobb teljesítményt kínál egy hasonló kategóriás, egymagos, kétszeres végrehajtási sebességű vezérlőnél, és ideális megoldás az olyan alkalmazásokhoz, ahol kettő vagy több időkritikus folyamat együttfuttatására van szükség.
-
A két mag független használata egyszerűsíti a szoftverfejlesztést, és lehetővé teszi
– a fejlesztőmunka földrajzilag különböző helyeken történő végrehajtását,
– a problémamentes integrációt, amihez csak nagyon kevés koordináció szükséges,
– a végtermék egyszerű testreszabását a gyártmánycsalád különféle változatainak fenntartásával.
Kétmagos vezérlő: jobb teljesítőképesség
Egy kétmagos vezérlő magasabb szintű szoftverintegrációt tesz lehetővé azáltal, hogy az alkalmazás különféle funkcióit megvalósító szoftvermodulok különböző processzormagokon, egymástól függetlenül futtathatók. Ez különösen akkor jár nagy előnnnyel, ha az alkalmazásnak két időkritikus funkciót kell – periodikusan, egymástól függetlenül pontos időzítéssel vagy aszinkron eseményekre válaszolva – végrehajtani. Ha ugyanis az időkritikus funkciók külön, független processzormagokon futnak, nem kerülhetnek versenyhelyzetbe. Ez azzal is javítja a CPU kihasználását, hogy nincs, vagy csak jelentősen csökkentett mennyiségben van szükség a programfunkciók közötti átkapcsolásra (context swithching). Számos többmagos mikrovezérlő rendelkezik az egyes processzormagokhoz kizárólagosan hozzárendelt erőforrásokkal, ami még tovább csökkenti a kontextusváltás előfordulási gyakoriságát és a döntési helyzetekkel járó adminisztrációs háttérműveletek mennyiségét. Némelyik kétmagos vezérlő rendelkezik gyors RAM programtárolóval (Program RAM – PRAM), csak az egyik processzormaghoz, amely rendszerint az alárendelt, végrehajtó szerepű (slave) mag, és ez is tovább fokozza a kétmagos felépítésből eredő teljesítményjavulást. Így történhet meg, hogy egy kétmagos mikrovezérlő rendszerint nagyobb teljesítőképességű, mint egy hasonló felépítésű, egymagos, de kétszeres órajelsebességű változat.
2. ábra Egy tipikus, két független processzormaggal ellátott mikrovezérlő tömbvázlata
Kétmagos vezérlő: egyszerűbb fejlesztés
Számos kétmagos mikrovezérlő tartalmaz az egyes processzormagokhoz kizárólagosan hozzárendelt memóriákat, perifériákat és hibakeresést támogató hardvert (2. ábra). Egy rugalmas erőforrásmenedzsment-séma pedig további könnyítést jelent a megosztott erőforrásoknak az egyes processzormagokhoz való hozzárendelésében, az alkalmazás igényeinek megfelelően. Az ilyen mikrovezérlő-architektúra lehetővé teszi, hogy az egyes programmodulok szakértői egymástól jelentősen függetlenül, minimális koordinációs igénnyel fejleszthessék a saját programmoduljukat, és azt a fejlesztés végén könnyen integrálhassák a teljes végfelhasználói alkalmazásba. Egy kétmagos mikrovezérlő előnyei különösen akkor szembeötlőek, ha két, különböző architektúrájú programmodult kell egybeintegrálni, vagy ha a modulok hasonló erőforrásokat igényelnek, amelyek így két független magon futtathatók. Ez nagyon hasonlít az olyan programmodulok fejlesztéséhez, amelyek két külön mikrovezérlőn futnak, de ahhoz képest jobb teljesítőképességgel, optimális erőforráshasználattal és csökkentett költségekkel valósíthatók meg. Ez egyben minden olyan bonyodalomnak elejét veszi, amelyek a programmodulok integrációja, az időszeleteken alapuló processzormegosztás és az ezekhez jellemzően társuló versenyhelyzet-lehetőségek során merülhetnek fel. Egy kétmagos vezérlő lehetővé teszi még az integráció utáni, magonkénti hibakeresést is, mivel mindegyik processzormag önálló, független hibakereső interfésszel van ellátva. A programmodulok közötti, ily módon minimalizált függőségek miatt a hibakeresés rendkívül leegyszerűsödik, könnyű a programhibákat behatárolni és javítani. A felsorolt számos előny miatt egy kétmagos mikrovezérlő használatával jelentősen csökken a fejlesztési kockázat és a termék hamarabb juttatható piacképes állapotba.
Hogy az előnyök listáját tovább gyarapítsuk, egy kétmagos vezérlő arra is alkalmas, hogy könnyen testreszabható terméket állítsunk elő a fő funkcionalitás módosítása nélkül. Megtehetjük ugyanis, hogy a fő funkcionalitást a processzor egyik magjára bízzuk, miközben az egyedi, felhasználóspecifikus, „testre szabott” tulajdonságokat a másik mag segítségével valósítjuk meg. A kétmagos vezérlőknek ezek a lehetőségei még akkor is jelentékenyen egyszerűbbé teszik a szoftverfejlesztést, ha a különféle modulok fejlesztése a világ bármely vidékén „szétszórva” működő szakértői csoportokra van bízva. Az integráció még ilyen esetekben is könnyen megvalósítható, és csak minimális koordinációs erőfeszítést igényel.
3. ábra Egy tipikus többfunkciós, összetett alkalmazás tömbvázlata
Kétmagos vezérlő: költségcsökkentés
Azáltal, hogy a kétmagos mikrovezérlők alkalmazása nagyobb teljesítőképességet kínál, lehetővé teszi azt is, hogy a beágyazott rendszerek tervezői összetett alkalmazásokat is megvalósíthassanak egyetlen mikrovezérlő felhasználásával. Az egyszerűbb fejlesztés miatt a kétmagos vezérlő használatával jelentősen csökken a tervezés időszükséglete és kockázata, és ezzel versenyképes, időben piacképes állapotba hozható termékek létrehozására ad lehetőséget, csökkentett költségekkel.
Elvégeztünk egy kísérletet, hogy a kétmagos mikrovezérlőknek ezeket az előnyeit a gyakorlatban is realizálhassuk, amelyet a https://www.youtube.com/watch?v=b8iHXJw_PEE linken található videófelvételen tekinthetnek meg az érdeklődők. A tervezési mintapéldában az egyik magon (tipikusan ez az alárendelt, „slave” mag) valósítottuk meg egy kefe nélküli egyenáramú motor (BLDC) FOC-alapú motorvezérlésének funkcióját. A másik magon hajtódik végre a grafikus felhasználói felülethez szükséges grafikus programmodul, amely egy OLED-kijelzőt illeszt a vezérléshez, továbbá egy potenciométerrel és nyomógombokkal teszi lehetővé a motor fordulatszámának, forgásirányának és állapotának vezérlését a humán felhasználó számára. A kétmagos processzorra alapozott tervezési munka egyszerűsítését azzal demonstráltuk, hogy a két fő funkciót (a motorvezérlést és a felhasználói interfészt) megvalósító szoftvermodulok fejlesztését két – egymástól földrajzilag is távol működő – független tervezőcsapatra bíztuk. A két fejlesztési folyamat függetlenségének fenntartásán alapuló rugalmasság következtében csupán nagyon kevés kordinációs igény merült fel a két tervezőcsapat között. Az egyik csapat, amely komoly jártassággal rendelkezett a motorvezérlések területén, nagyon gyorsan kifejlesztette a BLDC-motor FOC-algoritmuson alapuló vezérlőszoftverét. A másik csapat viszont a grafikus felhasználói interfésznek volt a szakértője. Mindkét team zavartalanul hasznosíthatta az adott területen szükséges, speciális szakértelmét, és így, az együttműködésükkel gyorsan sikerült befejezniük a projektet. Ehhez csak nagyon minimális koordináció volt szükséges annak érdekében, hogy a nyomógombok és a potenciométer állapotát, a két processzormag közötti átadását egyeztessék. Annak érdekében, hogy a kísérlet még közelebb legyen egy valós tervezési folyamathoz, mindkét csapat kész szoftverkönyvtárakat használt a motorvezérlés és a grafikus felhasználói felület megvalósítására. Ennek következtében a projekt szinte nem igényelt programfejlesztési időt, mivel a kétféle, elvileg is eltérő alapokon álló, készen elérhető programmodult minimális erőfeszítéssel egybe lehetett integrálni.
A processzormagok nagy számítási teljesítőképességének köszönhetően mindkét processzormagon jelentős számítási teljesítmény maradt kihasználatlanul. A „határok feszegetése” érdekében az OLED-megjelenítő interfész kezelésénél azt is a slave processzorra bízták, hogy a dinamikusan változó motorparaméterek is megjeleníthetők legyenek – és mindezt úgy sikerült megvalósítani, hogy a vezérelt motor teljesítőképességét ez ne befolyásolja (3. ábra).
Az eddigiekben leírt összes előny érvényesítésére alkalmas termék például a Microchip dsPIC33CH128MP508 típusú, kétmagos digitális jelfeldolgozó-vezérlője (Digital Signal Controller – DSC). A kétmagos dsPIC33CH nagy teljesítőképességet kínál a magokhoz egyedileg hozzárendelt memóriával és alkalmazásspecifikus perifériákkal, amelyek ideálisan használhatóvá teszik a jó minőségű beágyazott, motorvezérlő és digitálisan vezérelt villamosenergia-átalakító alkalmazásokban. Az e termékcsaládba épített két processzormag lehetőséget teremt arra, hogy a tervezők a rendszer különféle funkcióit megvalósító firmware-jének elemeit különválasztva dolgozzák ki, majd egyszerűen és problémamentesen lehessen azokat egyetlen alkalmazássá egyesíteni anélkül, hogy a programmodulok működése akár a legkisebb mértékben is zavarná egymást.
Szerző: Harsha Jagadish, termékmendzser – MCU16, Microchip Technology
Az ábrák forrása:
Microchip Technology, Inc.
Közösségi média
Twitter: @MicrochipTech
Facebook: https://www.facebook.com/microchiptechnology/
www.microchip.com
még több Microchip