Sunteți pe pagina 1din 26

Procesor embedded(integrat): Arhitectura microsemnalelor; Mediul de lucru in VisualDSP++.

Sistemele embedded (integrate) sunt parte a unor sisteme complexe si, de obicei, sunt implementate pe echipamente dedicate cu soft asociat pentru a forma un dispozitiv de calcul care sa efectueze eficient o functie specifica. Procesoarele embedded cu soft asociat sunt inglobate in numeroase aplicatii. Spre deosebire de calculatoarele de uz general, proiectate pentru cateva sarcini generale, un sistem integrat reprezinta un sistem specializat de calculator integrat de obicei ca parte a unui sistem mai mare. Printre dispozitivele si aplicatiile bazate pe procese intregrate de prelucrare a semnalului DSP (procesare digitala de semnal) devin o componenta cheie pentru manipularea semnalelor, cum ar fi voce, audio, imagini si video in timp real. Prin urmare, multe din cele mai recente unitati harware de prelucrare sunt echipate cu procesoare integrate pentru prelucrarea semnalelor in timp real. Procesorul incorporat (embedded) trebuie sa interactioneze cu unele componente hardware externe cum ar fi memoria, display-ul, precum si dispozitivele de intrare/iesire (I/O), cum ar fi codificatorul/decodificatorul pentru a manipula semnalele din viata reala, inclusiv voce, muzica, imagine si video din viata analogica. De asemenea, are conexiuni la o sursa de alimentare (sau baterie) si cipuri de lagatura pentru transferul de date (I/O) si comunica sau schimba informatii cu alte procesoare integrate. Un sistem incorporat tipic cu cateva componente hardware este ilustrat in Figura 1.1. Unul sau mai multe procesoare integrate sunt folosite pentru a indeplini functii de prelucrare si control al semnalului. Interfetele hardware cu procesorul include: (1) memoria interna cum ar fi memorie doar pentru citire(ROM) pentru incarcarea codului si memorie cu acces aleator(RAM) si memorie cache pentru stocarea codului si a datelor;(2) un controler de acces direct la memorie (DMA) care este frecvent folosit pentru a transfera date in si din memoria interna fara interventia procesorului principal; (3) periferice sistem care contin cronometru, ceas, circuite de gestionare a puterii pentru a controla conditiile de functionare ale procesorului si (4) porturi de intrare/iesire (I/O) care permit procesoarelor incorporate sa monitorizeze sau sa controleze evenimentele externe, precum si sa proceseze fluxuri media primite de la dispozitivele externe. Aceste entitati pentru suportul hardware si procesor reprezinta blocuri tipice care formeaza un sistem incorporat. In plus, procesorul embedded (incorporat) poate face schimb de date cu un alt sistem sau procesor prin intermediul canalelor digitale de intrare/iesire. Vom folosi experimente hands-on pentru a ilustra cum se programeaza diferite blocuri ale unui sistem embadded (incorporat) si modul de integrare cu procesorul incorporat.

In cele mai multe sisteme embedded (integrate), procesorul incorporat si interfetele sale trebuie sa opereze in conformitate cu constrangerile de timp real, astfel, este necesar ca semnalele de intrare sa fie procesate intr-un anume interval de timp. Imposibilitatea de a indeplini aceste constrangeri de timp real duce la rezultate inacceptabile ca raspunsuri zgomotoase in aplicatii audio si imagine, sau chiar la consecinte catastrofale in unele aplicatii legate de oameni, cum ar fi automobilele, avioanele si sisteme de monitorizare a sanatatii. Pentru a ilustra cum diferite blocuri sunt conectate la procesor vom folosi exemplul unui audio player portabil ilustrat in Figura 1.2.

