Nagyteljesítményű mikrovezérlők 10. RTOS alapok

Hasonló dokumentumok
ARM Cortex magú mikrovezérlők 10. RTOS alapok

Nagyteljesítményű mikrovezérlők 10b. RTOS gyakorlatok

Micro-Controller Operating

ARM Cortex magú mikrovezérlők. mbed

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Scherer Balázs: Mikrovezérlık fejlıdési trendjei

Érzékelők és beavatkozók I.

Scherer Balázs: Mikrovezérlők fejlődési trendjei

Silabs STK3700, Simplicity Studio laborgyakorlat

ARM Cortex magú mikrovezérlők

Utolsó módosítás:

Dr. Schuster György október 3.

ARM Cortex magú mikrovezérlők

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

ARM Cortex magú mikrovezérlők

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Nagyteljesítményű mikrovezérlők

TI TMDSEVM6472 rövid bemutatása

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

Cloud computing Dr. Bakonyi Péter.

ARM processzorok felépítése

Dr. Schuster György október 30.

Using the CW-Net in a user defined IP network

Bevezetés az informatikába

Konkurens TCP Szerver

1.1. Általános áttekintés

Bevezetés a számítástechnikába

Ethernet/IP címzés - gyakorlat

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Rendszermodellezés: házi feladat bemutatás

Komponens alapú fejlesztés

Arduino bevezető Szenzorhálózatok és alkalmazásaik

Book Template Title. Author Last Name, Author First Name

Tartalomjegyzék. Előszó... 10

Számítógépes alapismeretek

ARM Cortex magú mikrovezérlők

Dr. Schuster György október 14.

operációs rendszer A TinyOS - Bevezető - [ Beágyazott Információs Rendszerek Tervezése ]

Perifériák hozzáadása a rendszerhez

Érzékelők és beavatkozók I.

Számítógépek felépítése

Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar MIT. Nagyteljesítményű mikrovezérlők tantárgy [vimim342]

Beágyazott rendszerek alapkomponensei II. : Software

ARM Cortex magú mikrovezérlők

Kiszolgálók üzemeltetése. Iványi Péter

Iman 3.0 szoftverdokumentáció

Közösség, projektek, IDE

Autóipari beágyazott rendszerek. AutoSAR Platform

Utolsó módosítás:

Nagios NSCA Indirect Monitoring, Passive Check

Az informatika alapjai. 10. elıadás. Operációs rendszer

Konkurencia és energiakezelés integrálása eszközmeghajtókba. Vezeték nélküli szenzorhálózatok

Matematikai és Informatikai Intézet. 4. Folyamatok

Nagyteljesítményű mikrovezérlők TCP/IP

iphone és Android két jó barát...

Operációs rendszerek. Az NT folyamatok kezelése

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Mikrorendszerek tervezése

ARM Cortex magú mikrovezérlők

SOPHOS simple + secure. A dobozba rejtett biztonság UTM 9. Kókai Gábor - Sophos Advanced Engineer Balogh Viktor - Sophos Architect SOPHOS

(NGB_TA024_1) MÉRÉSI JEGYZŐKÖNYV

Kommunikációs rendszerek teljesítőképesség-vizsgálata

Viczián István IP Systems JUM XIX szeptember 18.

Programmable Chip. System on a Chip. Lazányi János. Tartalom. A hagyományos technológia SoC / PSoC SoPC Fejlesztés menete Mi van az FPGA-ban?

Firmware fejlesztés. Mártonfalvi Zsolt Hardware programozó

KOGGM614 JÁRMŰIPARI KUTATÁS ÉS FEJLESZTÉS FOLYAMATA

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

Adatbázis és alkalmazás konszolidáció Oracle SPARC T4/5 alapon

Feltörekvő technológiák: seam, drools, richfaces és társai a JBossban

SAMBA. Forrás: Lajber Zoltán: SAMBA alapok dia, SZIE

Labor 2 Mikrovezérlők

Nagyteljesítményű mikrovezérlők

A Netburner fejlesztőeszköz alkalmazástechnikája

