Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h...

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

Transcript of Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h...

Page 1: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015Budapest University of Technology and Economics

Department of Measurement and Information Systems

Scherer Balázs

Page 2: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Alap beágyazott szoftver architektúrák I.

� Round-Robin

void main(void)

{

while(1)

{

if ( Device 1 needs service )

{

// Handle Device 1 and its data

}

Idő

D1

D2

D3

© BME-MIT 2015 2.

}

if ( Device 2 needs service )

{

// Handle Device 2 and its data

}

if ( Device 3 needs service )

{

// Handle Device 3 and its data

}

'

}

}

D4

D1

D2

D3

D4

Page 3: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Alap beágyazott szoftver architektúrák II.

� Round-Robino 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

© BME-MIT 2015 3.

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

Page 4: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Alap beágyazott szoftver architektúrák III.

� Megszakításokkal kiegészített Round-Robin

void main(void)

{

while(1)

{

if ( Device1_flag )

{

// Handle Device 1 and its data

}

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;

}

© BME-MIT 2015 4.

}

if (Device2_flag )

{

// Handle Device 2 and its data

}

if (Device3_flag )

{

// Handle Device 3 and its data

}

'

}

}

}

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;

}

Page 5: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 5.

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

Page 6: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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.

external unsigned short adc_value;

INTERRUPT(SIG_ADC )

{

// Az AD kiolvasása

adc_value = read_adc();

}

Interrupt

unsigned short adc_value,display;

main()

{

while(1) { display = adc_value }

}

föprogram

© BME-MIT 2015 6.

}}

Time

Elkezdődik a display = adc_value

(nem egy asm utasítás) MSB LSB

adc_value értéke

MSB LSB

ADC IT megszakítja a főprogramot a

két érték másolása közben

display értéke

MSB LSB

Befejeződik a display = adc_value

(nem egy asm utasítás)MSB LSB

MSB LSB

MSB LSB

Page 7: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 7.

é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

Page 8: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Alap beágyazott szoftver architektúrák V.

� Függvénysor alapú nem preemptív ütemezés

void main(void)

{

while(1)

{

while(Function queue not empty)

// Call first from queue

}

}

void interrupt vDevice1(void)

{

// Handle Device 1 time critical part

// Put Device1_func to call queue

}

void interrupt vDevice2(void)

{

© BME-MIT 2015 8.

}

void Device1_func (void)

{ // Handle Device 1 }

void Device2_func (void)

{ // Handle Device 2 }

void Device3_func (void)

{ // Handle Device 3 }

{

// 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

}

Page 9: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Alap beágyazott szoftver architektúrák VI.

� Függvénysor alapú nem preemptív ütemezés

D1

start

IT

D1 Az IT futás késszé teszi a magas

© BME-MIT 2015 9.

D2

D1

end

Az IT futás késszé teszi a magas

prioritású taszkot

Page 10: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 10.

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

Page 11: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Alap beágyazott szoftver architektúrák VIII.

� Real Time OS, preemptív ütemezés

void Device1_task (void)

{

// Wait for signal to Device1_task

// Handle Device 1

}

void Device2_task (void)

void interrupt vDevice1(void)

{

// Handle Device 1 time critical part

// Set signal to Device1_task

}

void interrupt vDevice2(void)

© BME-MIT 2015 11.

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

}

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

}

Page 12: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Alap beágyazott szoftver architektúrák IX.

� Real Time OS, preemptív ütemezés

D1

start

IT

Prioritás

© BME-MIT 2015 12.

D2

D1

end

Az IT futás késszé teszi a magas

prioritású taszkot

Page 13: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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.

Worst case válaszidő = a task váltási idő + IT

© BME-MIT 2015 13.

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

Page 14: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

A Task-ok felépítése és a taszkváltás

TASK1

Stack

Status

Prioritás

Entry

Stack P

TASK2

Stack

Status

Prioritás

Entry

Stack P

TASK3

Stack

Status

Prioritás

Entry

Stack P

© BME-MIT 2015 14.

Memória

CPU

Status

Stack P

CPU

regiszterek

Page 15: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 15.

� Nem az OS indítja az alkalmazást, hanem az alkalmazás az OS-t

� Nincs memória védelem

Page 16: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 16.

o Beágyazott OS és a normál OS-ek közötti különbség

o Csoportosítás

o Statisztikák

Page 17: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Miért fontos az operációs rendszer és egyéb szoftver tool-ok

© BME-MIT 2015 17.

Page 18: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

A beágyazott OS-ek elterjedtsége

© BME-MIT 2015 18.

Page 19: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Beágyazott operációs rendszerek csoportosítása

� Komplexitás szerinto 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 …)