In acest sistem fluxul comprimat de biti audio in format Ogg Vorbis este stocat in memoria flash externa procesorului. Un program de decodificare pentru decodarea sirului de biti audio este incarcat din memoria flash in memoria procesorului. Datele comprimate sunt transmise procesorului Blackfin, care decodifica fluxul de biti comprimati in date modulate PCM. Datele PCM pot la randul lor, sa fie imbunatatite prin unele taskuri de postprocesare cum ar fi egalizarea efecte audio 3D . Convertorul audio digital-analogic extern (DAC) converteste datele PCM in semnal analogic pentru redarea cu ajutorul castilor sau difuzoarelor. Folosind ca exemplu acest audio media player putem identifica unele caracteristici comune ale sistemelor embedded tipice. Ele sunt prezentate pe scurt in cele ce urmeaza: 1. Functii dedicate:Un sistem embedded executa, de obicei, in mod repetat o sarcina specifica. In acest exemplu, procesorul indeplineste taskul de decodificare a fluxului de biti in format Ogg Vorbis si trimite esantioanele decodate audio DAC-ului pentru redare; 2. Constrangeri solide: Exista multe constrangeri in proiectarea unui sistem embedded cum ar fi: costul, viteza de procesare,dimensiunea si consumul de energie. 3. Reactii si raspunsuri in timp real: multe sisteme embedded trebuie sa reactioneze continuu la modificarile sistemului de intrare. Alegerea unui procesor embedded adecvat joaca un rol important in proiectarea unui sistem embedded. O abordare frecventa pentru realizarea taskurilor de prelucrare a semnalelor este de a utiliza functii fixe si procesoare hardwired. Acestea sunt implementate ca circuite integrate specifice unei aplicatii(ASICs) cu compatibilitati DSP. Cu toate acestea proiectarea si producerea procesoarelor harwired sunt foarte scumpe dupa cum costurile de dezvoltare devin semnificative pentru tiparul noului proces. In plus, raspandirea si schimbarile rapide a noilor standarde pentru telecomunicatii, audio, imagine si aplicatii de codare video fac ca abordarea hardwired sa nu mai reprezinte cea mai buna optiune.

O alternativa este de a utiliza procesoare programabile. Acest tip de procesor permite utilizatorilor sa scrie soft pentru aplicatiile specifice. Acest mod de abordare ofera flexibilitate in a scrie diferiti algoritmi pentru produse diferite, folosind acelasi processor si a imbunatati codul pentru a satisface standardele impuse produselor existente. Prin urmare, un produs poate fi scos pe piata intr-un timp mai scurt si se reduc astfel costurile de dezvoltare comparativ cu abordarea hardwired. Un DSP programabil este folosit frecvent pentru multe aplicatii embedded. Arhitectura DSP-urilor a evoluat foarte mult in ultimele doua decenii fiind incluse trasaturi ca frecventa de ceas mai mare, mai multe unitati aritmetice si logice, folosirea coprocesoarelor pentru comunicati si control si configuratia avansata a memoriei. Complexitatea aplicatiilor actuale de procesare a semnalelor si necesitatea de imbunatatire continua, fac dintr-un procesor programabil o optiune foarte atractiva. Una din cele mai noi generatii de procesoare programabile de semnal embedded este arhitectura micro semnal (MSA). Procesorul MSA a fost realizat in comun de catre Intel si ADI (Analog Device Inc) pentru a satisface cerintele de calcul si constrangerile aplicatiilor embedded de tip audio, video si comunicatii, privind consumul de energie. Modelul MSA inglobeaza atat DSP-urile,cat si functionalitatile microcontrolerelor intr-un singur procesor. Intel si ADI au dezvoltat ulterior procesoare bazate pe arhitectura MSA pentru diferite aplicatii. Procesorul MSA combina o arhitectura de calcul extrem de eficienta cu caracteristici uzuale prezente numai la microcontrolere. Aceste caracteristici includ optimizari pentru limbaje de programare high-level, protectia memoriei, adresare pe octeti. Asadar, modelul MSA are capacitatea de a executa algoritmi DSP foarte complexi si task-uri de baza pentru control intr-un singur procesor. Aceasta combinatie evita necesitatea separarii procesorului DSP de microcontrolere si, astfel, se simplifica foarte mult proiectarea si implementarea atat a hard-ului cat si a soft-ului. In plus, modelul MSA are o carcteristica privind consumul de energie foarte eficienta si dinamica, ideala pentru o varietate de comunicatii. Nucleul MSA utilizeaza o simpla categorie de instructiuni (computer-setinstructiuni-simplificare), cum ar fi setul de instructiuni pentru controlul si aplicatia de procesare a semnalului. De asemenea, MSA vine cu un set de instruciuni multifuncional, care permite dimensiuni diferite de op-coduri care urmeaz s fie combinate ntr-o singur instruciune. Prin urmare, programatorul are flexibilitatea de a reduce dimensiunea codului, precum i, maximiznd utilizarea resurselor disponibile. In plus, sunt unele instructiuni speciale de suport video si cu aplicatii wireless. Prima generatie de procesoare Blackfin este BF535, care opereaza la 300 MHz si lucreaza cu memorie cache L1 si L2, blocuri de sisteme de control, bazata pe blocuri periferice, si de mare viteza I/O. Urmtoarea generaie de procesoare Blackfin formata din BF531, BF532, BF533, i procesatori BF561. Procesoarele BF531 i BF532 sunt cel mai puin utilizate i funcioneaz la 400 MHz, iar BF561 este un procesor dual-core Blackfin care este folosit pentru aplicatii mai complexe. Deoarece toate procesoarele Blackfin au un cod compatibil, programele scrise pentru un procesor poate fi usor de suportat pentru alte procesoare. Vom folosi procesoarele BF533 si BF537 pentru a explica arhitectura, interfetele periferice, precum si probleme de punere in aplicare. Prin urmare, explicatia nucleului Blekfin poate sa se