BackupPC. Az /etc/hosts fájlba betehetjük a hosztokat, ha nem a tejles (fqdn, DNS név) névvel hivatkozunk rájuk: # /etc/hosts #

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Operációs rendszerek. Az NT memóriakezelése

Operációs rendszerek. A Windows NT felépítése

Mikrorendszerek tervezése

Cisco Catalyst 3500XL switch segédlet

UNIX / Linux rendszeradminisztráció

Hálózati operációs rendszerek II.

6.2. TMS320C64x és TMS320C67xx DSP használata

Elosztott rendszerek

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mobil Informatikai Rendszerek

Felhő alapú hálózatok (VITMMA02) OpenStack Neutron Networking

Demo board. Nagy András. Conet Kft november 29.

SzIP kompatibilis sávszélesség mérések

OpenCL - The open standard for parallel programming of heterogeneous systems

IP alapú komunikáció. 2. Előadás - Switchek 2 Kovács Ákos

Adatbányászat és Perszonalizáció architektúra

1. Kapcsolók konfigurálása

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

16F628A megszakítás kezelése

Dr. Kincses Zoltán, Dr. Vörösházi Zsolt: FPGA-alapú beágyazott rendszerek tervezése

Jelfeldolgozás a közlekedésben

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM

Átírás:

Nagyteljesítményű mikrovezérlők 10. RTOS alapok Scherer Balázs Budapest University of Technology and Economics Department of Measurement and Information Systems BME-MIT 2015