© BME-MIT 2015 19.

� Fizetős, vagy ingyeneso Ingyenes (FreeRTOS, eCos, Rtems, Linux)

o Fizetős (VxWorks, uC-OS, Nucleus, QNX, WinCe)

Page 20: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Milyen OS-t használtak az elmúlt években?

© BME-MIT 2015 20.

Page 21: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Milyen OS-t használtak az elmúlt években?

© BME-MIT 2015 21.

Page 22: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

µC-OS

© BME-MIT 2015 22.

Page 23: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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.”

© BME-MIT 2015 23.

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 Programming magazinnál 1992 legolvasottabb cikke

Page 24: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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ő•

© BME-MIT 2015 24.

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ó

Page 25: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

A μC/OS tulajdonságai

� nagyon jól dokumentált (μC/OS-III, The Real-Time Kernelkö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)

© BME-MIT 2015 25.

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)

Page 26: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

A μC/OS architektúrája

µµµµ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

µµµµC-OS

configuration

OS_CFG.h

INCLUDES.h

Application software

© BME-MIT 2015 26.

Hardware

Software

CPU Timer

µµµµC-OS II hardware specific part

OS_CPU.h OS_CPU_A.asm OS_CPU.c

OS_Q.c uCOS_II.h

OS_SEM.c

Page 27: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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() */

© BME-MIT 2015 27.

#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

Page 28: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

A μC/OS taszk állapotai

WAITING

© BME-MIT 2015 28.

READY RUNNING

Page 29: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS

© BME-MIT 2015 29.

Page 30: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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.

© BME-MIT 2015 30.

� 2008-ban több mint 77,500 letöltés.

� Portok:

o ARM7, ARM9, CortexM3

o Atmel AVR, AVR32

o PIC18, PIC24, dsPIC, PIC32

o Microblase…

Page 31: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS taszkok

� Taszkok

o Saját stack

o Konfigurálni kell hogy mennyit használunk

© BME-MIT 2015 31.

használunk

o Magas prioritás szám magas prioritás

o Idle task 0-s prioritás

Page 32: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS taszk control block

© BME-MIT 2015 32.

Page 33: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS taszkok kezelése

void vOtherFunction( void )

{

xTaskHandle xHandle;

// Create the task, storing the handle.

xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL,

© BME-MIT 2015 33.

xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );

// Use the handle to delete the task.

vTaskDelete( xHandle );

}

Page 34: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS taszk szinkronizáció

� Bináris szemaforoko vSemaphoreCreateBinary

o xSemaphoreTake

o xSemaphoreGive

o xSemaphoreGiveFromISR

� Számláló szemaforoko Nem csak 0-1 lehet az értéke, hanem egy egész szám.

© BME-MIT 2015 34.

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.

Page 35: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS taszk szinkronizáció mutex

� Mutexeko Prioritás inverzió ellen védettek

o Ne használjuk megszakításból

© BME-MIT 2015 35.

Page 36: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS Queue

� Queue

o Üzenetek küldése folyamatok között

o xQueueCreate

o xQueueSend

o xQueueReceive

o xQueueSendFromISR