concentreze numai pe BF533, si sectiuni suplimentare sunt introduse in cadrul BF537 pentru a sprijini perifericele. Se va utiliza simulatorul VisualDSP++ pentru a verifica corectitudinea algoritmului si EZ-Kit (departament de dezvoltare care contine procesor, memorie, precum si alte periferice pentru MSA) pentru Blackfin BF533 si pentru BF537, sunt necesare procesoare de semnal in timp real pentru aplicatii de control si aplicarea acestora.

Procesarea semnalelor embedded in timp real


n general, un sistem in timp real trebuie s menin un rezultat n timp util, atat intern, ct i extern. Exista doua tipuri de sisteme in timp real: sistemele hard si sistemele soft. Sunt multe facilitati la proiectarea unui sistem n timp real. Unele dintre facilitati includ: 1. Intelegerea algoritmilor si variabilelor DSP; O intelegere solida a principiilor si algoritmilor este cheia pentru construirea unui sistem in timp real; Cu aceste cunostinte, programatorul isi poate optimiza algoritmul de pe procesor, folosind cei mai buni parametrii si setari; 2. Disponibilitatea resurselor; Selectarea nucleului procesorului, perifericelor, senzorii si elementele de actionare, interfetele utilizator, memoria dezvoltarii si a uneltelor de debugging este o sarcina complexa; 3. Precizia aritmetica; In cele mai multe sisteme embedded (integrate), un punct fixaritmetic este frecvent folosit; 4. Raspundere in timp la cerinte; Programatorii trebuie sa ia in considerare problemele de hardware si de software; 5. Integrarea softului si hard-ului in sistem; Blackfin BF533/BFF537 EZ-Kits sunt folosite ca platforma a soft-ului si hard-ului;

Introducere in mediul de dezvoltare integrat visualDSP++


Vom examina instrumente de dezvoltare software pentru sistemele embedded. Elementele software pentru procesorul Blackfin este Visual DSP++ furnizat de ADI. Visual DSP++ este un mediu de dezvoltare si de depanare care ofera control grafic complet al editarii, construirii si depanarii proceselor. Vom prezenta unele caracteristici importante ale VisualDSP++.

Configurarea VisualDSP++
Versiunea Blackfin a VisualDSP++ IDEE pot fi descarcate si testate pentru o perioada de 90 de zile de pe site-ul ADI. Pictograma programului VisualDSP++ va fi pe Desktop sau in bara de START a computerului, ca in Figura 1.3.

Figura 1.3 Pasii de intrare in VisualDSP++

Pitograma pentru programul VisualDSP++, arata astfel . Dati dublu click pe aceasta pentru a activa VisualDSP++, daca imaginea se afla pe Desktop. Astfel, veti intra in programul VisualDSP++ ca in imaginea 1.4.

Figura 1.4 Fereastra VisualDSP++

