Documente Academic
Documente Profesional
Documente Cultură
1
SISTEME IN TIMP REAL Laborator 3
nu este ntotdeauna simplu de neles, doar din o scurt analiz a fiierelor surs ori
a miilor de linii de cod.
1.2.2 Portabil
Cea mai mare parte a nucleului uC/OS-II este scris n ANSI C de nivel nalt,
portabil, iar codul specific unui anumit tip de microprocesor scris n limbaj de asam-
blare. Limbajul de asamblare este realizat la un nivel minim, astfel nct s faciliteze
portarea C/OS II i pe alte procesoare. Precum C/OS, C/OS-II poate fi portat pe
un numr mare de microprocesoare, att timp ct microprocesorul furnizeaz un po-
inter de stiv (stack pointer), iar regitrii CPU pot fi salvai sau extrai din stiv. De
asemenea, compilatorul C ar trebui fie s ofere o extensie pentru introducerea de
cod in asamblare sau extensii pentru activarea sau dezactivarea ntreruperilor din C.
C/OS-II poate rula pe microprocesoare pe 8-bii, 16-bii, 32-bii sau chiar pe 64-bii
sau pe microcontrolere i DSP-uri.
Toate porturile (codul in asamblare specific unui procesor) ce exist n prezent
pentru C/OS pot fi uor convertite pentru C/OS-II, n aproximativ o or. De aseme-
nea, din cauza faptului c C/OS-II este compatibil cu C/OS, aplicaiile C/OS ar
trebui s ruleze pe C/OS-II cu puine schimbri sau fr nici o schimbare.
1.2.4 Accesibilitate:
C/OS-II a fost proiectat astfel nct s se utilizeze doar serviciile necesare
n anumite aplicaii. Acest lucru nseamn c un produs poate avea doar cteva ser-
vicii ale C/OS-II, n timp ce alt produs poate avea setul ntreg de caracteristici. Acest
aspect va permite posibilitatea de reducere a cantitii de memorie (att RAM, ct i
ROM), necesare pentru C/OS-II in dezvoltarea unui produs. Accesibilitatea este n-
deplinit cu ajutorul utilizrii compilrii condiionale. Trebuie aadar s se specifice
clar (prin constante #define) ce caracteristici sunt necesare pentru anumite aplicaii
i/sau produse. S-a ncercat ct mai mult reducerea codului i a spaiului de date ne-
cesar pentru C/OS-II.
1.2.6 Multi-tasking
C/OS-II poate gestiona pn la 64 de taskuri (fire de execuie); oricum, ver-
siunea curent a software-ului rezerv opt (8) din aceste taskuri pentru utilizarea sis-
temului. Acest aspect va lsa aplicaia cu pn la 56 de taskuri. Fiecare task prezint
o prioritate unic, ce i este asignat, fapt ce arat c C/OS-II nu poate realiza plani-
ficarea de tip round-robin. Exist aadar 64 niveluri de prioritate.
2
SISTEME IN TIMP REAL Laborator 3
1.2.9 Servicii
C/OS-II ofer unele servicii de sistem, cum ar fi csuele de e-mail, cozile,
semafoarele, partiiile de memorii de dimensiuni fixe, funcii specifice timpului, etc.
3
SISTEME IN TIMP REAL Laborator 3
4
SISTEME IN TIMP REAL Laborator 3
fice aplicaiei. Fiecare opiune este reprezentat de un bit, opiunea fiind seta-
t cnd bitul este pe 1. C/OS-II suport urmtoarele opiuni:
OS_TASK_OPT_STK_CHK specific dac este permis verificarea
stivei pentru task.
OS_TASK_OPT_STK_CLR - specific dac stiva trebuie curat.
OS_TASK_OPT_SAVE_FP - specific dac registri in virgul mobil
trebuie salvai la comutarea contextului.
La sfritul funciei main trebuie apelat funcia OSStart pentru pornirea sis-
temului de operare.
void main (void)
{
// Sterge ecranul
ClearScreen();
// initializeaz uC/OS-II
OSInit();
OSTaskCreateExt(Task1,
(void *)0,
TASK_1_PRIO,
TASK_1_ID,
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(Task2,
(void *)0,
TASK_2_PRIO,
TASK_2_ID,
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(Task3,
(void *)0,
TASK_3_PRIO,
TASK_3_ID,
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(Task4,
(void *)0,
TASK_4_PRIO,
TASK_4_ID,
5
SISTEME IN TIMP REAL Laborator 3
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(Task5,
(void *)0,
TASK_5_PRIO,
TASK_5_ID,
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
Forma tipic a unei funcii ataate unui task este prezentat in continuare
(OSTimeDlyHMSM realizeaz un delay, primul parametru reprezint numrul de ore,
al doilea numrul de minute, al treilea numrul de secunde i ultimul parametru mili-
secundele):
//instructiuni
}
}
3 Desfurarea lucrrii:
Realizai o aplicaie care este format din 6 task-uri, fiecare task afind periodic
un anumit mesaj pe LCD (fierare task va avea asociat o por;iune de afiare de pe
LCD).