Real Time plānotājs Implementation (Preemption jautājumu)

S

Sobakava

Guest
Hi all,

Es īstenojot reālā laika Task plānotājs, izmantojot NXP LPC 2148 ARM7 CPU izmantojot GCC-Winarm.

Plānotāja būs Rate monotonā (uzdevumus ar īsāku periodu ir lielākas prioritātes) un pirmpirkuma.

Es jau īstenoti ātruma monotonism bet I've problēmas ar preemption.Plānotāja sākas ar aparatūras taimeris pārtraukt.Tad plānotāja sākas ar pārtraukt, tā pārbauda uzdevumu sarakstu un uzdevumu statusu saraksts tad pieņems lēmumu, kura uzdevums darboties.

bet,

piemēram, (@ t = laikā)

@ 0: Taimeris pārtraukt notiek, plānotāja sākas TASK1.Let's teic, ka tas ir ilgs 10 miliseconds.
@ 1: Taimeris pārtraukt vēlreiz.Plānotājs nolemj TASK1 var turpināt.Ieņēmumi no pārtraukt.(Tā
būs atgriezties TASK1 (); funkcija)
@ 2: tāpat kā 1
@ 3: tāpat kā 1
.
.
@ 11: Taimeris pārtraukt.Plānotājs nolemj TASK1 vajadzētu nogaidīt un TASK2 vajadzētu darboties tūlīt ...Izmaiņas uzdevumu sarakstā.HERE: Tagad esmu atgriezties no pārtraukt.Bet tā atgriezīsies pie TASK1 ();anulēts TASK1 (spēkā neesošs) (darīt kaut ko
darīt kaut ko
--->>> Pārtraukt (task1 jāturpina)
darīt kaut ko
darīt kaut ko
--->>> Pārtraukt (task1 jāturpina)
darīt kaut ko
darīt kaut ko
--->>> Pārtraukt (task1 jāturpina)
darīt kaut ko
darīt kaut ko
--->>> Pārtraukt (task1 būtu Nopirkts un TASK2 darbosies!)
darīt kaut ko
darīt kaut ko
darīt kaut ko
darīt kaut ko

)
Man ir vajadzīga ierosinājums par to, kā let plānotāja vadīt šo uzdevumu un sevi.Pirmās pārtraukt balstīta pieeja šķita labas man bet es nesaprotu, kā to izdarīt tagad.Any help būs appreciated.

Ar laba vēlējumiem

 
Sejm odrzucił poprawkę Senatu dotyczącą tzw. <i>ustawy środowiskowej</i>. Senatorowie chcieli załagodzić przepisy i umożliwić operatorom komórkowym stawianie masztów telefonii komórkowej w miejscowościach uzdrowiskowych - co obecnie jest zabronione.

Read more...
 
Katrs uzdevums ir tā paša skursteņa, par kuriem, lai saglabātu tās kontekstā.Par pārtraukt ietaupa darbības uzdevumu sakarā, skursteņa un ietaupa skursteņa bultiņas.
Pēc tam maina kaudze bultiņas uz nākamo uzdevumu kaudze un atjauno uzdevumus kontekstā.Kad pārtraukt atgriežas, jaunais uzdevums atsākot izpildei.

 
Man ir ievietojis viegls rtos / multitasking sistēmu, 16-bit Pic tml par eda kuģa šeit:

ftopic316337.html

Tā ietver dokumentus, kas apraksta īstenošanu.
Veikt paskatīties, tas var sniegt jums dažas idejas par jūsu sistēmā.

 
Čau

Varat izmantot programmatūru, pārtraukt vai atzvanīšanas funkciju (PTR darbībai), lai pārslēgtos uzdevums, nesaglabājot kontekstā.

All the best

Bobi

 
U var padarīt jūsu plānotāja daudz vienkāršāku, nevis izmantojot pārtraukt jebkurā laikā šķēle, u var pievienot kavēšanās rutīnas, kas skaita laiku, ērces, pamatojoties uz uzdevumu sākuma.
Tas var būt šādi, padarīt prioritāti uzdevums 1 augstākais let teikt 1.
Pēc tam, kad jūs vēlaties palaist uzdevumu 2 vai uzdevums n.
Pievieno šādu īstenošanu jūsu uzdevums.
task1 ()
(
.....
osdelay (20);
...
)
osdelay () vajadzētu pārtraukt šo uzdevumu un pēc tam izmantot plānotāja lai task1 statuss ir aizkavēta vai apturēta, pēc 20 ms ar task1 atkal atsākts.
Līdz ar to kontekstā slēdzis overhead ir novērsta.

 

Welcome to EDABoard.com

Sponsor

Back
Top