Deschideti un proiect creat anterior cu obtiunile File -> Open -> Project, ca in imaginea 1.5.

Figura1.5 Pasii de deschidere a unui proiect in VisualDSP++

Acum,selectati din bara de meniu: Session ->Select Session ->ADSP-BF537-BF5xx Single Processor Simulator(1), ca in imaginea de mai jos.

Figura 1.6 Pasii de selectare a sesiunii in VisualDSP++

Va va aparea fereastra New Session ca in Figura 1.6 si se vor face selectiile pentru placa dorita. Selectati Debug target, Platform, Processor, si dati click pe OK.

Figura 1.6. Fereastra New Session.

Cand ADSP_BF5xx Blackfin Family Simulators este selectat ciclul de simulator este folosit. Acest simulator ofer o performan mai mare si din acest motiv este utilizat. Simulatorul compilat este utilizat atunci cand are nevoie de a procesa un fisier foarte mare de date. Processorul permite utilizatorului optiunea de a selecta tipul de procesor. Cu toate acestea, codul de dezvoltare pentru orice procesor Blackfin este compatibil cu codul altor procesoare Blackfin. In Figura 1.6, este selectat procesorul ADSP-BF533. Alternativ, utilizatorii pot selecta ADSP-BF537. Exista trei subferestre si o bara de instrumente in meniul VisualDSP++. Fereastra Project afiseaza fisierele disponibile in proiect sau grupul de proiecte (selectata cu albastru in figura de mai jos). Fereastra Disassembly afiseaza codul de asamblare a programului dupa ce proiectul a fost construit (este fereastra selectata cu negru) Output Window este format din doua pagin Console si Build (selectata cu verde in figura de mai jos). Console, afiseaza orice mesaj care este programat in cod, si pagina Build arata toate erorile survenite in timpul procesului de constituire. Bara de instrumente contine toate instrumentele, optiunile si modurile disponibile in VisualDSP++. Dati click pe Project -> Project Options si asigurati-va ca procesorul este selectat corespunzator.

Folosirea unui program simplu pentru a ilustra procesele de baza Vom ilustra instrumentele de baza ce se regasesc in VisualDSP++ IDDE, si vom folosi un proiect format din doua fisiere sursa scris in C pentru procesorul Blackfin. EXPERIMENTUL 1.1 In acest experiment, vom deschide mediul VisualDSP++ asa cum am explicat mai sus.(cu dublu click pe pictograma VisualDSP++ sau din bara de start a computerului Start> All Programs->Analog Devices-> VisualDSP++Environment). Apoi deschideti proiectul cu ajutorul optiunile File -> Project -> Open, ca in imaginea de mai jos.

In exemplul de mai jos este deschis proiectul cu numele exp1_1.dpj, directorul fiind in c:\adsp\chap1\exp1_1. Odata ce proiectul este incarcat in VisualDSP++, putem vedea o lista de fisiere sursa. Dati dublu click pe dotprod_main.c pentru a vedea sursele codului in fereastra editor.

Figura 1.6 Afisarea programului dotprod_main.c

Acesta este un program simplu care arata inmultirea a doi vectori, a si b. Din bara de instrumente selectati Settings, apoi optiunea Preferences cum a fost selectata mai jos,

si o sa va apara casuta Preferences ca in Figura 1.7.

Figura 1.7 Fereastra Preferences dialog box

Din fereastra General, bifati optiunile Run to main after load si Load executable after build. Prima optiune pornete de la void main() a programului dupa ce programul este incarcat in simulator. A doua optiune permite codului sa fie incarcat in memoria procesorului, cand codul este in curs de construire. Restul de optiuni pot fi selectate ca in Figura 1.7. Faceti click pe butonul OK, pentru a inchide fereastra Preferences. Dupa acestea dati click pe Project -> Build Project din bara de instrumente sau

apasati F7, iar imaginea pentru acest process este

Utilizatorii vor folosii fisierul

executabil exp1_1.dxe, care a fost creat in directorul c:\adsp\chap1\exp1_1\ . In afara de Build Project, mai este si optiunea Rebuild All pentru aceasta avem imaginea . Daca apare mesajul Build completed successfully din comanda Build si in cadrul ferestrei Output Window, inseamna ca nu s-au gasit erori. Daca sunt erori, compilatorul va afisa un mesaj de eroare ca in Figura 1.8.

