Sunteți pe pagina 1din 9

Dezvoltarea hardware si software a unui Sistem imbarcat

-2012-

Cuprins

1.0 Dezvoltarea Hardware a unui sistem imbarcat.......................................................3 1.1 ediul de dezvoltare...............................................................................................3 1.2 Sfaturi si trucuri pentru o buna dezvoltare !inainte de a incepe"............................# 1.3 $mplicarea in proiectare...........................................................................................# 1.# %ealizarea pro&resiva..............................................................................................' 1.' Sfaturi si trucuri pentru o buna punere la punct a actiunii......................................' 2.0 Dezvoltarea software a sistemului imbarcat...........................................................( 2.1 Clasele de stocare....................................................................................................( 2.2 odalitati de accesare a unei variabile...................................................................) 2.3 *+emplu pro&ramare memorie volatila,.................................................................)

1.0 Dezvoltarea Hardware a unui sistem imbarcat 1.1 Mediul de dezvoltare


Dezvoltarea si actualizarea unei aplicatii pentru un sistem imbarcat este o art&reu de stapanit pentru un proces cu bucla simpla. dar mai ales pentru o aplicatie multi-tasc/in& !bucla cu mai multe intreruperi" deoarece un ansamblu de procese de cooperative este e+ecutat de un sistem de operare imbarcat. 0n sistem de dezvoltare hardware necesita urmatoarele componente,
-

1 masina &azda pentru dezvoltare si actualizare2 0n sistem tinta pe care se va descaraca aplicatia care va fi e+ecutata in faza de actualizare si punere la punct2

3ctualizarea solicita istrumentele anterioare, emulatoare $C* sau %1 . 4D . 5637 si monitor

Gazda

Conexiune seriala sau retea Ethernet

Tinta

Fig.1 Componentele sistemului de dezvoltare Se va dezvolta si testa aplicatia pe o platforma standard !8C" cu instrumente software cu interfata prietenoasa pentru a usura depanarea. 9a e+ista un compilator. impreuna cu &azda pentru un cod obiect e+ecutabil de c-tre procesorul :intei. 9a e+ista un pro&ram de depanare pe &azd- pentru actualizarea aplicatiei e+ecutata de procesorul :int-. Dac- se lucreaza ;n limba< de nivel ;nalt !limba<ul C" este testat la nivelul surs- !depanare la nivel de surs-".

Depanatorul !la nivel de surs-" va fi cuplat cu un echipament de depanare !$C*. emulator %1 . 4D . 5637 ...". 6rebuie sa suporte modul timp real. pentru a putea trata o intrerupere!$S%" fara a incetini sistemul.

1.2 Sfaturi si trucuri pentru o buna dezvoltare (inainte de a incepe)


=nainte de a ;ncepe . aceasta ar trebui s- pre&-teasc- mai ;nt>i terenul pentru atunci c>nd trebuie dezvoltat firmware-ul. *ste important de stiut de ce instrumente este nevoie ?i pentru a se asi&ura compatibilitatea cu depanatorul de sistem. 8uncte care nu trebuiesc ne&li<ate,
-

Cele implicate in proiectarea sistemului =n:ele&erea ?i controlul hardware ale sistemului2 %ealizarea unei copii a tuturor documentelor2 3si&ura:i-v- c- hardware-ul func:ioneaz-2 $naintere pro&resiva dar si&ura2

1.3 mplicarea in proiectare


6rebuie c- elementul pe care ;ncepe sistemul !boot" sa fie repro&ramabil, crearea interfetei 5637 pentru repro&ramare. Sistemul trebuie s- includ- un mecanism de comunicare ;ntre software-ul de boot !firmware" si oamenii, @*D-uri. port serial. care nu sunt echipate cu conector special ;n versiunea final- pentru a limita costul produsului finit. 5637. 4D ... Stabilirea unei rela:ii bune ;ntre tipurile hardware si software 8rocurarea tuturor fiselor tehnice a circuitele utilizate ;n sistem !document de lucru". 9erifica:i dac- nu e+ist- nici o eroare pentru fiecare foaie de date ;n special atunci c>nd un circuit nou este utilizat. pentru a descoperi bu&-uri. Cunoasterea metodei de conectare la sursa de alimentare.

Dac- sistemul este nou. trebuie asi&urat c- testele de baz- electrice au fost efectuate,
-

Scurt-circuit2

6este de continuitate2 Contacte imperfecte2 @ipituri reci !fara contact"

1.! "ealizarea pro#resiva


Cu pasi marunti. *ste de preferat sa nu se realizeze un pro&ram enorm este de preferat sa se realizeze pro&rame mici care pot fi testate individual. 8uncte de verificat,
-

Se verifica daca pro&ramul este memoratA 8rocedura de resetare a procesorului este bine inteleasaA

Bisele tehnice ale componentelor sunt realizate in format corespunzatorA


-

8ro&ramatorul este bine confi&uratA 8artitionarea memoriei de boot este bine realizataA

8entru o buna realizare a pro&ramului este recomandata, cautarea e+emplelor de cod de pro&ramare pe site-ul furnizorului de procesor.
-

$nscriete in &rupul de utilizatori corespunzator Cauta informatii folositoare si e+emple asemanatoare pe internet

1.$ Sfaturi si trucuri pentru o buna punere la punct a actiunii