Alap beágyazott szoftver architektúrák I. Round-Robin Idő void main(void) { while(1) { if ( Device 1 needs service ) { // Handle Device 1 and its data } if ( Device 2 needs service ) { // Handle Device 2 and its data } if ( Device 3 needs service ) { // Handle Device 3 and its data } } } D1 D2 D3 D4 D1 D2 D3 D4 BME-MIT 2015 2.

Alap beágyazott szoftver architektúrák II. Round-Robin o Nagyon egyszerű o Nincs interrupt, a főciklus végzi az ütemezést o Nincs közös erőforrás probléma o Worst case válaszidő = a job-ok össz válaszideje o A Worst Case válaszidő lineárisan nő a job-ok számával o A válaszidőnek rendkívül nagy a jitter-e o Ha gyors válasz kell, akkor annak a kiszolgálási pontjait meg lehet többszörözni, de ez rontja az egész rendszer válaszidejét o Egy új job felborítja az eddigi időzítést BME-MIT 2015 3.

Alap beágyazott szoftver architektúrák III. Megszakításokkal kiegészített Round-Robin BOOL Device1_flag = 0; BOOL Device2_flag = 0; BOOL Device3_flag = 0; void interrupt vdevice1(void) { // Handle Device 1 time critical part Device1_flag = 1; } void interrupt vdevice2(void) { // Handle Device 2 time critical part Device1_flag = 2; } void interrupt vdevice3(void) { // Handle Device 3 time critical part Device3_flag = 1; } void main(void) { while(1) { if ( Device1_flag ) { // Handle Device 1 and its data } if (Device2_flag ) { // Handle Device 2 and its data } if (Device3_flag ) { // Handle Device 3 and its data } } } BME-MIT 2015 4.

Alap beágyazott szoftver architektúrák IV. Megszakításokkal kiegészített Round-Robin o Picit jobban kezeli az időkritikus részeket o Jelentkezhet az osztott változó probléma az IT és a főprogram között o Esetleg a flag-ek helyett használható számláló is o Worst case válaszidő = a job-ok össz válaszideje + IT o A Worst Case válaszidő lineárisan nő a job-ok számával o A válaszidőnek rendkívül nagy a jitter-e o Ha gyors válasz kell, akkor annak a kiszolgálási pontjait meg lehet többszörözni, de ez rontja az egész rendszer válaszidejét o Egy új job felborítja az eddigi időzítést BME-MIT 2015 5.

Lehetséges problémák I.: osztott változók Nem atomikus módon kezelt változók főprogramban és interruptban történő használata problémához vezethet. föprogram unsigned short adc_value,display; main() { while(1) { display = adc_value } } Interrupt external unsigned short adc_value; INTERRUPT(SIG_ADC ) { // Az AD kiolvasása adc_value = read_adc(); } adc_value értéke Elkezdődik a display = adc_value (nem egy asm utasítás) MSB LSB display értéke MSB LSB Time ADC IT megszakítja a főprogramot a két érték másolása közben Befejeződik a display = adc_value (nem egy asm utasítás) MSB MSB LSB LSB MSB MSB LSB LSB BME-MIT 2015 6.

Problémák II.: függvény újrahívatóság Az előző eset kiterjesztése és egyik leggyakoribb megjelenési formája. Olyan függvények nem használhatóak interrupt-ból és főprogramból is egyszerre, amelyek globális változókat, static kulcsszóval ellátott változókat vagy közös erőforrást használnak A fordító általában figyelmeztet erre BME-MIT 2015 7.

Alap beágyazott szoftver architektúrák V. Függvénysor alapú nem preemptív ütemezés void interrupt vdevice1(void) { // Handle Device 1 time critical part // Put Device1_func to call queue } void interrupt vdevice2(void) { // Handle Device 2 time critical part // Put Device2_func to call queue } void interrupt vdevice3(void) { // Handle Device 3 time critical part // Put Device3_func to call queue } void main(void) { while(1) { while(function queue not empty) // Call first from queue } } void Device1_func (void) { // Handle Device 1 } void Device2_func (void) { // Handle Device 2 } void Device3_func (void) { // Handle Device 3 } BME-MIT 2015 8.

Alap beágyazott szoftver architektúrák VI. Függvénysor alapú nem preemptív ütemezés D1 start IT D1 end Az IT futás késszé teszi a magas prioritású taszkot D2 BME-MIT 2015 9.

Alap beágyazott szoftver architektúrák VII. Függvénysor alapú nem preemptív ütemezés o Képes a prioritások kezelésére. o Jelentkezhet az osztott változó probléma az IT és a főprogram között. o Worst case válaszidő = a leghosszabb job válaszideje + IT o A Worst Case válaszidő nem nő lineárisan a job-ok számával. o A válaszidő jitter jóval kézbenntarthatóbb o Egy új job nem borítja fel az eddigi időzítést BME-MIT 2015 10.

Alap beágyazott szoftver architektúrák VIII. Real Time OS, preemptív ütemezés void interrupt vdevice1(void) { // Handle Device 1 time critical part // Set signal to Device1_task } void interrupt vdevice2(void) { // Handle Device 2 time critical part // Set signal to Device2_task } void interrupt vdevice3(void) { // Handle Device 3 time critical part // Set signal to Device3_task } void Device1_task (void) { // Wait for signal to Device1_task // Handle Device 1 } void Device2_task (void) { // Wait for signal to Device2_task // Handle Device 2 } void Device3_task (void) { // Wait for signal to Device3_task // Handle Device 3 } BME-MIT 2015 11.

Alap beágyazott szoftver architektúrák IX. Real Time OS, preemptív ütemezés Prioritás D1 start IT D2 Az IT futás késszé teszi a magas prioritású taszkot D1 end BME-MIT 2015 12.

Alap beágyazott szoftver architektúrák X. Real Time OS, preemptív ütemezés o Erősen prioritásos o Jelentkezhet az osztott változó probléma az IT és a főprogram között, valamint az egyes task-ok között is. o Worst case válaszidő = a task váltási idő + IT o A Worst Case válaszidő nem nő az új job ok hozzáadásával o A válaszidő jitter nagyon alacsony a magas prioritású szálakra o Jelentős kód overhead BME-MIT 2015 13.

A Task-ok felépítése és a taszkváltás TASK1 Status Prioritás Entry Stack P TASK2 Status Prioritás Entry Stack P TASK3 Status Prioritás Entry Stack P Stack Stack Stack Memória CPU regiszterek Status Stack P CPU BME-MIT 2015 14.

Beágyazott OS-ek és a normál OS-ek közötti különbségek Footprint Konfigurálhatóság Real-time viselkedés Nem az OS indítja az alkalmazást, hanem az alkalmazás az OS-t Nincs memória védelem BME-MIT 2015 15.

Beágyazott operációs rendszerek piackép Miért kell nekünk OS-ekkel foglalkozni o Beágyazott OS-ek elterjedtsége o Milyen RTOS-ek léteznek a piacon obeágyazott OS és a normál OS-ek közötti különbség o Csoportosítás o Statisztikák BME-MIT 2015 16.

Miért fontos az operációs rendszer és egyéb szoftver tool-ok BME-MIT 2015 17.

A beágyazott OS-ek elterjedtsége BME-MIT 2015 18.

Beágyazott operációs rendszerek csoportosítása Komplexitás szerint o Egyszerű kernelek 5-100k (uc-os, FreeRTOS, CMX, ecos ) o Közepes komplexitású 100k-1M (ecos, Nucleus, QNX, Rtems, VxWorks ) o Nagy komplexitású 1M +(Linux, WinCe, WinXP Embedded ) Fizetős, vagy ingyenes o Ingyenes(FreeRTOS, ecos, Rtems, Linux) o Fizetős (VxWorks, uc-os, Nucleus, QNX, WinCe) BME-MIT 2015 19.

Milyen OS-t használtak az elmúlt években? BME-MIT 2015 20.

Milyen OS-t használtak az elmúlt években? BME-MIT 2015 21.

µc-os BME-MIT 2015 22.

A μc/os története Jean J. Labrosse Well, it can t be that difficult to write a kernel. All it needs to do is save and restore processor registers. o esténként és hétvégenként dolgozva elkészült egy új kernel o kb. egy év alatt ért el az A kernel szintjére o új céget azonban nem akart alapítani, mert már volt vagy 50 kernel a piacon akkoriban o Publikálja: Embedded Systems Programmingmagazinnál 1992 legolvasottabb cikke BME-MIT 2015 23.

A μc/os tulajdonságai forráskódban rendelkezésre áll hordozható (processzor függő részek külön) skálázható multi-tasking preemptív ütemező determinisztikus futási idő minden taszknak különböző méretű lehet a stack-je rendszer szolgáltatások: mailbox, queue, semaphore, fix méretű memória partíció, idő szolgáltatások stb. interrupt management(255 szintű egymásbaágyazhatóság) robusztus és megbízható BME-MIT 2015 24.

A μc/os tulajdonságai nagyon jól dokumentált (μc/os-iii, The Real-Time Kernel könyv 300 oldalon elemzi a kódot) oktatási célra a kernel ingyenesen hozzáférhető kiegészítő csomagok: o TCP-IP (Protocol Stack) o FS (Embedded File System) o GUI (Embedded Graphical User Interface) o USB Device (Universal Serial Bus Device Stack) o USB Host (Universal Serial Bus Host Stack) o FL (Flash Loader) o Modbus (Embedded Modbus Stack) o CAN (CAN Protocol Stack) o BuildingBlocks (Embedded Software Components) o Probe (Real-Time Monitoring) BME-MIT 2015 25.

A μc/os architektúrája Application software µc-os II kernel OS_CORE.c OS_TASK.c OS_MBOX.c OS_TIME.c OS_MEM.c ucos_ii.c OS_Q.c ucos_ii.h OS_SEM.c µc-os configuration OS_CFG.h INCLUDES.h µc-os II hardware specific part OS_CPU.h OS_CPU_A.asm OS_CPU.c Software CPU Timer Hardware BME-MIT 2015 26.

A μc/os konfigurálása OS_CFG.h /* -------------------- MESSAGE MAILBOXES --------------------- */ #define OS_MBOX_EN 1 /* Enable (1) or Disable (0) code generation for MAILBOXES */ #define OS_MBOX_ACCEPT_EN 1 /* Include code for OSMboxAccept() */ #define OS_MBOX_DEL_EN 1 /* Include code for OSMboxDel() */ #define OS_MBOX_POST_EN 1 /* Include code for OSMboxPost() */ #define OS_MBOX_POST_OPT_EN 1 /* Include code for OSMboxPostOpt() */ #define OS_MBOX_QUERY_EN 1 /* Include code for OSMboxQuery() */ OS_MBOX.c #if OS_MBOX_EN > 0 #if OS_MBOX_ACCEPT_EN > 0 #endif #if OS_MBOX_DEL_EN > 0 #endif #endif BME-MIT 2015 27.

A μc/os taszk állapotai WAITING READY RUNNING BME-MIT 2015 28.

FreeRTOS BME-MIT 2015 29.

FreeRTOS Nyílt forráskódú egyszerű kernel o www.freertos.org Az elmúlt időszak legdinamikusabban fejlődő könnyű kategóriájú kernelje 2008-ban több mint 77,500 letöltés. Portok: o ARM7, ARM9, CortexM3 oatmel AVR, AVR32 o PIC18, PIC24, dspic, PIC32 o Microblase BME-MIT 2015 30.

Taszkok o Saját stack okonfigurálni kell hogy mennyit használunk omagas prioritás szám magas prioritás oidle task 0-s prioritás FreeRTOS taszkok BME-MIT 2015 31.

FreeRTOS taszk control block BME-MIT 2015 32.

FreeRTOS taszkok kezelése voidvotherfunction( void ) { xtaskhandle xhandle; // Create the task, storing the handle. xtaskcreate( vtaskcode, "NAME", STACK_SIZE, NULL, tskidle_priority, &xhandle ); // Use the handle to delete the task. vtaskdelete( xhandle ); } BME-MIT 2015 33.

FreeRTOS taszk szinkronizáció Bináris szemaforok o vsemaphorecreatebinary o xsemaphoretake o xsemaphoregive o xsemaphoregivefromisr Számláló szemaforok o Nem csak 0-1 lehet az értéke, hanem egy egész szám. o Erőforrás menedzsment ahol egyszerre többen férhetnek hozzá. o Esemény számolás. BME-MIT 2015 34.

FreeRTOS taszk szinkronizáció mutex Mutexek o Prioritás inverzió ellen védettek o Ne használjuk megszakításból BME-MIT 2015 35.

FreeRTOS Queue Queue o Üzenetek küldése folyamatok között o xqueuecreate o xqueuesend o xqueuereceive o xqueuesendfromisr BME-MIT 2015 36.

FreeRTOS CoRutin Egyszerűbb mint egy taszk Függvény sor alapú, nem preemtív ütemető BME-MIT 2015 37.

FreeRTOS forráskód elrendezés Nagyon egyszerű alap kernel o tasks.c, queue.c, list.c. File-ok az Source könyvtárban o Ezek a file-ok tartalmazzák az alap taszk létrehozást és szinkronizációt. BME-MIT 2015 38.

FreeRTOS portolás A port specifikus kód részek a portable directoryban Task váltás, Sys tick timer, Critical szekcióba lépés és elhagyás Toolchain szerint rendezve BME-MIT 2015 39.

GCC specifikus részek GCC specifikus részek Egy port file BME-MIT 2015 40.

GCC demó projectek Kártya és fordító specifikus részek Startup kód Kártya specifikus kód BME-MIT 2015 41.

A FreeRTOS könyvtárszerkezete áttekintés BME-MIT 2015 42.

FreeRTOS_Config.h FreeRTOS konfiguráció BME-MIT 2015 43.

Trace hookok Gyakorlatilag minden fontosabb belső lépéshez tartozik BME-MIT 2015 44.

Trace alkalmazás Teljes szinkronizációs történet megjelenés BME-MIT 2015 45.

FreeRTOS kereskedelmi változatok OpenRTOS o Kereskedelmi szinten támogatott verzió o USB, File rendszer, TCP-IP támogatás SafeRTOS o SIL3 szintű tanúsítvány o Stellaris LM3S9B96 Microcontrollerbe ROM szinten beépítve BME-MIT 2015 46.

ecos (Embedded Configurable Operating System) BME-MIT 2015 47.

Bevezetés Az 1998-ban kifejlesztett ecos létrehozóinak filozófiája az volt, hogy egy olyan nyílt forráskódú Real-Time Operációs rendszert készítsenek, amely széleskörű konfigurációs lehetőséget nyújt a felhasználónak anélkül, hogy az operációs rendszer forráskódjának akár csak egy sorát meg kéne változtatni. 200+ konfigurálási opció Kompatibilitási lehetőségek o POSIX, EL/IX, µitron Előnyök a Linux-hoz képest o Kisebb overhead (40kByte körül már futásképes) o Real-Time o A RedBoot bootmonitor alapja BME-MIT 2015 48.

ecos architectúra Széleskörű hardware platform támogatás Application Libraries C Math Compatibility uitron POSIX Web Server Kernel Networking Stack File System Hardware Abstraction Layer Device Drivers RedBoot ROM monitor interrupts Virtual Vectors Exceptions Serial Ethernet Flash Hardware BME-MIT 2015 49.

ecos Repository (A komponens raktár) A Component Repository egy könyvtárstruktúra ami tartalmazza az összes csomagot packages compat devs fs hal infra io kernel net POSIX eth jffs2 arm common Bsd_tcp uitron flash ROM common eth common serial RAM i386 serial Lwip usb mips usb ftp watchd powerpc watchd snmp touch sh fileio webserv BME-MIT 2015 50.

ecos HAL A HAL (Hardware Abstraction Layer) szeparálja el egymástól a platform architektúrájától függő részeket az általános hardware független részektől. A HAL Gyakorlatilag egy szoftverréteg általánosított API-val (Application Programing Interface) ami magába zárja a működéshez szükséges hardware műveleteket. BME-MIT 2015 51.

A HAL könyvtár struktúrája A HAL könyvtár struktúrája egy hierarchikus elrendezés, ami architektúra, variáns, target alapelemekre bontja a hardware függő kódot. hal common architektúra ARM variáns platform ARM7 mitmót mcu-arm-s-01 BME-MIT 2015 52.

Az ecos component framework (keretrendszer) Ez gyakorlatilag egy olyan eszközgyűjtemény, ami lehetővé teszi a felhasználónak, hogy menedzselje, illetve konfigurálja az ecos rendszer különféle csomagjait Configuration Tool o Command line / graphical Package Administration Tool o Komplett csomagok (esetleg új) hozzáadása eltávolítása az ecos komponens raktárhoz/ból Memory Layout Tool o Új platformra való portolásnál használják a memória kiosztás megadására. BME-MIT 2015 53.

A Configuration Tool Ezzel lehet finoman hangolt konfigurációkat készíteni, a Configuration Tool gyakorlatilag a CDL (Component Description Language) file-ok Grafikus megjelenítése CDL (Component Description Language) o Az ecos talán legfontosabb része, egy olyan script nyelv, ami leírja egy csomag tartalmát illetve konfigurálási lehetőségeit o Minden csomaghoz tartozik legalább egy cdl file o A CDL file-ok definició jelennek meg később a C file-ok #ifdef részeiben cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD { display "Console/GDB serial port baud rate" flavor data legal_values 9600 19200 38400 57600 115200 default_value 38400 description " This option controls the default baud rate used for the Console/GDB connection." } BME-MIT 2015 54.

A Configuration Tool BME-MIT 2015 55.

Mit hoz magával egy RTOS? Általában célszerű egy demókártya, processzor használatánál ezzel kezdeni o Összeállított fejlesztőkörnyezet GCC fordítások, startup file-ok, make file-ok o Egyes külső programcsomagok integrálva vannak TCP/IP Flash file rendszer o Mellesleg még párhuzamos programozást is alkalmazhatunk BME-MIT 2015 56.

Újdonságok CMSIS RTOS? Általános felület RTOS absztrakcióra BME-MIT 2015 57.