© BME-MIT 2015 36.

o xQueueSendFromISR

Page 37: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS CoRutin

� Egyszerűbb mint egy taszk

� Függvény sor alapú, nem preemtív ütemető

© BME-MIT 2015 37.

Page 38: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS forráskód elrendezés

� Nagyon egyszerű alap kernel

o tasks.c, queue.c, list.c. File-ok az Source könyvtárban

© BME-MIT 2015 38.

o Ezek a file-ok tartalmazzák az alap taszk létrehozást és szinkronizációt.

Page 39: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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.

� Toolchain szerint rendezve

Page 40: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

GCC specifikus részek

� GCC specifikus részek

� Egy port file

© BME-MIT 2015 40.

Page 41: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

GCC demó projectek

� Kártya és fordító specifikus részek

� Startup kód

� Kártya specifikus kód

© BME-MIT 2015 41.

Page 42: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

A FreeRTOS könyvtárszerkezete áttekintés

© BME-MIT 2015 42.

Page 43: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS konfiguráció

� FreeRTOS_Config.h

© BME-MIT 2015 43.

Page 44: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Trace hookok

� Gyakorlatilag minden fontosabb belső lépéshez tartozik

© BME-MIT 2015 44.

Page 45: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Trace alkalmazás

� Teljes szinkronizációs történet megjelenés

© BME-MIT 2015 45.

Page 46: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

FreeRTOS kereskedelmi változatok

� OpenRTOS

o Kereskedelmi szinten támogatott verzió

o USB, File rendszer, TCP-IP támogatás

© BME-MIT 2015 46.

� SafeRTOS

o SIL3 szintű tanúsítvány

o Stellaris LM3S9B96 Microcontrollerbe ROM szinten beépítve

Page 47: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

eCos(Embedded Configurable Operating System)

© BME-MIT 2015 47.

Page 48: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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ó

© BME-MIT 2015 48.

� 200+ konfigurálási opció

� Kompatibilitási lehetőségek

o POSIX, EL/IX, µItron

� Előnyök a Linux-hoz képesto Kisebb overhead (40kByte körül már futásképes)

o Real-Time

o A RedBoot bootmonitor alapja

Page 49: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

eCos architectúraSzéleskörű hardware platform támogatás

Kernel Networking Stack File System

C

Ma

th

Libraries

uIT

RO

N

PO

SIX

Compatibility

Web Server

Application

© BME-MIT 2015 49.

Hardware

RedBoot

ROM monitor

inte

rru

pts

Vir

tua

l V

ec

tors

Ex

ce

pti

on

s

Hardware

Abstraction Layer

Se

ria

l

Eth

ern

et

Fla

sh

Device Drivers

Page 50: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 50.

uITRON flash

serial

usb

watchd

touch

ROM

RAM

common

i386

mips

powerpc

sh

eth

serial

usb

watchd

fileio

common

Lwip

ftp

snmp

webserv

Page 51: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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.

© BME-MIT 2015 51.

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.

Page 52: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 52.

variáns

common

architektúra

platform

ARM

ARM7

mitmót mcu-arm-s-01

Page 53: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 53.

� 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.

Page 54: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 54.

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."

}

Page 55: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

A Configuration Tool

© BME-MIT 2015 55.

Page 56: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

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

© BME-MIT 2015 56.

o Egyes külső programcsomagok integrálva vannak• TCP/IP

• Flash file rendszer

o Mellesleg még párhuzamos programozást is alkalmazhatunk

Page 57: Scherer Balázs - mit.bme.hu · PDF fileOS_Q.c uCOS_II.h µµµµC-OS ... oARM7, ARM9, CortexM3 oAtmel AVR, AVR32 oPIC18, PIC24, dsPIC, PIC32 oMicroblase

Újdonságok CMSIS RTOS?

� Általános felület RTOS absztrakcióra

© BME-MIT 2015 57.