$n timpul scrii pro&ramului !firmware-ul" e+ista teste hardware care se fac atunci cand sunt &asite 4a&-uri hardware sau firmware-uri care nu face cea ce trebuia sa faca. *ste important a se apela la echipa hardware pentru confirmarea bunei calitati. *ste recomandat sa se urmeze toate procedurile fara omiterea vreunui pas aceasta fiind esentiala pentru obtinerea unui produs de calitate 8uncte esentiale de verificat, 1" 9erificarea tensiunii de alimentare, - folosind un voltmetru2 - folosirea unui osciloscop pentru a vedea daca e+ista bruia<e sau varfuri de tensiune2 2" 9erificarea tactului de ceas !C80", - folosind osciloscopul pentru vizualizarea formei tactului si pentru determinarea frecventei reale 3" 9erificarea corectei declarari a Chip Select-ului la boot (reset #" 0tilizarea unei lupe pentru verificarea calitatii lipiturilor si pentru evitarea Clipiturilor reciD fara contact '" 3tentie la descarcarile electrostatice!*SD". folositi o bretara antistatica E" 6estarea Chipselect-ului realizand o bucla software simpla de forma LOOP JUMP LOOP (" 0tilizarea unui @*D de test !realizand un pro&ram de test" Si analizarea vitezei de 1nF1ff intermitent. Se poate realiza un pro&ram de test de forma, led_on() led_blink_slo () led_blink_!ast() 3cesta se poate folosi ca o rutina de debu&. Se poate realize o secventa cu mai multe @*D-uri acesta poate indica o stare de pro&resie in faza de boot !3 @*D-uri. ) starii". )" 6estarea S%3 -ului e+tern !modelul G'' si G33 ca si test de baza". H" 6estarea cone+iunii serie. 10" $nitializarea controlerului D%3 . 11" Daca totul a decurs bine -I Se incepe pro&ramarea de nivel inalt !limba< C" *ste recomandat sa se foloseasca un compilator din &ama C care ofera rutinele de atribuire a intrarilor si esirelor si modificarea get"har() si put"har() pentru mentinerea hardware. Si functia print!() pentru un debu& mai simplu.

6rebuie atentie sporita la setarile initiale si la starea iesirilor in timpul resetului. 3cestea ar trbui sa aiba o memorie ne-volatila. 6rebuie studiata bine documentatia compilatorului in special la sectiunea Descarcare pro&ram si la modul in care se face conversia 3S .

2.0 Dezvoltarea software a sistemului imbarcat


Ju este sufficient a stii pro&rama este nevoie sa stii sa pro&ramezi foarte bine deoarece un sKstem imbarcat trebuie sa fie robust iar pro&ramul trebuie sa fie bine scris fara bu&-uri. 0n limba< folosit cu predilectie in acest domeniu al sistemelor imbarcate este limba<ul C deoarece este un limba< de nivel inalt dar foarte usor de adaptat hardware. 3ceast- sec:iune puncteaz- anumite aspecte ale pro&ram-rii in limba<ul C. care cere atentie sporita. 3tentie la optiunile de optimizare a comolatorului. 6ratarea corecta a intrruperilor folosite de sistem prin completarea vectorilor implica:i ;n tabela vectorial- a procesorului. 8unerea la punct a rutinei de intruperi $S% !$ntrerupt Subroutine" $nformarea tuturor tabelelor de vectori asemanatori despre intrruperile nefolosite !$S% dummK...".

2.1 %lasele de stocare


8entru un sistem imbarcat. este esential modul ;n care compilatorului !C" va stoca variabilele. Clasele de stocare a unei variabile pot fi, - auto # auto int a$ o Clasa de depozitare implicit pentru o func:ie2 o Stocarea pe baterii2 o 9ariabile distruse !dealocate" la sf>r?itul e+ecut-rii func:iei2
-

register # register int a2 o stocarea variabilelor in re&istrii procesorului2 o accesarea variabilelor radide2 o limitarea numarului re&istrilor de date2 stati" # stati" int a2 o $n cazul variabilelor din cadrul unei functii ele e+ista atata timp cat e+ista functia2

o $n cazul unei variabile &lobale aceasta e+ist pe tot parcursul e+ecutarii pro&ramului
-

e+tern , e+tern int a2 o variabile definite intrun fisier sursa e+tern2l o variabile importate2 o variabile folosite doar in cadrul unei cone+iuni e+terioare2

2.2 Modalitati de accesare a unei variabile


*+ista doua tipuri de accesare aunei variabile,
-

"onst # "onst int a%1& o valorile variabilelor nu pot fi schimbate de catre pro&ram2 o Se salveaza in memoria %1

volatile # volatile "har a$ o valoarea variabilei se scimba pe parcursul e+ecutarii pro&ramului2 o re&istrii pentru intrariFiesiri o Lone de memorie care servesc ca buffer-e pentru perifericele e+terne !controller D 3" o odificator de acces volatil este folosit pentru, - 8entru accesul la re&istri de memorie al perifericelor2 - 9ariabile &lobale modificate de un $S% - 9ariabile &lobale intrun sistem multi-tas/in&
-

2.3 &'emplu pro#ramare memorie volatila(


Scanarea activa a unui re&istru de stare periferic de ) biti. %e&istrul de stare de ) biti are urmatoarea adresa 0+123#. Scanarea activa a re&istrului de stare pana cand aceasta devine ne-nula unsigned "har ' ptr % (unsigned "har ') &x1()*$ ++ ,ait !or register to be"ome non-zero hile ('ptr %% &)$ ++ .o something else

3cest lucru poate s- nu func:ioneze deoarece compilatorul optimizeazcodul. Codul &enerat ar putea fi, mov ptr/ 0&x1()* mov a/ 1ptr loop bz loop Compilatorul C vede care este valoarea current a variabilei. Ju mai este nevoie sa fie recitita fizic deoarece are intotdeauna aceasi valoare !valoarea unei celule de memorie nu se schimba de la sineM". Codul in limba< de asamblare &enerat este, mov ptr/ 0&x1()* loop mov a/ 1ptr bz loop

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