Sunteți pe pagina 1din 4

Laborator: Sistemul de operare n timp real uCOS-II

Sistemul de operare n timp real uCOS-II


Introducere
Sistemul de operare uCOS-II este un sistem de operare pentru aplicatii de timp real. El a fost conceput astfel nct sa poata fi adaptat pentru diverse microprocesoare sau microcontrolere existente pe piata. Pentru ca aceasta adaptare sa fie ct mai simpla, cea mai mare parte a sistemului de operare este scris n limbajul C. Fiecare microprocesor sau microcontroler are o arhitectura particulara. Cteva din functiile sistemului de operare trebuie sa tina cont de aceste particularitati si ca atare, ele trebuiesc scrise n limbajul de asamblare specific microprocesorului sau microcontrolerului folosit n cadrul aplicatiei. Procesul de adaptare a sistemului de operare pentru un anumit microprocesor sau microcontroler are n vedere tocmai scrierea acestor functii. Trebuie mentionat faptul ca pe pagina web a firmei Micrium exista adaptarile sistemului de operare uCOS-II pentru o gama larga de procesoare si microcontrolere utilizate n cele mai diverse aplicatii. Trebuie facuta observatia ca functionarea sistemului de operare uCOS-II pe un microprocesor sau microcontroler necesita un minim de resurse de memorie. Ca urmare exista, n special n cazul microcontrolerelor, familii de componente care nu pot executa sistemul de operare uCOS-II.

Obiective
n cadrul acestei lucrari ne vom ocupa de instalarea sistemului de operare de timp real uCOS-II si crearea unei aplicatii simple care sa testeze functionarea sistemului.

Utilizarea automatelor finite n cadrul proceselor