Figura1.8 Mesaj de eroare daca programul are greseli in cod

Dupa ce a-ti tratat erorile salvati programul cu ajutorul optiunilor: File-> Save -> File dotprod_main.c. si apoi compilati programul cu ajutorul instructiunilor Project -> Build Project, ca in imaginea de mai jos sau apasand tasta F7.

Odata ce codul programului a fost compilat, fisierul executabil exp1_1.dxe este copiat automat in director (care este activat din meniul Preferences), avand simulatorul BF533 (sau 537). Dati click pe Console si apoi in pagina Output Window. Va va aparea un mesaj care sa ateste ca fisierul executabil a fost complet incarcat, acesta este Breakpoint Hit at <ffa006f8>. VisualDSP++ este setat automat in doua seturi de valori, una la inceputul si alta la sfarsitul codului. Localizarea breakpoint poate fi vizualizata prin accesarea Setting -> Breakpoints ca in Figura1.20.

Figura 1.9

Breakpoint displayed in both editor and disassembly windows

Figura 1.20. Fereastra Breakpoints

Proiectul este acum gata pentru a rula. Dati click pe butonul sau Debug -> Run (F5). Simulatorul calculeaza produsul scalar si afiseaza rezultatul in pagina Console din Output Window. Care este raspunsul pentru produsul a si b ? Modifica sursa de fisiere pentru a efectua urmatoarele sarcini : 1. Adauga elementul 20 la matricea c; realizeaza calculul intre a si c, si afiseaza rezultatul; 2. Realizeaza produsul din primele 10 elemente ale matricei; 3. Pentru a obtine numarul de cicluri rulati codul de la inceput la sfarsit. Dati click pe Register-> Core->Cycles, ca in imaginea de mai jos.

Reincarcati programul si dat click pe File -> Reload Program.

Utilizarea procesorului Blackfin BF533 sau a procesorului BF537.


EZ-KIT este o platforma hardware care include un processor Blackfin inconjurat de alte dispozitive, cum ar fi coder/decoder audio (CODEC), codificatoare video, decoder video, flash, RAM dynamic sincron (SDRAM), si asa mai departe. Vom introduce componentele hardware n EZ-KIT, care arat diferenele dintre BF533 si placa BF537. Figura 1.21 arata o imagine a placii BF533 EZ-KIT.

Figura 1.21. Blackfin BF533

Aceasta placa are patru intrari audio (audio input) si sase canale de iesire audio, prin intermediul mufei RCA. In plus, acesta poate codifica si decodifica trei intrari video si trei iesiri video. EZ-KIT este interfata programului VisualDSP++(gazduit pe calculator personal) prin intermediul unui cablu de interfata USB. In Figura 1.22 este prezentata placa BF537. Aceasta placa consta din intrari si iesiri stereo pentru conectari. Cu toate acestea, placa BF537 nu are video de intrari sau de iesiri. In plus, ea include IEEE 802.3 10/100 Ethernet. Similar cu placile BF533 EZ-KIT si cu placa BF537 EZ-KIT mai sunt patru butoane generale (SW10, SW11, SW12, si SW13) si sase leduri principale (LED1-LED6). Porniti alimentarea cu energie electrica si verificati daca LED-ul verde este aprins si ledurile 4-9 continua sa se miste (indicand faptul ca placa nu este legata de soft). In continuare, cablul USB este conectat la placa si la computer. Computerul recunoste noul hard si lanseaza Add New Hardware Wizard, care instaleaza fisiere

amplasate pe EZ-KIT CD-ROM. Odata ce USB-ul este instalat cu succes, LED-ul galben ar trebui sa ramana aprins.

Figura 1.22 BF537 EZ-KIT Mediul VisualDSP++ poate fi schimbat cu EZ-KIT cu ajutorul urmatorilor pasi: Dati click pe Session si o sa va apara fereastra New Session. Schimbati in aceasta fereastra optiunea de Debug target si la optiunea Platform cu ADSP-BF533 EZ-KIT Live via Debug Agent, ca in Figura 1.23. Dati click pe OK si notati schimbarea in VisualDSP++. Acum putem rula acelas proiect dar pe placa BF533.

