Érzékelők és beavatkozók I. Mikrovezérlők, mikroszámítógépek (szoftver) egyetemi docens - 1 -
Beágyazott rendszerek programozása Beágyazott számítástechnikai rendszerek: Általános architektúra. A feladatspecifikus tartalmat nagyobb részt a program (programok, szoftver) képviseli. Kisebb részt jelentenek általában a speciális hardver komponensek. - 2 -
Beágyazott szoftver Speciális vonások: Általában egy fixen, nem törlődő memóriában elhelyezett, automatikusan induló, és a leállításáig folyamatosan működő program. A programozás, programok letöltése, felújítása a működéstől külön álló folyamat, speciális szakértelmet és segédeszközöket követelhet meg. Interakció a kezelővel, külvilággal csak előre tervezett módon. - 3 -
Beágyazott szoftver Speciális követelmények: A hardver bonyolultságától függően egyszerűbb vagy bonyolultabb programszerkezet. Kis áramfogyasztás (elemes táplálású készülékek): speciális utasítások a rendszer elaltatása, készenléti mód, a programok optimalizálása kis fogyasztásra. Valós idejű (Real Time RT) működés: kis válaszidő a külső eseményekre, párhuzamosan zajló konkurens folyamatok, ütemezés. - 4 -
A programozás folyamata Hagyományos programozás: Programtervezés. A program megfogalmazása, kódolás. Fordítás: letölthető kód előállítása. Program letöltés. Program tesztelés, hibakeresés, javítás. A fenti lépések ismétlése a minél hibamentesebb állapot elérése érdekében. - 5 -
Feladatspecifikáció: Programtervezés Szöveges, grafikus vagy logikai megfogalmazása a feladatnak. Hagyományos módszer: Modern törekvések: Szöveges specifikáció Folyamatábra A specifikáció legyen maga a program, vagy legalább annak első (felső szintű) megfogalmazása top-down megközelítés. Specifikáció és programtervezés összefonódása. - 6 -
Programtervezési elvek Top-down tervezés. Moduláris tervezés: kisebb, egyszerűbb feladatokra bontás, már létező elemekre bontás. Objektum orientált programozás: osztályok, objektumok. Újrafelhasználás: modulok, osztályok, intellectual property IP Szimbolikus, logikai, grafikus programozás Automatikus kódgenerálás. - 7 -
A program megfogalmazása Gépi kódok: Bináris szekvenciák, emberi megértésre hexadecimális számokkal jelölik, pl. 1A 9C 55 Assembly nyelv: Gépi kódok helyett emlékeztető kódok (mnemonic), szimbolikus nevek és címek, makrók. Magas szintű programozási nyelvek: Beágyazott rendszerekben ma: C, C++, Java, C#. Szimbolikus, logikai, grafikus programtervezési nyelvek: Példák: Matlab/Simulink (Mathworks), LabVIEW (NI). - 8 -
Gépi kód és assembly nyelv Címek Gépi kódú utasítások 392: df 93 push r29 394: cf 93 push r28 396: cd b7 in r28, 0x3d ; 61 398: de b7 in r29, 0x3e ; 62 39a: 64 97 sbiw r28, 0x14 ; 20 39c: 0f b6 in r0, 0x3f ; 63 39e: f8 94 cli Assembly nyelvi forma Mnemonik-ok Operandusok Regiszterek, konstansok, 3a0: de bf out 0x3e, r29 ; 62 3a2: 0f be out 0x3f, r0 ; 63 3a4: cd bf out 0x3d, r28 ; 61 címkék - 9 -
Gépi kód Gépi kódban nem programozunk. Hol találkozhatunk gépi (bináris, hexadecimális) kóddal? Hibakeresés során - 10 -
Assembly nyelv Assembly nyelven ritkán programozunk. Tipikus példák assembly alkalmazásra: C (vagy más programozási nyelv) startup kódja Biztonságkritikus programozás Garantált időzítésű eszköz meghajtó eljárások, megszakítás kezelők Gyors, tömör eljárások - 11 -
Magas szintű programozási nyelvek Beágyazott rendszerek fejlesztésének standard programozási nyelve a C. Régebbi kísérletek: Pascal, Delphi. Újabb próbálkozások: az objektum orientált programozás meghonosítása C++, Java, C# A letölthető/futtatható program előállítása: Szövegszerkesztés Fordítás Összeállítás Editing Compilation Linking - 12 -
Programfejlesztési környezetek Szövegszerkesztés - Editor Fordítás Compiler Összeállítás Linker Letöltés Loader Tesztelés, hibajavítás - Debugger Programfejlesztési környezet A beágyazott rendszerek területén általában: Alapfunkciókat ellátó programfejleszési környezetet a gyártók ingyenesen biztosítanak. Editor, Assembler, Loader, Debugger Támogatja a cég hardver fejlesztőeszközeit - 13 -
Programfejlesztési környezetek Magas szintű nyelvi támogatás: általában külön kell beszerezni, lehetőségek: Professzionális eszközök kereskedelmi forgalomban megvásárolhatók: IAR, Keil, Altium Tasking. Szabad forráskódú (Open Source) eszközök: ingyenesen letölthetők és használhatók. Open Source: Nem kereskedelmi alkalmazásokra ingyenes. GNU licenc: közzétételi kötelezettség. Csatlakozni lehet a fejlesztő közösséghez. - 14 -
Programfejlesztési környezetek A professzionális eszközök előnyei: Általában kiterjedt könyvtárak (újrafelhasználható kód) tartoznak hozzájuk. Kiépített terméktámogatás. (Korlátozott) felelősségvállalás a gyártó részéről. Hátrányai: Magas beszerzési ár. Magas fenntartási költségek (terméktámogatás nem ingyenes). Sok esetben royalty az előállított termékekre. Kiszolgáltatottság - 15 -
Programfejlesztési környezetek Példa: Atmel Studio az Atmel AVR 8, 16 és 32- bites, valamint ARM mikrovezérlőihez Az Atmel cég weblapjáról ingyenesen letölthető programfejlesztő rendszer - assembly és C/C++. Az Atmel teljes mikrovezérlő választékát lefedi. Teljes körű támogatást ad az Atmel programozó és hibakereső hardvereihez. Kiterjedt szoftver támogatás (Software Framework), könyvtárak, példaprogramok Bővíthető professzionális fordítókkal (beépülnek a rendszerbe. - 16 -
Atmel Studio Ver. 6. (AVR 8-16-32-bites ARM 32-bites µc) - 17 -
JTAG ICE USB Hardver támogatás JTAG ICE mkii AVR ONE JTAGICE3 Házilag készült ISP letöltő ISP programozók: PP, RS232, USB JTAG debuggerek - 18 -
Szimbolikus programfejlesztés A programspecifikáció és a programfejlesztés egy egységben történik. Magas szintű, öndokumentáló program kifejezés. Automatikus programkód generálás akár több mikroszámítógép platformra is. Példák: A Mathworks Matlab/Simulink rendszeréhez illeszkedő Real Time és Embedded Target toolbox-ok. A National Instruments LabVIEW rendszere. A Siemens Space rendszere biztonsági alkalmazásokra. - 19 -
Matlab/Simulink,Real Time Workshop, Embedded Target Grafikus programkifejezés, kiterjedt építőelem készlet. Automatikus kódgenerálás különböző processzorokra. - 20 -
National Instruments LabVIEW Grafikus programozási nyelv, kiterjedt építőelem készlet. Változatos vezérlési szerkezetek, real-time működés Automatikus kódgenerálás. - 21 -
Siemens Space a Paksi Atomerőműben Reaktorvédelmi Rendszer: a Siemens TelepermXS rendszerére épül A programspecifikáció: több száz lap: grafikus sémák Space rendszer: automatikus kódgenerálás a TelepermXS processzorokra Biztonsági alkalmazásokra verifikált kód. N% Ta MCP x 1 x 2 x 1 x 2 x 1 N N corr x 1 x y= * 2 1000 3x Q y= k Q x * 1 N MCP 3x per 3x Q corr REACTOR POWER LIMITING N + - k Q 3x + 1% 3x 3x - 1% x 1 x 2 x 3 y t 0 y 1 1 0 1 x 2 MCP per N x 1 MCP per 1 0 6 5 4 3 100 83 66 50 30 28 26.3 24.5 (per. = permissible) + - y t-1 t-1 +1 y t-1-1 3x 3% 6 5 4 3 100 83 66 50 (per. = permissible) 1 3x x 1 x 2 x 3 3x 50 sec t 0 3x corr. < 3 0 < 3 0 3x y t corr. & 3x EP302-22 -
Programozási eszközök A programozási környezeteken kívül: programcsomagok, toolkit-ek, software stack-ek, IP-k: Matematikai eljárások (mátrix műveletek, FFT). Méréstechnikai, irányítástechnikai csomagok (PID szabályozó). Periféria kezelő csomagok (IDE, USB harddiszk, MMC/SD memóriakártya) Hálózati kommunikációs csomagok (CAN, TCP/IP, Zigbee, USB stack) Open-source és kereskedelmi célú Program újrahasznosítás - reusability - 23 -
Operációs rendszerek Beágyazott operációs rendszerek: Linux open source és professzionális realizációk, különböző disztibúciók. Android open source, a mobil eszközök révén nagyon elterjedt. Microsoft WinCE professzionális, programozók szűk köre fér hozzá. Apple ios professzionális, de a programozók felé korlátokkal nyitott. Valós idejű operációs rendszerek, pl. RTOS, MicroC/OS Különböző gyártók saját termékeik számára kifejlesztett operációs rendszerei. - 24 -
Operációs rendszerek Operációs rendszerek alkalmazásának előnyei: Standardizált programfuttatási környezetet biztosítanak, a programozónak csak saját feladatával kell törődnie. Standardizált rendszerkezelés operációs rendszerhivásokon keresztül. Egységesített hardver kezelés standard meghajtóprogramok (driver) API felületein keresztül. Háttértárolók, kommunikációs hálózatok magas szintű standardizált kezelése. Automatizált memóriakezelés, virtuális memóriakezelés háttértárolók igénybevételével. Standard programok, programcsomagok a megoldandó feladatok széles skálájára. - 25 -
Operációs rendszerek Operációs rendszerek alkalmazásának feltételei: Nagyobb számítási teljesítményű, általában 32-bites és a feletti mikroszámítógép. Nagy dinamikus memória és MMU (Memory Management Unit). Célszerű többszintű prioritásos megszakítás-rendszer, DMA (Direct Memory Access) és egyéb hardver támogatás. - 26 -
Real-time programozás Valós idejű rendszerek: Párhuzamosan futó, egymással és a külvilág eseményeivel kapcsolatban álló folyamatok. Egymással és a külvilág eseményeivel való szinkronizáció. Holtpontmentes működés. Programeszközök: Valós idejű magok (real-time kernel): a folyamatütemezés, szinkronizáció, információcsere eszközeit tömörítő program-mag, amely köré épül az alkalmazói program. Valós idejű operációs rendszer: az operációs rendszer funkciókat valós idejű eszközök egészítik ki. - 27 -