Professional Documents
Culture Documents
Sistem hardware
(tastatur, mouse,
display, medii de
stocare etc.)
Sistem de
operare
Sistem hardware
(tastatur, mouse,
display, medii de
stocare etc.)
1
2
3
Aceste date pot fi de orice tip i de orice natur de la curentul ce trece printr-o ramur a unei puni
trifazat la valoarea unei acceleraii pn la informaia tactil preluat de la un touchscreen.
Un tiristor (prin intermediul unghiului de comand), prezint cantitatea de benzin, acioneaz un
sistem hidraulic de frnare etc.
Prezentare sacadat a datelor (de exemplu a unor imagini sau cadre) sau o comand ntrziat sau
inoportun a sistemului mecanic, chimic etc.
Sistemele de tip soft real time sunt acelea care nu determin comportri critice sau
poate chiar catastrofe rezultante n urma generrii ntrziate sau poate chiar de loc (din
cnd n cnd) a comenzii sau a rezultatului procesrii4. Deci, sistemele de tip soft real
time pot tolera ntrzieri i/sau variaii ale momentului realizrii efective a comenzii,
generate de sistemul de ntreruperi, timer-ele sistemului, programatorului nucleului
sistemului de operare (scheduler) sau a lipsei de determinism a codului ce proceseaz
datele.
Sistemele de tip hard real time, denumite i sisteme critice de procesare n timp
real, sunt acele sisteme ce trebuie s-i finalizeze rezultatul procesrii n mod
obligatoriu ntr-un anumit interval de timp foarte clar delimitat, nerespectarea unei
astfel de cerine putnd genera rezultate catastrofale5.
Dac lum n considerare faptul c cea mai mare parte a evenimentelor, datelor
etc. (ce trebuiesc procesate, analizate i ulterior n urma procesrii pe baza acestor
rezultate se va da o comand) se preiau la intervale regulate de timp sau se cunoate
cu certitudine intervalul minim de timp dup care poate avea loc un nou eveniment
atunci vom spune c un sistem este de tip hard real time dac timpul de ateptare pn
la preluarea noului set de date va fi ntotdeauna mai mare ca zero, vezi Figura 4.2.
Timp necesar prelurii, procesrii
i comenzii dispozitivului
Timp de
ateptare
t
n+1
n
Figura 4.2. Comportarea temporar a unui sistem de tip embedded
Din perspectiva celor afirmate n paragraful anterior i a Figura 4.2 putem afirma
c pentru un anumit sistem embedded ntotdeauna putem gsi o aplicaie pentru care
s nu avem un timp de ateptare mai mare ca zero i deci sistemul respectiv s nu fie
unul de tip hard real time. Dar din fericire nu aceasta este metoda de abordare a unei
probleme pentru o anumit problem se gsete acel sistem capabil s o rezolve i
nu invers.
Organizaia OMAC (Organization for Machine Automation and Control) ce
reprezint Industrial Automation Comunity din Statele Unite ale Americii dup
analiza a sute de aplicaii embedded, a concluzionat c n jur de 95% dintre aplicaiile
n timp real impun pentru buna funcionare timpi de laten de 1 ms sau mai mari n
timp ce variabilitatea de rspuns a sistemului nu trebuie s fie mai mare de 10% din
timpul de laten (100 s) [Hall, 2005].
n Figura 4.3 se prezint zonele n care sunt definite cea mai mare parte din
aplicaiile de timp real soft i hard aa cum au fost descrise acestea anterior. Se
observ c sistemele de operare ncepnd cu Windows NT i pn la sistemul de
operare Windows 7 se regsesc cu certitudine n zona sistemelor de operare de tip soft
(soft real time). Primul pas ctre zona SO de tip hard real time a fost realizat prin
intermediul SO Windows CE 2.0 dar care chiar dac avea caracteristici mult mai bune
4
Un astfel de sistem este de exemplu un DVD player. El proceseaz n timp real fluxul de date de
intrare dar n cazul n care din cnd n cnd nu reuete s decodeze corect un cadru nu se ntmpl
nici o catastrof.
De exemplu, n cazul sistemelor de tip ESP (Electronic Stability Program) existente n cadrul
automobilelor.
era nc era departe de ceea ce dorea piaa. n schimb SO Windows CE.Net (care este
versiunea Windows CE 4.0) este poziionat adnc n zona SO hard real time.
Versiunea Windows Embedded Compact chiar dac aduce mbuntiri fa de
versiunea Windows CE 4.0, performanele acestui SO sunt similare cu acesta sau
puin mai bune, poziionndu-se de asemenea adnc n zona SO hard real time.
Windows
CE 2.x
Linux
Performanele prezentate n cadrul acestei imagini sunt caracteristice sistemelor de operare originale
fr inseria unor module sau plugin-uri suplimentare produse de alte companii (third-party) ce au
drept scop transformarea SO original n unul de tip RTOS.
De exemplu, sistemul de operare Windows XP nu este un sistem de operare n timp real dar,
ulterior, prin instalarea unor aplicaii, plugin-uri, precum Venturcom RTX sau TenAsys Intime
Windows XP (versiunea Embedded Standard) poate s ndeplineasc cerinele unui sistem de
operare n timp real.
ISR ncepe n
IST ncepe n
1.2 s
3.3 s
13.3 s
31.7 s
67.2 s
103.0 s
5. Windows CE
5.1. Introducere
Sistemul de operare Windows Embedded Compact (cunoscut anterior sub
denumirea de Windows CE Consumer Electronics) este un sistem de operare
embedded, de timp real pe 32 de bii scalabil8 ce are urmtoarele caracteristici
definitorii:
1. Este un SO de timp real de tip SMP (symmetric multiprocessing).
Multiprocesarea simetric (symmetric multiprocessing SMP) definete
o arhitectur a unui sistem de calcul9 cu cel puin dou procesoare ce au
acces la un singur bloc de memorie i implic, n plus, utilizare unui
singur SO pentru a le controla. Task-urile existente n sistem pot rula pe
oricare din procesoarele existente indiferent de localizarea datelor
asignate fiecrui task n memorie. Un SO de tip SMP este acel SO ce
ruleaz pe o astfel de arhitectur i, de exemplu, are posibilitatea
distribuirii task-urilor ntre procesoare pentru o ncrcare eficient a lor.
2. Poate rula pe patru tipuri diferite de arhitecturi: ARM, MIPS, x86 i SH4
(pn la versiunea 6.0 R2).
3. Este un sistem de operare de tip multitasking preemtiv. Prin sistem de
operare multitask se nelege capacitatea unui SO de a rula mai multe
programe simultan din punctul de vedere al utilizatorului. Prin SO
preemtiv se nelege capacitatea de a opri temporar funcionarea unui
anumit task, fr a fi necesar permisiunea acestuia, cu intenia de a
continua execuia lui la un moment ulterior. Prin transferarea execuiei n
mod automat de la un task la altul se realizeaz o comutare a diferitelor
contexte de lucru (context switch) asociate fiecrui task. Comparativ, un
sistem de operare multitasking bazat pe cooperarea aplicailor
(cooperative multitasking10) se bazeaz pe existena unor mecanisme
prin intermediul crora acesta n mod voluntar cedeaz execuia altor
aplicaii.
4. Este un sistem de operare modular. Acest SO poate fi privit ca un joc
LEGO n care prin alegerea acelor componente optime (din cele peste
700 de componente existente) se poate construi imaginea SO n
conformitate cu necesitile aplicaiei/aplicaiilor ce vor rula pe acesta.
5. Modelul de memorie utilizat este de tipul virtual protejat. Acest sistem
de operare accept un spaiu virtual de adresare a memorie de maximum
4 Goctei. Aplicaiile utilizator folosesc primii 2 Goctei din memoria din
memoria virtual, n timp ce, nucleul sistemului de operare (kernel-ul)
utilizeaz ultimii 2 Goctei.
8
9
10
User Mode
Kernel Mode
interesat de modalitatea prin care OAL rezolv aceast cerere, n schimb OAL trebuie
la rndul lui s interogheze o anumit component hardware pentru a obine
rezultatul. Deci, rezult c OAL este acea component care trebuie s tie cum s se
interfaeze cu partea hardware pentru a executa aceast operaie fundamental.
Sistemul de operare i aplicaiile existente interacioneaz cu diferitele dispozitive
hardware (display, tastatur, sistemul audio etc.) prin intermediul driver-elor.
Driverele realizeaz abstractizare dintre diferitele componente ale sistemului de
operare i dispozitivele hardware cu care acestea sunt asociate. Fiecare dispozitiv
hardware (SD card, USB port, display, sistem de achiziie video, port serial sau
paralel etc.) trebuie s aib asociat un driver specific care s permit accesarea lor
fcndu-se abstractizare de toate specificitile de implementare a diferitelor
dispozitive ce aparin aceleiai clase de dispozitive (de exemplu un controler video ce
poate fi produs de un numr diferit de productori). Dup cum se observ din Figura
5.1 un driver poate fi ncrcat n spaiul nucleului (denumite kernel-mode drivers) sau
n spaiul utilizator, drivere ce sunt ncrcate ntr-un proces specializat udevice.exe
sunt denumite user-mode drivers. Avantajul ncrcrii unui driver n spaiul utilizator
este dat de faptul c aceast zon de memorie este mai tolerant la erori i nu
determin crparea sistemului.
Fiecare productor al diferitelor sisteme embedded, plci de baz, plci de
dezvoltare etc. care doresc s permit rularea sistemului de operare Windows CE
trebuie s ofere o combinaie specific plcii pe care o vnd de: drivere i un modul
OAL. O astfel de combinaie format dintr-un modul OAL (specific procesorului
plcii), un numr de drivere (specifice diferitelor dispozitive hardware integrate pe
plac) i un numr de fiiere de configurare poart numele de BSP (board support
package).
Aplicaia kitl.dll implementeaz Kernel Independent Transport Layer (KITL) i
este utilizat n comunicarea cu mediul de dezvoltare (drept component software ce
ruleaz pe un calculator personal) pentru operaiile de debug i de analiz a
aplicaiilor ce se gsesc pe sistemul de dezvoltare (n cazul nostru placa OMAP35xx).
Modulul gwes.dll este responsabil cu gestionarea elementelor de grafic, a
ferestrelor i a evenimentelor din sistem. Din funciile pe care le ndeplinete i trage
i numele Graphics, Windowing i Events Subsystem GWES. Deci, tot ce are
legtur cu interfaa grafic ncepnd de la ferestre, dialoguri, controale de tip edit,
check box, list box etc. meniuri etc. sau evenimentele asociate cu acestea sau cu
sistemul de operare sunt gestionate de acest DLL (dinamic link library). Acest modul
nglobeaz cea mai mare parte din funcionalitatea SO. Din acest motiv el trebuie
lansat naintea oricrei altei aplicaii. Totodat el este i modulul cel mai
componentizat din tot SO permind sau nu selectarea diferitelor funcionaliti pe
care le nglobeaz.
GWES este o component ce integreaz GDI-ul (graphics device interface),
managerul de ferestre i managerul de evenimente. GWES este compus din dou mari
submodule: utilizator (user) i GDI. Modulul utilizator include acele componente ale
GWES ce gestioneaz mesajele, evenimentele i totalitatea aciunilor de intrare
executate de utilizator prin intermediul tastaturii, mouse-ului i a ecranului tactil.
Modulul GDI nglobeaz acele componente responsabile de ieirea grafic ctre
utilizator.
Aplicaia 5.1: Modificai mrimea font-ul sistemului de operare n sensul creterii
acestuia. Drept rezultat, o dat cu o nou boot-are a SO font-ul tuturor icoanelor,
meniurilor etc. va avea o mrime dubl.
9
Indicaii: Unul din cele mai importante fiiere din cadrul SO este baza de date
registri. n cadrul acestui fiier sunt stocate o serie larg de informaii, inclusiv
mrimea font-ului cu ajutorul cruia se vor afia diferitele informaii pe interfaa
cu utilizatorul. Astfel n cadrul cheilor sunt stocate urmtoarele informaii:
n toate aceste chei, prezentate mai sus, sunt stocate mai multe valori ce au
semnificaia prezentat n tabelul de mai jos.
Tabelul 5.1. Semnificaia cmpurilor ce caracterizeaz diferitele
fonturi utilizate n sistem
Tipul de date a
cmpului
Semnificaie cmp
Nm: REG_SZ
Ht: REG_DWORD
HtInPts: DWORD
It: REG_DWORD
Wt: REG_DWORD
CS: REG_DWORD
10
fusul orar (GMT+2 pentru Romania) i DST (daylight saving time) dac este cazul
, etc. Imediat dup ce kernel-ul este lansat n execuie procesul filesys.dll este
executat cu specificitatea c acesta trebuie s i termine execuia naintea ca
kernel.dll s-i termine iniializarea. Acest lucru are loc deoarece kernel-ul are nevoie
de informaiile stocate n regitri, iar iniializarea regitrilor este realizat de procesul
filesys.dll.
De asemenea aplicaia filesys.dll comunic kernel-ului cnd este pregtit de a
ndeplini sarcini curente, deoarece procesul de iniializare a luat sfrit. Ulterior
filesys.dll ateapt un semn de la kernel pentru a boot-a restul sistemului de operare.
Tot filesys.dll va parcurge aplicaiile listate n HKEY_LOCAL_MACHINE\Init, iar
acestea vor fi lansate n execuie respectnd dependenele existente.
File system driver (FSD) manager, fsdmgr.dll, gestioneaz toate interaciunile
sistemului cu orice tip de FSD instalat. Fsdmgr.dll ofer interfaa standard cu toate
funciile de sistem de tipul CreateFile, CreateDirectory, RemoveDirectory etc.
caracteristice sistemului de operare Windows CE, gestionnd handle-urile
diferitelor fiiere. n plus, accesului la funciile ce gestioneaz sistemul de fiiere i
directoare, fsdmgr.dll ofer suport pentru funcii de tipul FSD_MountDisk i
FSD_UnmountDisk ce sunt apelate de managerul de dispozitive, devmgr.dll, atunci
cnd un dispozitiv ce are un FSD a fost nserat sau eliminat din sistem (de exemplu un
SD card sau un USB stick). n concluzie managerul FSD existent n modulul
fsdmgr.dll gestioneaz interaciunea cu toate FSD ce au fost instalate n sistem,
mapnd cererile aplicaiilor din sistem sau ale sistemului ctre funciile specifice
instalate ntr-un FSD.
Managerul dispozitivelor (Device Manager) este format din dou module
separate, device.dll i devmgr.dll, i are rolul de ncrca i gestiona drivere-le asociate
cu dispozitivele hardware. Totodat are rolul de a ncrca managerul de resurse I/O
(I/O Resource Manager) care citete i gestioneaz lista cu resursele disponibile din
regitri. Tot managerul dispozitivelor hardware notific i controleaz driverele
dispozitivelor hardware n legtur cu consumul acestor dispozitive oferind i un
serviciu de gestionare a puterii consumate.
Funciile API ce aparin sistemului sunt disponibile aplicaiilor prin intermediul
librriei coredll.dll ce este link-editat cu orice modul executabil de ctre sistemul de
operare. Toate modulele interne nucleului sistemului de operare sunt link-editate cu o
versiune specific a coredll.dll ce poart numele k.coredll.dll. n plus fa de acest
API sistem, sistemul de operare Windows CE ofer un API destinat aplicaiilor
generale, API (Win32 API) ce este similar cu cel existent pe calculatoarele personale
desktop sau laptop ce ruleaz sisteme de operare precum Windows XP i Windows 7.
Funciile existente n acest API pot fi accesate prin diferitele librrii existente precum
WinINet.dll, WinSock.dll, Winhttp.dll etc. vezi Figura 5.1.
Aplicaia 5.2: Deoarece n cadrul plcilor de dezvoltare OMAP EVM3530 n
momentul lansrii sistemului de operare Windows CE backlight-ul LCD-ului
(liquid crystal displays) este stins s se dezvolte o aplicaie care s fie capabil s
aprind sistemul de iluminare al LCD-ului.
Rezolvare: n paragrafele urmtoare se vor prezenta un numr de soluii,
implementri succesive, ale acestei probleme, pornindu-se de la dezvoltarea
aplicaiei i pn la integrarea acesteia cu sistemul de operare.
Pasul 1: Dezvoltarea unui program capabil s aprind/sting backlight-ul LCD-ului.
11
Descriere
D0
D1
D2
Dispozitiv n standby
D3
D4
Dispozitiv nealimentat
Pentru ca etichetele asociate cu strile dispozitivelor sau numele asociat diferitelor dispozitive s fie
cunoscute programului se include urmtorul fiier heder: "Pm.h".
12
(b)
(a)
Figura 5.3. Rezultatele utilizrii aplicaiei CEFileWiz.exe n:
(a) Catalog Items View i (b) Solution Explorer
Pentru a ne atinge acest obiectiv n acest pas vom utiliza o mic aplicaie
CEFileWiz.exe care va crea pentru noi toate fiierele necesare a fi integrate i pe
care le va nsera n structura de directoare a proiectului nostru. Dup lansarea n
execuie a acestei aplicaii, CEFileWiz.exe, n primul pas se aps butonului Add
File(s) i se alege fiierului Apl_Backlight.exe, vezi Figura 5.2, operaia
13
Memory Type
----------NK
14
14
lansate mai repede n execuie. Din Figura 5.4 se observ c modulele gwes.dll
(Graphics, Windowing i Events Subsystem) i device.dll (Device Manager) sunt
lansate n execuie prin intermediul acestui mecanism. De asemenea interfaa cu
utilizatorul este lansat n execuie tot prin intermediul mecanismelor existente n
sistemul de regitri. ntre toate aceste aplicaii, care sunt lansate n execuie prin
nregistrrile din baza de date regitri, pot exista anumite dependene ce sunt
gestionate prin intermediul cmpurilor DependXX asociate n mod direct cu
nregistrrile LaunchXX. n acest mod nregistrarea DependXX conine una sau
mai multe valori de tip REG_BINARY ce ne permite s menionm dependena
unei aplicaii de o alta sau de altele care trebuie ncrcate anterior aceleia care
depinde de ele.
16
Pentru atingerea acestui ultim obiectiv vom dezvolta o nou aplicaie urmrind
paii:
1. selectm n Solution Explorer directorul Subprojects i nserm un nou
subproiect (Add New Subproject ... prin click dreapta).
2. n fereastra ce tocmai s-a deschis alegem templat-ul WCE Console
Application iar n cadrul cmpului Subproject Name introducem
BacklightON, aciuni urmate de apsare butonului Next.
3. Selectm A simple Windows Embedded CE console application i
apsm butonul Finish.
4. Se completeaz fiierul BacklightON.cpp cu codul:
#include
#include
#include
#include
"stdafx.h"
<windows.h>
<commctrl.h>
"Pm.h"
17
5.3.2. Caracteristici
Caracteristici generale
Windows Embedded Compact este un sistem de operare multitasking ce are la
baz o rulare a firelor de execuie pe baza unor felii de timp (quantum) care sunt n
mod normal egale cu 100 ms. Valoarea implicit a acestei felii de timp este setat de
OEM15 n OAL16 prin intermediul variabilei dwDefaultThreadQuantum17. De
exemplu, dac avem 5 fire de execuie (3 lansate de acelai proces i dou lansate de
dou procese diferite) cu aceeai prioritate fiecare i avnd toate acelai quantum,
fiecare dintre acestea obine 1/5 din timpul total de execuie al tuturor celor 5 fire de
execuie. Durata acestor felii de timp asociate diferitelor fire de execuie poate fi
modificat n mod dinamic sau interogat prin intermediul urmtoarelor dou funcii:
CeSetThreadQuantum
CeGetThreadQuantum
n momentul n care durata temporal a unei astfel de felii, asociat cu un fir de
execuie, este egal cu zero sistemul de operare exclude acel thread din cadrul
procesului de execuie ciclic a lui. Dac ns acel fir de execuie ruleaz, el va fi
executat pn la finalizarea lui, firul ne putnd fi ntrerupt de nici un fir de execuie cu
o prioritate similar sau mai mic, putnd fi ntrerupt doar de thread-uri ce au
prioriti superioare (de exemplu, lansate n execuie de ntreruperi).
Un fir de execuie este activ, deci este rulat, pn n momentul n care: (a) execuia
lui se finalizeaz sau timpul alocat a expirat (programatorul constat terminarea felii
de timp asociate), (b) este blocat prin intermediul unui mecanism de sincronizare
15
16
17
19
sau (c) este ntrerupt de o cerere de ntrerupere mai prioritar sau de un alt fir de
execuie mai prioritar.
Exist un numr de 256 de prioriti ce pot fi asociate diferitelor fire de execuie,
vezi Tabelul 5.3. Nivelul 0 este nivelul de prioritate maxim n timp ce nivelul 255
este nivelul de prioritate minim.
Pentru gestionarea prioritilor firelor de execuie se pot folosi urmtoarele funcii:
CeSetThreadPriority
CeGetThreadPriority
GetThreadPriority
Deosebirea ntre ultimele dou funcii este dat de faptul c funcia
CeGetThreadPriority ntoarce prioritatea oricrui thread din sistem, valoarea ntoars
situndu-se n intervalul 0 ... 255, n timp ce funcia GetThreadPriority ntoarce
prioritatea firelor de execuie utilizator ce nu sunt drivere valoarea ntoars fiind n
intervalul 248 ... 255.
Tabelul 5.3. Alocarea intervalelor de prioriti n cadrul SO Windows Embedded
Compact
Prioriti
0 -96
97-152
153-247
248-255
Asociat cu:
Rezervate pentru driver-ele ce trebuie s lucreze n timp real
Utilizate pentru driverele standard ale sistemului de operare
Windows Embedded Compact
Rezervate pentru driverele ce nu trebuie s lucreze n timp real
Rezervate pentru diferitele fire de execuie ce nu lucreaz n
timp real
Ateptarea (sincronizarea) putndu-se realiza fa de unul sau mai multe obiecte pe un timp
indefinit sau limitat (dac dup un anumit timp nici un obiect nu trece n starea semnalizat threadul continundu-i execuia indiferent de starea ulterioar a obiectelor de sincronizare).
21
t1
t2
t3
23
24
26
Semaforul poate fi de tip: (a) cu nume este un semafor folosit pentru comunicarea
ntre firele de execuie ce aparin unor procese diferite de pe aceeai main numele
semaforului este elementul de identificare al acestuia de ctre toate firele de execuie
implicate care folosesc acest nume n cadrul apelului funciei OpenSemaphore, (b)
anonim - folosit doar pentru comunicarea ntre firele de execuie ale aceluiai proces
elementul de identificare a semaforului n aceast situaie este constituit de handleul ntors de funcia CreateSemaphore care este utilizat de firele de execuie interesate.
n cadrul sistemelor de operare Windows, o dat creat un semafor cu nume se poate
realiza deschiderea accesului la semafor de ctre orice fir de execuie care cunoate acest
nume. Deschiderea se face cu ajutorul funciei OpenSemaphore. Pentru simplitate, n
cazul SO Windows Embedded CE funcia OpenSemaphore nu este implementat,
utilizai funcia CreateSemaphore pentru accesarea unui semafor. Dac n cazul
utilizrii funciei CreateSemaphore numele semaforului, furnizat drept argument, este
unul cunoscut, preexistent n cadrul nucleului SO atunci semaforul respectiv este
deschis, se obine un handle, iar parametrii funciei ce iniializeaz variabila de tip
contor i caracterizeaz numrul maxim de fire ce pot deine controlul asupra
semaforului sunt ignorai deoarece ei au fost deja definii n momentul creri iniiale a
elementului semafor n nucleul SO.
La apelul funciei ReleaseSemaphore de ctre un fir care are control asupra
semaforului, counter-ul se incrementeaz cu o unitate valoarea cu care se
incrementeaz contorul este specificat ca argument n cadrul funciei
ReleaseSemaphore. Dac variabila de tip contor a semaforului are valoarea maxim
(specificat la creare), atunci apelul funciei ReleaseSemaphore de incrementare
eueaz. De asemenea, dac se specific o valoare negativ pentru parametrul de
incrementare al funciei ReleaseSemaphore apelul eueaz din nou.
n mod similar unui mutex pentru o funcionare corect a sistemului global dup
eliberarea celorlalte resurse utilizate (de exemplu al celor create dinamic) trebuie s
eliminm i resursele ocupate de handler-ul asociat structurii semafor prin intermediul
funciei CloseHandle.
Evenimente
Evenimentele20 sunt unul din mecanismele oferite de nucleul sistemului de
operare Windows Embedded Compact ce ofer posibilitatea unui fir de execuie s
semnalizeze unul sau mai multe fire de execuie c un anumit eveniment a avut loc n
sistem.
n mod similar mecanismului de sincronizare de tip mutex un eveniment poate sau
nu s aib un nume asociat. n momentul n care evenimentele au nume asociate
acestea pot realiza sincronizarea ntre fire de execuie aparinnd unor procese
diferite; n caz contrar se pot sincroniza numai fire de execuie aparinnd aceluiai
proces.
Un eveniment este activ sau semnalizat atunci cnd este setat (prin intermediul
funciei SetEvent) i nu este semnalizat atunci cnd este resetat (prin intermediul
funciei ResetEvent). n momentul n care un eveniment este creat, prin intermediul
funciei CreateEvent, acesta poate fi setat sau nu, poate sau nu s aib un nume
asociat i poate fi un eveniment de tip cu resetare automat sau manual.
20
Dup cum se va prezenta ulterior, vezi Figura 5.11, evenimentele sunt utilizate ntr-un numr foarte
mare de situaii. De exemplu, evenimentele sunt utilizate de nucleul sistemului de operare pentru a
informa un driver c o ntrerupere a avut loc i c ntreruperea trebuie tratat.
27
Din punct de vedere software o coad de mesaje este o list ordonat n care
diferitele mesaje pot fi adugate sau nlturate din list. Cozile de mesaje prin care se
realizeaz sincronizarea n Windows Embedded Compact sunt de tip FIFO (First In
First Out) sau FCFS (First Come First Server) n sensul c adugarea se face la
sfritul cozii n timp ce elementele se citesc i se elimin din coad de la nceputul ei.
O coad de mesaje poate fi dedicat unui fir de execuie sau poate fi o resurs
comun a mai multor fire de execuie. n mod similar mutex-urilor, semafoarelor i
evenimentelor, cozile de mesaje ce au un nume propriu pot fi utilizate i pentru
sincronizarea firelor de execuie ce aparin la procese diferite.
Cu ajutorul funciei CreateMsgQueue se creeaz o coad de mesaje ce poate avea
sau nu un nume asociat i creia i este asignat un hadler (identificator unic) prin
intermediul cruia se pot, fie, citi mesajele din coad, fie scrie mesaje n coad
funcie de valoarea TRUE sau FALSE a membrului bReadAccess a structurii de date
MSGQUEUEOPTIONS (structur a crei adres este utilizat drept argument n
cadrul acestei funcii). Prin intermediul unui handler asociat unei astfel de cozi se
poate realiza doar citirea sau doar scrierea ntr-o astfel de coad i nu ambele operaii
prin intermediul aceluiai handler. Dar, dac dispunem de un handler asociat cu o
coad de mesaje putem, prin intermediul funciei OpenMsgQueue, crea un alt handler
asociat aceleiai cozi pentru a realiza o alt operaie de scriere/citirea din ea
complementar celei anterioare. Pentru eliberarea resurselor asociate cu o coad de
mesaje i pentru nchiderea ei se folosete funcia CloseMsgQueue. n schimb, pentru
eliberarea resurselor ocupate de un handler asociat unei cozi de mesaje se va folosi
funcia standard CloseHandle.
Sincronizarea, n cazul utilizrii cozilor de mesaje, se face prin intermediul uneia
din funciile: WaitForSingleObject sau WaitForMultipleObjects. Pentru scrierea i
citirea unui anumit mesaj se folosesc funciile WriteMsgQueue i ReadMsgQueue. n
general se poate trimite doar o singur variabil de un anumit tip de dat (de exemplu
int, dword, char etc.). n momentul n care necesitatea ne impune s trimitem mai
multe variabile, le putem grupa pe acestea sub forma unei singure structuri de date pe
care s o scriem i, ulterior, s o citim ntr-o/dintr-o coad de mesaje.
Aplicaia 5.3: Realizai dou programe independente care s aib poziionate, fiecare
dintre ele, pe interfeele grafice cte un element de tipul Progress Control.
Implementai o modalitate de sincronizare a acestora prin intermediul
mecanismului de tip mutex astfel nct dup o derulare complet a primului
element de tip Progress Control, derulare executat sub controlul primei
aplicaii, s nceap derularea celui de al doilea element de tip Progress Control
sub controlul celei de a doua aplicaii, urmat din nou de o derulare a primul s.a.m.d.
n plus, derularea celui de al doilea element Progress Control va fi mai rapid
comparativ cu a primului. Ambele programe vor conine toate acele elemente
necesare crerii structuri mutex, deschiderii, ateptrii, prelurii, distrugerii acesteia
precum i acelea necesare nchiderii aplicaiei i pornirii derulrii celor dou
elemente de tip Progress Control.
Vizualizai prin intermediul aplicaiei Kernel Tracker modalitatea de rulare a
celor dou aplicaii create.
Rezolvare: Implementarea aplicaiilor anterior menionate le gsii n codul asociat
acestui capitol. Cele dou aplicaii sunt n directoarele Lent i Rapid i sunt
aproape complet funcionale. Implementai, n plus, doar codul i mecanismul
asociat nchiderii acestora de pe interfaa grafic.
29
30
32
Caracteristici IST:
execut cea mai mare parte a procesului de tratare a ntreruperii, efectund
toate acele activiti ce sunt specifice i necesare dispozitivului care a
generat ntreruperea;
este parte integrat a unui driver;
trebuie s execute cel puin urmtoarele aciuni:
la nceput:
s creeze un eveniment standard prin intermediul funciei
CreateEvent;
s nregistreze evenimentul n kernel i s l asocieze cu un
identificator logic asociat cu SYSINTR prin intermediul funciei
InterruptInitialize;
n mod continuu:
33
ISR gestioneaz toate acele activiti critice ce trebuie realizate ct mai iute
posibil;
IST se ocup de restul aciunilor de procesarea datelor implementnd
funcionalitatea real ce deservete cererea de ntrerupere.
Toate IRQ
invalidate
Toate IRQ de
prioritate superioara
sunt validate
Fir
normal de
executie
IST
ISR
SYSINTR
Nucleul
SO
InterruptDone()
Generare
IRQ
OAL
Driver
Fir
normal de
executie
Kernel
ne
preemtiv
KISH
Kernel
ne
preemtiv
KISH
Programator
(scheduler)
Programator
(scheduler)
Setare
eveniment
Timp de latenta
pana la executia IST
34
21
22
23
Pentru cazul existenei mai multor dispozitive conectate la aceeai linie de ntrerupere, modalitatea
de manipulare a unei astfel de ntreruperi se va prezenta n paragrafele urmtoare.
Aceast funcie poate fi apelat de driver-ele ncrcate n spaiul nucleului (kernel-mode drivers) i
de cele ncrcate printr-un proces specializat udevice.exe (denumite user-mode drivers).
De exemplu, procesoarele de tip ARM utilizeaz aceast modalitate de deservire a ntreruperilor
generate de mai multe dispozitive deoarece nglobeaz doar dou linii hardware externe ce trebuie
s susin toate aceste dispozitivele. Aceste dou linii externe sunt: IRQ (pentru acele cereri de
ntrerupere ce nu sunt critice) i FIQ (fast IRQ pentru acele cereri de ntrerupere ce deservesc
subrutine critice din punct de vedere temporal).
35
suporte aceast facilitate. Aceste ISR instalabile sunt implementate n fiiere de tipul
DLL.
ISR1
ISR2
ISR3
ISR4
USB
Flash Drive
Serial
port
Network
card
Keyboard
36
37
ISR
IST
Figura 5.16. Imagine de detaliu din Figura 5.14 a zonei ncercuit n rou
38
(b)
(a)
(c)
Figura 5.17. (a) i (b) Dou instantanee a ferestrei Catalog Items View i (c) Tabul
Properties asociat cu componenta ActiveSync selectat
Selectarea diferitelor componente ale sistemului de operare se poate realiza n
mod grafic prin selectarea manual (de exemplu din fereastra Catalog Items View,
vezi Figura 5.17) sau automat (de ctre mediul de dezvoltare) a lor sau prin setarea
unor variabile globale ale mediului, variabile de tipul:
SYSGEN_[*]_[*]25 aceste variabile in de includerea componentelor
sistemului de operare care sunt independente de partea hardware,
BSP_[*]_[*]26 sau BSP_NO[*]_[*] variabile ce in de includerea sau de
excluderea unor componente n sistemul de operare care sunt dependent de
partea hardware pe care lucreaz SO,
24
25
fiier ce va fi ulterior ncrcat n memoria NAND a plcii de dezvoltare sau pus pe un SD card,
USB flash etc. n vederea lansrii n execuie a sistemului de operare
Prin [*] nelegndu-se orice combinaie de litere i/sau cifre ce au o anumit semnificaie n direct
corelaie cu respectiva component pe care aceast variabil o reprezint, de exemplu
SYSGEN_AS_BASE.
40
de
mai
41
sus,
de
exemplu
BSP_DVI_ENABLE
sau
n accepiunea utilizat n cadrul acestui paragraf frame buffer este zona de memorie n care se
depoziteaz informaia dintr-un cadru (frame), informaie ce va fi utilizat de dispozitivul de afiare
pentru prezentarea acesteia utilizatorului. Termenul de framebuffer mai poate reprezenta un
dispozitiv de ieire care comand un element de afiaj (de ex. un monitor LCD) cu informaia
stocat ntr-o zon de memorie ce conine datele complete ale uni cadru.
42
BSP_DVI_640W_480H
BSP_DVI_640W_480H_72HZ
BSP_DVI_800W_480H
BSP_DVI_800W_600H
BSP_DVI_800W_600H_56HZ
BSP_DVI_1024W_768H
BSP_DVI_1280W_720H
43
28
BSP_H264_DECODE_FILTER
44
BSP_MPEG4_DECODE_FILTER
BSP_MPEG2_DECODE_FILTER
Activitatea de background
a sistemului de operare
Regim
tranzitoriu
Decodarea continu a
fluxului video
adugai spre asaliz urmtorii parametri: Processor Time [%], Kernel Time [%] i
Memory Load.
n Figura 5.19 se prezint variaia celor 3 parametri, prezentai mai sus, anterior
lansrii n execuie a aplicaiei Windows Media Player i ulterior acestui moment.
Filmul care a fost deschis n momentul lansrii n execuie a programului Windows
Media Player a fost codat conform standardului MPEG 4, la o rat de 4 Mbps.
Din Figura 5.19 se observ c anterior lansrii n execuie a Windows Media
Player-ului curbele ce indic parametrii Processor Time i Kernel Time aproape se
suprapun, deci cel care ocup aproape n totalitate procesorul era nucleul SO. O
dat cu lansarea aplicaiei se observ c ntre parametrii Processor Time i Kernel
Time apare un ecart semnificativ dovad c Windows Media Player-ul ruleaz i
ocup o parte substanial din puterea procesorului. Simultan i Kernel Time crete
ca pondere datorit procesrii tuturor ntreruperilor ce in dispozitivele de stocare a
datelor (unde este depozitat fiierul AVI), de afiare i reproducere a semnalului
sonor.
Descriere
3rdParty
OSDesigns
OTHERS
47
PLATFORM
PRIVATE
PUBLIC
SDK
Conine utilitarele necesare cros-compilrii, compilrii i linkeditrii imaginii sistemului de operare pentru diferitele platforme
suportate (x86, ARM, SH4, MIPS).
De asemenea, alte utilitare necesare atingerii obiectivului construirii
imaginii sistemului de operare, se regsesc i n directorul %_
WINCEROOT%\PUBLIC\COMMON\OAK\BIN\I386.
48
Tabelul 5.5. Tipuri de abloane ale sistemului de operare oferite n Windows Embedded 6.0
ablon
Versiune
Digital media receiver
Custom device
Set-top box
Industrial controller
Dispozitiv industrial
Internet appliance
Gateway
Mobile handheld
Dispozitiv PDA
Enterprise Web Pad
IP phone basic
Telefon
IP phone advanced
Descriere
Ofer scheletul unui sistem de operare capabil s stocheze, gestioneze i redea diferite tipuri de formate
audio, imagini i video.
Sistemul de operare va oferi toate acele funcii specifice unui dispozitiv ce este conectat la un display,
televizor etc. pe care va prezenta informaii de tip multimedia preluate din internet. Interfaa cu
utilizatorul (shell-ul sistemului de operare) va fi standard n schimb browser va oferi toate acele funcii
i controale, pe interfaa cu utilizatorul, specifice unui televizor.
Nu sunt selectate implicit nici o component a sistemului de operare, permind utilizatorului s aleag
manual toate componentele necesare sistemului de operare.
Ofer suport pentru aplicaiile de control i/sau automatizri industriale ncepnd cu simple panouri de
control a unui utilaj i de interfaare cu el de tip HMI (human-machine interface) pn la aplicaii de tip
control logic programabil (PLC - programmable logic controllers). Printre componentele ce sunt
incluse n imagine: touch-screen, mouse, reea, manegment al puterii, servicii de criptografie etc.
Sistemul de operare este destinat punctelor de lucru staionare (monitor, mouse, tastatur) cu suport
dedicat aplicaiilor de tip internet susinute de un browser.
Sunt dispozitive ce ofer servicii ctre un numr de clieni (calculatoare sau alte dispozitive) de la o
singur conexiune de tip internet (dial-up sau WAN wide area network). n final aceste dispozitive
pot fi de exemplu rutere. Sistemul de operare trebuie s ofere suport i s includ componente pentru
Network Address Translator, Ipv4, Ipv6, firewall, web server (pentru administrare), conexiuni wireless
etc.
Dispozitive mobile cu interfaare de tip touch screen sau tastatur (precum telefoane mobile,
nregistratoare coduri de bare etc.). Sistemul de operare ofer suport pentru: acces la internet, email,
calendar, address book etc.
Funcionalitatea sistemului de operare include acele componente pentru suportul unui ecran cu o
rezoluie de 640 x 480 sau mai mare a unui dispozitiv portabil cu acces la internet. Interfaarea se
realizeaz prin mouse sau touch screen.
Sistemul de operare susine funcionalitile unui dispozitiv de tip telefon VoIP cu dou linii fr s
aib o interfa grafic (headless devices).
Sunt incluse componentele necesare unui telefon VoIP cu interfa grafic (care poate fi i de tip touch
screen), incluznd aplicaii de tip agend contacte, Windows Messenger i un browser de internet.
49
Small-footprint device
Enterprise terminal
Windows network
projector
n aceast situaie sistemul de operare este minimal i este dedicat acelor dispozitive pentru care
mrime imaginii sistemului de operare este critic. Acest ablon este dedicat aplicaiilor ce nu utilizeaz
un display i include componente legate i necesare modulului coredll.
n principal dispozitivele ce sunt construite cu componentele din acest ablon sunt terminale la care
accesul se face prin intermediul unor proceduri de tip remote-desktop, interfaa cu utilizatorul este de
asemenea una minimal. Sistemul de operare ofer suport pentru o conexiune la internet iar protocolul
de baz este Remote Desktop Protocol (RDP).
Sistemul de operare furnizeaz suport pentru dispozitivele de tip automat bancar, cas de marcat,
dispozitiv de schimb valutar automat, automat doze de suc etc.
Dispozitivele ce ruleaz un astfel de sistem de operare pornit de la un astfel de template permit preluare
ecranului unui calculator personal, prin intermediul unui protocol de tipul RDP i afiarea acestuia.
Dispozitivul final fiind unul de tip videopriector de reea.
50
Bibliografie
[Web 2009] http://www.microsoft.com/downloads/details.aspx?familyid=B478949ED020-465E-B451-73127B30B79F&displaylang=en
[Hall, 2005] M. Hall, Windows CE 5.0 for real-time systems, Embedded Computing
Design, pp 37-41, Nov 2005
[Dekey, 2011] Sam Dekey, Making Windows NT a Real-Time Solution A Technical
Overview, National Instrument, descarcat de pe www.ni.com n 2011
51
Anexa 1.
Fiierul ti_evm_3530.bat este un fiier de configurare de tip script care permite
configurarea BSP conform necesitilor utilizatorului. Selectarea includerii sau nu a
diferitelor drivere asociate cu diferitele dispozitive hardware existente are un impact
major asupra funcionalitii sistemului, a performanelor acestuia ct i asupra
mrimii fiierului NK.bin.
Fiierul ti_evm_3530.bat este un fiier de tip .bat poziionat n directorul
%_WINCEROOT%\platform\ti_evm_3530 unde se gsesc i urmtoarele scripturi
pentru platformele susinute de acest BSP:
set BSP_NOSPI1=
set BSP_NONAND=
set BSP_NONLED=
set BSP_NODMA=
set BSP_NOGPIO=
set BSP_NOTLED=
set BSP_NOSPI=
set BSP_NOTWL=
set BSP_NORTC=
set BSP_NOMCBSP=
set BSP_NOBACKLIGHT=
set BSP_NOTOUCH=
set BSP_NOKEYBD=
set BSP_NOAUDIO=
set BSP_NOSDHC=
set BSP_NODISPLAY=
set BSP_NOPWRKEY=
set BSP_NOBATTERY=
set BSP_NOUSB=
Analiza fiierului ti_evm_3530.bat permite de asemenea i o nelegere profund
a mecanismelor interne existente n cadrul BSP precum i a limitrilor acestuia. De
exemplu, se poate afla c atunci cnd Virtual Rotated Frame Buffer (VRFB) este
52
activat CODEC-urile oferite de TI vor funciona corect, n schimb cele existente nativ
n Windows CE nu vor funciona, iar pentru ca acestea s funcioneze corect
BSP_NOVRFB trebuie pus pe unu n acest mod sistemul hardware VRFB este
invalidat.
53