Érzékelők és beavatkozók I. Mikrovezérlők, mikroszámítógépek (szoftver) Dr. Soumelidis Alexandros egyetemi docens
Dr. Soumelidis Alexandros 2015-16. I. félév
-1-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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.
Dr. Soumelidis Alexandros 2015-16. I. félév
-2-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
-3-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
-4-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
-5-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
Programtervezés Feladatspecifikáció: • Szöveges, grafikus vagy logikai megfogalmazása a feladatnak. Hagyományos módszer:
• Szöveges specifikáció • Folyamatábra
Modern törekvések: • 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. Dr. Soumelidis Alexandros 2015-16. I. félév
-6-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
-7-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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). Dr. Soumelidis Alexandros 2015-16. I. félév
-8-
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
Gépi kód és assembly nyelv Gépi kódú Címek utasítások 392: 394: 396: 398: 39a: 39c: 39e: 3a0: 3a2: 3a4:
df cf cd de 64 0f f8 de 0f cd
93 93 b7 b7 97 b6 94 bf be bf
Dr. Soumelidis Alexandros 2015-16. I. félév
Assembly nyelvi forma Mnemonik-ok Operandusok Regiszterek, push push in in sbiw in cli out out out -9-
konstansok, címkék
r29 r28 r28, 0x3d r29, 0x3e r28, 0x14 r0, 0x3f
; ; ; ;
0x3e, r29 0x3f, r0 0x3d, r28
; 62 ; 63 ; 61
61 62 20 63
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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
Dr. Soumelidis Alexandros 2015-16. I. félév
- 10 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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 Dr. Soumelidis Alexandros 2015-16. I. félév
- 11 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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: • Editing • Szövegszerkesztés • Compilation • Fordítás • Linking • Összeállítás Dr. Soumelidis Alexandros 2015-16. I. félév
- 12 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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 Dr. Soumelidis Alexandros 2015-16. I. félév
- 13 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 14 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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 Dr. Soumelidis Alexandros 2015-16. I. félév
- 15 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
Programfejlesztési környezetek Példa: Atmel Studio az Atmel AVR 8, 16 és 32bites, 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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 16 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
Atmel Studio Ver. 6. (AVR 8-16-32-bites ARM 32-bites µC)
Dr. Soumelidis Alexandros 2015-16. I. félév
- 17 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
JTAG ICE USB
Hardver támogatás
JTAG ICE mkII
Házilag készült ISP letöltő AVR ONE
JTAGICE3
• ISP programozók: PP, RS232, USB • JTAG debuggerek Dr. Soumelidis Alexandros 2015-16. I. félév
- 18 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 19 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 20 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 21 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 22 -
REACTOR POWER LIMITING x1
N corr
N corr
N%
+ 1%
+
3x
3x
-
x1 x2 x2 y= _____ * 1000
3x
50 sec 0 t
1
3x
3x
3x
& 3x
- 1%
x1 0 1 1 Ta x1
x2 _
x3 _
1 0
0 1
yt
x1
y t-1 yt-1+1 yt-1-1
corr. yt
x2 x3
corr.
3x
Q
MCP
Q k x x2 y= Q * 1
x2 kQ
3x
N MCP
per
x1
3x
6 5 4 3 100 ____ 66 ____ 50 83 ____ ____ 28 26.3 24.5 30 (per. = permissible)
<3 0
3% +
N MCP per x1
6
N MCP per 100
3x
3x
-
EP302
5
4
3
<3
83
66
50
0
(per. = permissible)
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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 Dr. Soumelidis Alexandros 2015-16. I. félév
- 23 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 24 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 25 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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.
Dr. Soumelidis Alexandros 2015-16. I. félév
- 26 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék
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. Dr. Soumelidis Alexandros 2015-16. I. félév
- 27 -
Budapesti Műszaki és Gazdaságtudományi Egyetem Közlekedés- és Járműirányítási Tanszék