Documente Academic
Documente Profesional
Documente Cultură
-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 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
Gazda
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.
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
Dac- sistemul este nou. trebuie asi&urat c- testele de baz- electrice au fost efectuate,
-
Scurt-circuit2
Se verifica daca pro&ramul este memoratA 8rocedura de resetare a procesorului este bine inteleasaA
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
$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 .
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
"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&
-
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