Task synchronization
Task communication
ˇ Ceská letecká servisní a. s. Your integrator of the avionics
ˇ Ceská letecká servisní a. s.
ˇ Ceská letecká servisní a. s.
1/20
Task synchronization
Task communication
Úvod do problematiky synchronizace tasku˚
O co se jedná ˇ jedné Pˇri návrhu aplikací velmi cˇ asto ˇrešíme problém spuštení úlohy v závislosti na stavu jiné (jiných) úloh. ˇ že je jedna úloha závislá Obdobný problém je ˇrešen v pˇrípade, na datech, se kterými pracuje jiná úloha.
ˇ Ceská letecká servisní a. s.
2/20
Task synchronization
Task communication
Typické úlohy
Úlohy, kde lze využít synchronizace Význam rámce vyhodnocujeme až poté, kdy je pˇrijat celý ˇ že rámec není v daném cˇ ase pˇrijmut rámec. V pˇrípade, celý, provedeme pˇredepsané operace (odezva, žádost o ˇ pameti). ˇ Viz ISO/OSI model. znovuzaslání dat, vyˇcištení Konverzi/úpravu dat provádíme až tehdy, jsou-li data pˇrijata a jsou-li napˇr. "spojitá". ˇ zapisujeme až poté, probehne-li ˇ ˇ Do pameti test pameti.
ˇ Ceská letecká servisní a. s.
3/20
Task synchronization
Task communication
Dusledky ˚ synchronizace tasku˚
Pro ˇ Problematika je rozdelena na menší kompaktní celky. Lépe využíváme systémové prostˇredky. Vysoká modularita výsledného kódu. Proti Vyšší složitost systému. Vyšší nároky na návrh. Vyšší nároky na testování systému.
ˇ Ceská letecká servisní a. s.
4/20
Task synchronization
Task communication
Synchronizace pomocí semaforu˚
Úkol 1
Zopakovat funkci semaforu. ˚
2
Navrhnout využití semaforu˚ pro synchronizaci tasku. ˚
ˇ Ceská letecká servisní a. s.
5/20
Task synchronization
Task communication
Synchronizace pomocí semaforu˚
Princip cˇ innosti Task mužeme ˚ synchronizovat s jiným taskem nebo s ISR s využitím semaforu. ˚ Synchronizace nesmí vyžadovat pˇrenos dat. Pro pˇrehlednost výkladu uvažujme binární semafor. Semafor je inicializován na hodnotu 0. Napˇr. task inicializuje zpracování I/O a cˇ eká na semafor (je ve waiting listu). Když je ˇ dokonˇcena obsluha I/O (taskem nebo ISR) je semafor uvolnen ˇ task z waiting listu. a je spušten Tento mechanizmus je nazýván unilateral randezvous.
ˇ Ceská letecká servisní a. s.
6/20
Task synchronization
Task communication
Synchronizace pomocí semaforu˚
Ukázka pseudokódu synchronizace pomocí semaforu˚ INIT { semaphor_sync_init; /* semaphor is set to zero */ ... } ... ISR { IOdriver; POST; } ... TASk1 { while (1 == 1) { PEND; .../* data processing */ } } ...
ˇ Ceská letecká servisní a. s.
7/20
Task synchronization
Task communication
Synchronizace pomocí semaforu˚
Nasazení synchronizace pomocí semaforu˚ ˇ u úloh typu: Tato metoda má velké uplatnení "po ukonˇcení ISR spust’ task, který zpracuje data pˇrijatá v ISR". ˇ Synchronizace mezi dvema tasky bez pˇrenosu dat je méneˇ ˇ tasky využívající cˇ astá (vzájemná synchronizace mezi dvemi dvou semaforu˚ se nazývá bilateral randezvous).
ˇ Ceská letecká servisní a. s.
8/20
Task synchronization
Task communication
Event flags
Princip cˇ innosti ˇ kdy je nutné synchronizovat task s více Používají se v pˇrípade, událostmi. Princip je velmi podobný synchronizaci pomocí binárních semaforu. ˚ Jediný rozdíl spoˇcívá v tom, že stav není indikován ˇ ale pomocí skupiny pˇríznaku˚ (events group). Ta jednobitove, muže ˚ být 8, 16 nebo 32 bitová. ˇ se využívají metody POST a PEND. Opet Metoda POST nastavuje/nuluje eventy, metoda PEND zajišt’uje cˇ ekání na event (a to bud’ ve významu ALL nebo ANY).
ˇ Ceská letecká servisní a. s.
9/20
Task synchronization
Task communication
Meziprocesorová komunikace
Popis problematiky Pˇri ˇrešení problému˚ souvisejících s RTOS je nutné disponovat ˇ dat mezi tasky nebo mezi mechanismem, který zajistí výmenu taskem a ISR. ˇ informací je možné zajistit dvema ˇ Výmenu zpusoby: ˚ ˇ pomocí globálních promenných, využitím zpráv. ˇ Problematika globálních promenných byla ˇrešena na pˇredchozí pˇrednášce. Využití zpráv je "vzdáleneˇ podobné volání funkce s parametrem".
ˇ Ceská letecká servisní a. s.
10/20
Task synchronization
Task communication
Meziprocesorová komunikace
Popis problematiky Pro výklad další látky je nezbytneˇ nutné pochopit princip semaforu. ˚ Meziprocesová komunikace je založena na stejném principu!!!
ˇ Ceská letecká servisní a. s.
11/20
Task synchronization
Task communication
Message Mailbox (Message Exchange)
Úvod Jedná se o metodu, která umožní pˇredat data (ukazatel na data) z jednoho tasku (ISR) do jiného tasku. Mailboxy je nutné pˇred použitím iniciovat. ˇ používá kombinace metod PEND a POST. Pro pˇredání se opet ˇ Pˇredávání dat bývá doplneno o time-out. ˇ Cekající tasky jsou zpracovány ve speciální struktuˇre – waiting listu.
ˇ Ceská letecká servisní a. s.
12/20
Task synchronization
Task communication
Ukázka kódu Ukázka kódu využívající Message Mailbox OS_EVENT *mailbox1; OS_EVENT *mailbox2; OS_EVENT *mailbox3; ... while (1 == 1) { mbox1_contents = (INT32U *)OSMboxPend(mailbox1, 0, &return_code); alt_ucosii_check_return_code(return_code); printf("Task1 received the message: %lu in mailbox 1\n", (*mbox1_contents)++); printf("Task1 incremented the message and placed it into mailbox 2\n\n"); return_code = OSMboxPost(mailbox2, (void *)mbox1_contents); /*Post to Mailbox2*/ alt_ucosii_check_return_code(return_code); } ... while(1 == 1) { mbox2_contents = (INT32U *)OSMboxPend(mailbox2, 0, &return_code); alt_ucosii_check_return_code(return_code); printf("Task2 received the message: %lu in mailbox 2\n", (*mbox2_contents)++); printf("Task2 incremented the message and placed it into mailbox 3\n\n"); return_code = OSMboxPost(mailbox3, (void *)mbox2_contents); /*Post to Mailbox3*/ alt_ucosii_check_return_code(return_code); }
ˇ Ceská letecká servisní a. s.
13/20
Task synchronization
Task communication
Message Queues
Úvod Message Queues slouží k zaslání jedné nebo více zpráv. Jedná se o rozšíˇrení Mailbox Messages o možnost pˇrenést "pole dat (mailboxu)". ˚ ˇ se využívají metody POST a PEND. Opet Systém je zcela shodný s Message Mailbox.
ˇ Ceská letecká servisní a. s.
14/20
Task synchronization
Task communication
Obsluha a zpracování sériové linky
Úkol 1
Zpracujte data pˇricházející po sériové lince.
2
ˇ Data jsou rozdelena do cˇ tyˇr osmibitových bloku, ˚ z nichž první obsahuje synchronizaˇcní znak a poslední kontrolní souˇcet.
3
Data zpracujte pomocí jednoho ISR a dvou tasku. ˚
ˇ Ceská letecká servisní a. s.
15/20
Task synchronization
Task communication
Postˇrehy z realizace úlohy Realizace/Formulace/Prezentace 1
2
3
ˇ Vetšinou jste se pokusili vytvoˇrit popis problému pˇrímo v ˇ pseudokódu, ale vyžaduje jistou pseudokódu. Porozumení znalost cílové platformy a zpusobu ˚ zápisu, tak aby mu bylo ˇ (pseudokódy jednotlivých ˇrešitelu˚ se výrazneˇ rozumet lišily). ˇ ˇ Rešení byla nekde "na pul ˚ cesty". Ani program, ani obecný popis. Pˇredstavovala zápis myšlenek programátora zjednodušenou formou. Zkušenost je taková, že již za ˇ ˇ i autor. týden by temto zápisum ˚ velmi obtížneˇ rozumel Je problém s jasným vyjádˇrením myšlenek a s prezentací ˇ výsledku. ˚ Prezentace je minimálneˇ 50% úspechu!!!
ˇ Ceská letecká servisní a. s.
16/20
Task synchronization
Task communication
Obecný doporuˇcený zpusob ˚ realizace pro RTOS Formulace problému 1
Nejprve je nutné problém uchopit a pochopit. Nebojte se ˇ nebo vyjádˇrit zadání vlastními slovy, požádat o upˇresnení ˇ doplnení.
2
Následneˇ slovneˇ popište, jak bude pracovat Váš program.
3
Tužka a papír jsou velice silné nástroje!!! Zde je pro neˇ to pravé místo.
Napˇr. Pˇríchod dat bude zpracován v ISR. ISR bude komunikovat s TASK1 a to tak, že mu zašle získaná data. K tomu využije mailbox. TASK1 bude sbírat data zaslaná z ISR, hledat synchronizaˇcní znak a kontrolovat kontrolní souˇcet. V okamžiku, kdy získá a validuje 4 znaky zašle tyto znaky TASK2 k dalšímu zpracování. K tomu využije queues. ˇ Ceská letecká servisní a. s.
17/20
Task synchronization
Task communication
Obecný doporuˇcený zpusob ˚ realizace pro RTOS Požadavky 1
ˇ je vhodné písemnou formou Pokud je problém složitejší zpracovat všechny požadavky na systém. Tento krok muže ˚ ˇ bud’ v tomto místeˇ nebo následuje být vˇclenen bezprostˇredneˇ po získání zadání. Tvorba požadavku˚ ˇ pˇresahuje rámec pˇrednášek a vetšina firem má ˇ et, ˇ zpracovaná pˇresná pravidla jejich tvorby. Je nutné ved že pokud jste dostali úkol bez písemných požadavku˚ je více než vhodné, abyste si je vypracovali a projednali se zadavatelem, pˇrípadneˇ si je nechali schválit.
2
Tvorba požadavku˚ je nároˇcná a lze ji celkoveˇ zvládnout až po nabytí praxe.
ˇ Ceská letecká servisní a. s.
18/20
Task synchronization
Task communication
Obecný doporuˇcený zpusob ˚ realizace pro RTOS Zpracování algoritmu 1
2
Pˇred zpracováním algoritmu (tj. jak bude náš systém pracovat) musíme znát požadavky a musíme mít promyšleno a slovneˇ popsáno ˇrešení. V této fázi je nutné ˇrešení zpracovat tak, aby bylo možné vytvoˇrit kód v požadovaném programovacím jazyce. ˇ Rešení je více, napˇr: 1 2 3
3
pseudokód, vývojový diagram, UML.
Doporuˇcuji používat UML (nejlépe Real-time UML). Pseudokód je znaˇcneˇ nepˇresný a to hlavneˇ z toho duvodu, ˚ že není dostateˇcneˇ zažitá jednotná syntaxe. Vývojové diagramy velmi špatneˇ vystihují real-time problematiku. ˇ Ceská letecká servisní a. s.
19/20
Task synchronization
Task communication
Obecný doporuˇcený zpusob ˚ realizace pro RTOS
Tvorba kódu Teprve nyní je vhodné tvoˇrit kód. Poznámka Uvedený postup pˇredstavuje jakousi "minimální sadu" kroku, ˚ které je vhodné absolvovat pˇri každém ˇrešení problému˚ z ˇ oblasti real-time. Konkrétní postup je vetšinou dán zvyklostmi ˇ firmy, jejím systémem jakosti a zpusobem ˚ rízení projektu. ˚ ˇ r a jednou rˇež." Vynechání Vždy platí: "Dvakrát meˇ analytických kroku˚ má dopad napˇr. na: kvalitu systému, ˇ chyb, testování, práci v týmu . . . rychlost realizace, ladení
ˇ Ceská letecká servisní a. s.
20/20