Figura 1.23. New Session pentru configurarea placii BF533.

EXPERIMENT 1.2. 1. Folosind fisierele sura anterioare ca sabloane, crearea a doua noi fisiere sura
vecadd_main.c si vecadd.c, pentru a efectua calculul a doi vectori a si b. Rezultatul este salvat in matricea a treia, adica matricea c. Folositi File->New -> File, ca in imaginea de mai jos, pentru a crea o pagina goala pentru editoare in VisualDSP++.

Salvati acest fisier in c:\adsp\chap1\exp1_2.

2. Din meniul File, alegeti fereastra New, apoi Project, ca in imaginea de mai
jos.

Va va aparea fereastra Project Wizard, ca in Figura 1.24 3. Introduceti directorul si numele noului proiect dupa cum se arata si in Figura 1.24. Click pe Finish si Yes pentru a crea un nou proiect.

Figura 1.24 Fereastra Project Wizard. 4.Un proiect gol este creat in fereastra Project. Click pe Project -> Project Options, asa cum se vede si in Figura 1.25.

Figura 1.25 Project Options 5. Click pe Compile - > General (1), si dat click pe Enable optimization, ca in Figura 1.26.

Figura 1.26 Fereastra pentru compilare.

6. Pentru a adauga sursa la noul proiect faceti urmatorii pasi: Project -> Add to
Project - > File(s) , ca in imaginea de mai jos. Selectati cele doua fisiere sursa si dati click pe Add. Acum sursele au fost adaugate.

Figura 1.27 Fereastra Plot Configuration

3. Dati Click pe Add din Figura 1.27 pentru a adauga matricea a. Utilizati aceeasi pasi pentru urmatoarele doua matrici. Dupa ce au fost introduse valorile pentru matricea a in fereastra Plot Configuration, se va afisa graficul matricii a, cum este afisat in Figura 1.28. Astfel se va proceda si pentru urmatoarele doua matrici.

Figura 1.28 Afisarea matricei a

Exercitiul 1, Partea 1: Construirea si rularea primului program


Programul ales foloseste doua tipuri de functii clasice: functia de sortare bubble si functia de sortarea quick. Suntem familiarizati cu acesti algoritmi. Pentru a nu mai rescrie programul codului intreg al Exercitiului 1 puteti sa-l deschideti de pe VisualDSP++ al CD-ului de distributie. Partea 1 a programului poate fi gasita in: <install_path>\Blackfin\Examples\ADSP-BF537 EZ-Kit Lite\Getting

Started Examples\Part_1_1 subdirectory. Implicit in <install_path> este in C:\Program Files\Analog Devices\VisualDSP 5.0. Deschideti fisierul de proiect pentru prima parte a Exercitiului 1, prin selectarea urmatorilor pasi : File -> Open -> Project, (ca in imaginea de mai jos) dupa in directorul exercitiului, selectand proiectul din fisierul1, Sort_1_1.dpj.

Odata ce proiectul este deschis, puteti vizualiza codul sursa, facad dublu click pe eticheta Sorts.c. Puteti compila programul cu ajutorul urmatoarelor obtiuni: Project -> Build Project, ca in figura de mai jos, sau apasand tasta F7.

Dupa ce programul este incarcat, acesta nu are erori la compilare, iar bara albastra selectata in cadrul functiei main() arata unde programul se opreste atunci cand este data comanda Running (tasta F5).

Pentru ca matricile out_b si out_m sa fie introduse in cadrul graficului, trebuie sa creem pasii pentru fereastra Plot. Creem fereastra Plot pentru matricea out_b: 1. Selectam View ->Debug Windows -> Plot -> New din cadrul meniului

si va va aparea fereastra Plot Configuration, ca in imaginea de mai jos;

2. Schimbam fereastra Tite cu Monitoring out_b.

3. In campul Address acrieti variabila out_b; 4. In campul Count scrieti 128; 5. Schimbati in cadrul campului Data cu tipul de date int, ca in imaginea de mai jos;