Avantajul utilizarii automatelor finite pentru descrierea proceselor provine din faptul ca acestea pot fi reprezentate sub forma tabelelor de tranzitie care pot fi implementate cu usurinta att ntr-un limbaj de nivel nalt cum este limbajul C ct si n limbaj de asamblare. Utiliznd tabela de tranzitie pentru implementarea functiilor unui proces, este posibila descompunerea acestuia n module mai mici, mai usor de urmarit si realizat si care iau forma unor functii care implementeaza actiunile. Aceste functii sunt mai usor de testat si pot fi refolosite si n alte aplicatii. Un alt avantaj important al implementarilor ce folosesc automatele finite se bazeaza pe realizarea cu usurinta a eventualelor modificari. De cele mai multe ori, se modifica doar tabelul de tranzitie (adaugarea sau eliminarea unor stari si a functiilor care implementeaza noile actiuni, n timp ce restul programului ramne neschimbat.

Cerintele sistemului uCOS-II


Pentru a adapta si utiliza sistemul uCOS-II, microprocesorul sau microcontrolerul trebuie sa satisfaca urmatoarele conditii: avnd n vedere ca uCOS-II este scris n limbajul C, trebuie sa avem la dispozitie un compilator C pentru procesorul utilizat. n plus, codul generat trebuie aiba proprietatea de revenire; ntreruperile trebuie sa poata fi activate si dezactivate din C; procesorul trebuie sa aiba ntreruperi si poate furniza o ntrerupere care sa apara la intervale regulate (n mod normal cu o frecventa de 10 pna la 100 Hz);

Laborator: Sistemul de operare n timp real uCOS-II procesorul suporta o stiva hardware de dimensiuni relativ mari (mai multi kiloocteti). procesorul are instructiuni care sa realizeze ncarcarea si stocarea pointerului de stiva si a celorlalte registre ale procesorului fie ntr-o stiva, fie n memorie.

Programul de aplicatie uCOS-II partea independenta de procesor uCOS-II partea specifica aplicatiei

uCOS-II partea specifica procesorului

Hardware

Fig. 1. Componentele uCOS-II si interactiunea dintre acestea, hardware si programele de aplicatie.

n figura 1 sunt prezentate componentele sistemului de operare si modul n care interactioneaza acestea cu partea hardware si cu programele de aplicatie. n tabelul 1 sunt date fisierele aferente sistemului uCOS-II:
Tabelul 1. Lista fisierelor sursa a sistemului de operare.

Nume os_cfg_r.h os_core.c os_dbg_r.c os_flag.c os_mbox.c os_mem.c os_mutex.c os_q.c os_sem.c os_task.c os_time.c os_tmr.c ucos_ii.c ucos_ii.h

Continut Fisierul de referinta pentru configurarea sistemului de operare Functii ale nucleului SO Constante si functii necesare depanarii programelor Functii ce implementeaza indicatorii de eveniment Functii ce implementeaza structurile de tip cutie de scrisori Functii pentru gestionarea memoriei Functii ce implementeaza mutex-urile Functii ce implementeaza structurile de tip coada Functii ce implementeaza structurile de tip semafor Functii asociate task-urilor Functii asociate timpului Functii ce implementeaza temporizatoarele Foloseste directive #include pentru a include fisierele anterioare Fisierul ce contine constantele si prototipurile de functii ale SO

Pentru realizarea adaptarii la un anumit procesor sau microcontroler trebuiesc create si/sau modificate fisierele date n tabelul 2:

Laborator: Sistemul de operare n timp real uCOS-II


Tabelul 2. Lista fisierelor ce trebuiesc adaugate sau modificate n vederea adaptarii pentru un anumit procesor.

Nume includes.h

os_cfg.h

os_core.c os_cpu.h os_cpu_c.c ucos_ii.c

ucos_ii.h

Continut/Modificare Fisier header care este inclus n toate fisierele .c. Va include celelalte fisiere header ale sistemului si fisiere header ale utilizatorului Fisierul de configurare a sistemului de operare. Se obtine prin copierea os_cfg_r.h sub noul nume si modificarea valorilor elementelor configurabile Functii ale nucleului SO. Modificari specifice microcontrolerului legate de memoria acestuia Fisier header specific microcontrolerului Fisier care contine codul sursa pentru functiile specifice microcontrolerului Fisierul ucos_ii.c modificat ca sa includa versiunile modificate ale lui os_core.c si fisierul includes.h Fisierul header al sistemului de operare. Modificari ce tin de limitarile existente la nivel de capacitate de memorie

Tip Nou

Modificat

Modificat Nou Nou Modificat

Modificat

Modificarile care trebuiesc facute sunt urmatoarele stabilirea valorii constantei ce indica modul de crestere a stivei (OS_CPU.H): OS_STK_GROWTH. declararea a 10 tipuri de date (OS_CPU.H) introducerea a 3 definitii macro (OS_CPU.H): OS_ENTER_CRITICAL(), OS_EXIT_CRITICAL(), OS_TASK_SW(). scrierea a sase functii simple n limbaj C (OS_CPU.C): OSTaskStInit(), OSTaskCreateHook(), OSTaskDelHook(), OSTaskSwHook(), OSTaskStatHook(), OSTimeTickHook().

scrierea a 4 functii n limbaj de asamblare (OS_CPU_A.ASM) sau n limbaj C n cazul n care compilatorul C permite introducerea de cod n limbaj de asamblare: OSStartHighRdy(), OSCtxSw(), OSIntCtxSw(), OSTickISR().

Instalarea sistemului de operare uCOS-II


1. 2. 3. 4. Pe discul G: n directorul de lucru se creaza directorul proiectul rt. n directorul rt se creaza aditional directorul: ucossource. n directorul ucossource se copie fisierele sursa ale sistemului de operare uCOS-II. n directorul Sources se copie fisierele sursa specifice adaptarii pentru microcontrolerul Freescale si fisierul test.c care testeaza functionarea sistemului de operare.

Laborator: Sistemul de operare n timp real uCOS-II

Procedeu experimental
1. Se instaleaza sistemul de operare uCOS-II. 2. Se creaza un proiect nou care va utiliza sistemul de operare uCOS-II. Fereastra proiectului trebuie sa arate ca n figura de mai jos.

Observatii: a) Fisierul test.c este fisierul care contine programul principal. 3. Se studiaza fisierele sistemului de operare uCOS-II. a) Se studiaza fisierele sursa si de declaratii (.h) specifice adaptarii pentru microcontrolerul Freescale (vezi tabelul 2) b) Se studiaza fisierul de configurare a sistemului de operare uCOS-II, OS_CFG.H. 4. Se compileaza proiectul si se simuleaza folosind simulatorul din mediul CodeWarrior.

S-ar putea să vă placă și