6. Click pe Add si apoi click pe OK. Repetati acest proces si pentru variabila out_m; Va vor aparea urmatoarele imagini:

Figura 1-3. Plot Window

Cele doua grafice sunt plasate la zero, deoarece matricile de date sunt initializate la zero in VisualDSP++, cele doua ferestre arata valori aleatoare la care matricile sunt initializate. Comanda F10 sau Step Over este creata pentru a observa ca matricea out_b a fost selectata,fiind initializata cu fiecare valoare. Este de mentionat ca Partea 1 foloseste configurarea cu debug ( Figura 1-4)

Figura 1-4 Project Debug Configuration VisualDSP++ adauga automat doua configuratii pentru fiecare proiect creat. Aceste configuratii sunt : Debug. Utilizata pentru depanarea functionala a sistemului dumneavoastra. Release. Folosit pentru crearea functiilor dumneavoastra din cadrul sistemul Dupa ce ne-am familiarizat cu pasii de pornire in Visual DSP++, o sa inchidem programul creat anterior pentru a construi altul. Pentru a inchide un program parcurgem urmatorii pasi: File -> Close -> Project. Deschideti un nou proiect astfel:
<istall_path>\Blackfin\Examples\ADSP-BF537 EZ-Kit Lite\Getting Started xamples\Part_1_2\Sorts_1_2.dpj .

Acest cod a fost plasat (pentru moment) in externalul SDRAM, pentru a demonstra efectele de plasare de memorie.

Figura 1-5 Configurarea lansarii proiectului.

Selectati configurarea pentru proiect prin alegerea optiunii Release pentru dropdown box (Figura 1-5). Apoi utilizati Project->Rebuid All, pentru a construe versiunea optimizata a programului. Pentru partea a doua a programului, vom folosi programe statistice, prin selectarea Tools>Statistical Profiling>New Profile. Rulati programul folosind Debug>Run (sau F5). Programul poate intarzia 30 de secunde sau mai mult pentru a rula la finalizare. n cazul n care programul se execut, afieaz starea acestuia de informare n colul din dreapta jos a VisualDSP + +, Figura 1-6.

Figura 1-6 Informarea starii programului.

In cazul in care programul se termina, pagina Console din fereastra Output, afiseaza un mesaj informativ (in textul verde, similar cu xx secunde in aprox. xxxx cicluri). Mesajul este de iesire, penreu printf(), apel plasat la sfarsitul functiei main(). In Figura 1-7, se afla Statistical Profiling, unde rezultatele pot varia usor pe computer. Nu este surprinzator, majoritatea timpului proiectului este petrecut in bubble, algoritmul de sortare.

Figura 1-7. Statistical Profiling: Initial Results.

Procesorul Blackfin are o ierarhie de memorie cu o cantitate mica de SRAM intern(L1), in configuratia sa. Puteti configura SRAM cu un cache pentru un SDRAM extern mai lent sau ca drept de memorie, pentru zero latenta, viteza de acces. Pentru cache-ul de instructiuni: - 1- Deschideti Project>Project Options sau ALT-F7; - 2- In Project and Memory Protection sub Startup Code Settings (Figura 1-8); - 3- Dati pe Instruction cache memory si selectati casuta Enable instruction cache. - 4- Click OK pentru a seta optiunea de proiect nou. - 5- Reconstruiti proiectul selectand Project>Rebuild All

Exercitiul 1, Part2: Impactul ierarhiei de memorie si a selectiei


O alta performanta a procesorului Blackfin este aceea de a plasa algoritmii in memoria interna. In programul bubble_sort() se afla cheia algoritmului, in care se consuma majoritatea puterii de procesare; Profilul de statistica arata un efect interesant de schimbare: functia bubble_sort() nu mai foloseste cel mai mare procent din procesor time-quick_sort(), este in prezent cel mai mult timp consumat. (Figura 1-9).

Figure 1-9. Statistical Profiling: Results after Moving bubble_sort() Daca quick_sort() este mutat in memoria interna precum si timpul total de executie , imbunatateste si viteza relativa a bubble_sort() versus quick_sort(), revenind la raportul de asteptare.

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