edk – laborator 8-9 - radio.ubm.roradio.ubm.ro/ea/documente/cursuri_laboratoare/proiectare...

14
Numai pentru uz academic EDK – Laborator 8-9 Scrierea unor aplicaţii software simple

Upload: phamkien

Post on 19-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Numai pentru uz academic

EDK – Laborator 8-9

Scrierea unor aplicaţii software

simple

Page 2: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-3 Procesorul MicroBlaze [email protected]

Laborator 4: Scrierea unor aplicaţii software simple

Introducere

Acest laborator prezintă procesul de scriere a unei aplicaţii software simple. Aplicaţia va comanda aprinderea LED-urilor pe placa Spartan-3E Starter. Se va adăuga un controler XPS BRAM şi se va modifica fişierul script pentru linkeditare pentru a plasa secţiunea .text a programului în memoria BRAM. În sfârşit, se va verifica dacă proiectul funcţionează conform aşteptărilor.

Obiective

• Adăugarea unui controler pentru memoria internă Block RAM • Scrierea unei aplicaţii simple pentru accesul la un periferic IP • Editarea unui fişier script pentru linkeditare • Partiţionarea secţiunilor executabile în spaţiile de memorie LMB şi PLB • Generarea fişierului de biţi pentru configurare • Configurarea circuitului şi verificarea funcţionării pe placa Spartan-3E Starter.

Procedură

Primele trei laboratoare au definit platforma hardware pentru sistemul procesor. Acest laborator cuprinde mai multe etape, care cuprind adăugarea unui controler de memorie şi scrierea unei aplicaţii software simple pentru a accesa LED-urile de pe placa Spartan-3E Starter. Sub fiecare indicaţie generală pentru o procedură dată, se găsesc instrucţiuni pas cu pas şi figuri ilustrative care oferă detalii suplimentare pentru execuţia procedurii. Dacă se cunoaşte modul de execuţie a unei proceduri, se poate trece peste instrucţiunile pas cu pas şi se poate continua cu următoarea indicaţie generală din cadrul procedurii.

Actualizarea proiectului Etapa 1

Creaţi un subdirector edk4 în directorul propriu (din directorul D:\Student) şi copiaţi conţinutul directorului edk3 în directorul edk4 pentru a continua proiectul creat în laboratorul precedent. Lansaţi în execuţie mediul Xilinx Platform Studio (XPS) şi deschideţi fişierul proiectului aflat în directorul edk4.

� Pentru a continua utilizarea proiectului creat în laboratorul 3, creaţi un subdirector edk4 în directorul propriu din directorul D:\Student şi copiaţi conţinutul directorului edk3 în directorul edk4.

Etapa 1: Actualizarea proiectului

Etapa 2: Crearea

BSP

Etapa 3: Actualizarea unui program

C simplu

Etapa 4: Editarea fişierului

script

Page 3: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-4 Procesorul MicroBlaze [email protected]

� Deschideţi mediul XPS selectând Start → All Programs → Xilinx Platform Studio 9.2i →

Xilinx Platform Studio.

� Selectaţi Open a recent project şi deschideţi proiectul din directorul edk4.

� Selectaţi panoul IP Catalog şi adăugaţi următoarele module IP la proiectul hardware din categoria Memory and Memory Controller:

• XPS BRAM Controller

• Block RAM (BRAM) Block

� Stabiliţi conexiunile conform figurii 4-1.

Figura 4-1. Adăugarea controlerului pentru memoria internă BRAM şi a blocului BRAM

� În panoul Addresses, blocaţi toate adresele (executând un clic în caseta din coloana Lock) cu excepţia controlerului XPS BRAM adăugat recent la proiect.

� Selectaţi dimensiunea de 8K pentru controlerul XPS BRAM şi executaţi un clic pe butonul Generate Addresses (figura 4-2).

Figura 4-2. Specificarea dimensiunii şi a adreselor pentru controlerul memoriei interne BRAM

Page 4: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-5 Procesorul MicroBlaze [email protected]

Crearea BSP Etapa 2

Treceţi în revistă diferitele opţiuni din caseta de dialog Software Platform

Settings.

Pachetul BSP (Board Support Package) este creat pe baza perifericelor incluse în proiect.

� Selectaţi Software →→→→ Software Platform Settings (figura 4-3).

Figura 4-3. Caseta de dialog Software Platform Settings pentru instanţa microblaze_0

Etapa 1: Actualizarea proiectului

Etapa 2: Crearea

BSP

Etapa 3: Actualizarea unui program

C simplu

Etapa 4: Editarea fişierului

script

Page 5: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-6 Procesorul MicroBlaze [email protected]

Observaţie: Se poate selecta driverul pentru fiecare periferic din sistem. Se pot selecta, de asemenea, nucleul şi sistemul de operare pentru fiecare instanţă a procesorului. În plus, se pot selecta bibliotecile disponibile, dacă acestea vor fi utilizate.

� Secţiunea Software Platform ar trebui să fie deja selectată. În coloana Current Value, modificaţi valoarea pentru frecvenţa de ceas la 50000000 şi selectaţi debug_module pentru opţiunea xmdstub_peripheral. Verificaţi ceilalţi parametrii conform figurii 4-4.

Figura 4-4. Parametrii platformei software pentru instanţa microblaze_0

� Selectaţi secţiunea OS and Libraries şi verificaţi ca RS232_DCE să fie selectat pentru stdout şi stdin. Păstraţi valoarea curentă pentru opţiunile microblaze_exceptions şi enable_sw_intrusive_profiling ca false (figura 4-5).

Figura 4-5. Parametrii de configurare OS and Libraries

Ceas de 50 MHz pe placa Spartan-3E

Nu se utilizează un SO

Nu este necesară utilizarea bibliotecilor Xilinx

Page 6: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-7 Procesorul MicroBlaze [email protected]

� În secţiunea Drivers, treceţi în revistă lista driverelor pentru fiecare periferic din sistem (figura 4-6).

Figura 4-6. Configuraţia driverelor

� Selectaţi butonul OK pentru a accepta setările.

Generaţi pachetul BSP.

� În fereastra Project Information Area, selectaţi panoul Project şi executaţi un clic dublu pe fişierul system.mss sub secţiunea Project Files pentru a deschide fişierul MSS pentru acest proiect.

Mediul XPS scrie parametrii care sunt specificaţi în caseta de dialog Software Platform

Settings în fişierul system.mss.

� Analizaţi fişierul MSS şi observaţi că parametrii corespund cu cei care au fost specificaţi în caseta de dialog Software Platform Settings. Închideţi fişierul system.mss.

� Generaţi pachetul BSP selectând Software → Generate Libraries and BSPs sau executând un

clic pe butonul .

Aceasta va executa programul Libgen asupra fişierului system.mss pentru a genera fişierele de bibliotecă BSP.

1. Listaţi subdirectoarele create în directorul microblaze_0 din directorul edk4, conţinutul şi scopul posibil al acestora.

________________________________________________________________

________________________________________________________________

________________________________________________________________

?

Page 7: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-8 Procesorul MicroBlaze [email protected]

Actualizarea unui program C simplu Etapa 3

Actualizaţi codul C scris în laboratorul 2 pentru a afişa setările comutatoarelor DIP la LED-uri.

� În panoul Applications, eliminaţi din proiect fişierul lab3.c şi adăugaţi fişierul lab2.c din arhiva edk-lab2.zip la proiectul TestApp_Memory.

Se va extinde funcţionalitatea aplicaţiei utilizate în laboratorul 2 prin adăugarea codului pentru a afişa setările comutatoarelor la LED-uri.

� În fereastra System Assembly View, selectaţi panoul Bus Interfaces. Executaţi un clic cu butonul din dreapta pe perifericul LEDs_8Bit şi selectaţi Driver: gpio_v2_11_a � View API

Documentation (figura 4-7).

Figura 4-7. Accesarea documentaţiei pentru interfaţa API a perifericelor

� Selectaţi File List în partea de sus a paginii pentru a vizualiza lista diferitelor fişiere C şi a fişierelor antet asociate cu modulul GPIO.

� Selectaţi fişierul antet xgpio.h şi treceţi în revistă lista apelurilor de funcţii disponibile pentru modulul GPIO.

Trebuie executate următoarele acţiuni în aplicaţia software pentru a valida scrierea la modulul GPIO: 1) Iniţializarea GPIO; 2) Setarea direcţiei datelor; 3) Scrierea datelor.

� Localizaţi descrierile pentru următoarele funcţii:

Etapa 1: Actualizarea proiectului

Etapa 2: Crearea

BSP

Etapa 3: Actualizarea unui program

C simplu

Etapa 4: Editarea fişierului

script

Page 8: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-9 Procesorul MicroBlaze [email protected]

XGpio_Initialize (XGpio *InstancePtr, u16 DeviceId)

° InstancePtr este un pointer la o instanţă XGpio. Memoria referită de pointer trebuie să fie alocată în prealabil de funcţia apelantă. Următoarele apeluri pentru a manipula componenta prin interfaţa API XGpio trebuie efectuate cu acest pointer.

° DeviceId este identificatorul unic al perifericului controlat de această componentă XGpio. Prin transmiterea unui identificator al perifericului, se asociază instanţa generică XGpio cu un anumit periferic, în modul ales de funcţia apelantă sau de programatorul aplicaţiei.

XGpio_SetDataDirection (XGpio *InstancePtr, unsigned Channel,

u32 DirectionMask)

° InstancePtr este un pointer la instanţa XGpio cu care se lucrează.

° Channel indică canalul modului GPIO (1 sau 2) cu care se lucrează.

° DirectionMask este o mască de biţi specificând care semnale discrete sunt intrări şi care sunt ieşiri. Biţii setaţi la 0 sunt ieşiri, iar cei setaţi la 1 sunt intrări..

XGpio_DiscreteWrite (XGpio *InstancePtr, unsigned Channel,

u32 data)

° InstancePtr este un pointer la instanţa XGpio cu care se lucrează.

° Channel Channel indică canalul modului GPIO (1 sau 2) cu care se lucrează.

° Data este valoarea care trebuie scrisă în registrele discrete.

� În panoul Applications, sub instanţa microblaze_0 din proiectul TestApp_Memory, executaţi un clic dublu pe intrarea Generated Header: microblaze_0/include/xparameters.h (figura 4-8).

Figura 4-8. Fişierul antet generat

¡ Programul Libgen creează fişierul xparameters.h, care conţine informaţii importante pentru apelul funcţiilor driverului.

Page 9: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-10 Procesorul MicroBlaze [email protected]

¡ În fişierul xparameters.h, localizaţi următoarea definiţie utilizată pentru a identifica perifericul LEDs_8Bit:

#define XPAR_LEDS_8BIT_DEVICE_ID 0

Acest identificator poate fi utilizat pentru apelul funcţiei XGpio_Intialize.

� Modificaţi codul C pentru a arăta ca în figura 4-9.

Figura 4-9. Fişierul C modificat

� Salvaţi fişierul C.

� Selectaţi butonul Build All User Applications pentru a compila programul.

Observaţie: Numărul poate fi diferit.

Page 10: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-11 Procesorul MicroBlaze [email protected]

Editarea fişierului script pentru linkeditare Etapa 4

Analizaţi fişierele obiect asamblate şi folosiţi utilitarul objdump pentru a afişa secţiunile programului executabil. Modificaţi fişierul script pentru linkeditor pentru a controla plasarea diferitelor segmente de cod în memoria destinaţie.

� Selectaţi Project → Launch EDK Shell pentru a deschide fereastra Cygwin.

� Schimbaţi directorul la edk4/TestApp_Memory prin utilizarea comenzii cd.

Se poate determina calea curentă de directoare prin utilizarea comenzii pwd.

� Introduceţi comanda mb-objdump –h executable.elf după prompterul din fereastra Cygwin pentru listarea diferitelor secţiuni ale programului, împreună cu adresa de început şi dimensiunea fiecărei secţiuni.

Trebuie să se obţină rezultate similare cu cele ilustrate în figura 4-10.

Etapa 1: Actualizarea proiectului

Etapa 2: Crearea

BSP

Etapa 3: Actualizarea unui program

C simplu

Etapa 4: Editarea fişierului

script

Page 11: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-12 Procesorul MicroBlaze [email protected]

Figura 4-10. Rezultatele afişării fişierului obiect: secţiunea .text se află în spaţiul LMB BRAM

Modificaţi amplasarea secţiunii .text astfel încât să se afle în memoria PLB BRAM. Recompilaţi codul, executaţi din nou comanda objdump şi analizaţi rezultatele afişate.

� În panoul Applications, executaţi un clic cu butonul din dreapta pe linia Project:

TestApp_Memory şi selectaţi opţiunea Generate Linker Script (figura 4-11).

Adresa din memoria încărcabilă (adresa de început a secţiunilor)

Adresa din memoria virtuală

Dimens. fiecărei secţiuni

Observaţie: Adresa de început a secţiunii .text se află în spaţiul LMB BRAM.

Page 12: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-13 Procesorul MicroBlaze [email protected]

Figura 4-11. Generarea fişierului script pentru linkeditare

� Selectaţi xps_bram_if_cntlr_0 ca spaţiu de memorie pentru instrucţiuni (secţiunea .text), după cum se arată în figura 4-12.

Figura 4-12. Selectarea spaţiului PLB BRAM pentru secţiunea .text

� Verificaţi ca directorul Output Linker Script să fie setat la edk4\TestApp_Memory\src şi executaţi un clic pe butonul OK. Acceptaţi rescrierea fişierului script pentru linkeditare.

Page 13: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-14 Procesorul MicroBlaze [email protected]

� Recompilaţi programul şi executaţi comanda mb-objdump în fereastra Cygwin (figura 4-13). Analizaţi rezultatele afişate, iar apoi închideţi fereastra Cygwin introducând comanda exit.

Figura 4-13. Rezultatele afişării fişierului obiect: secţiunea .text se află în spaţiul PLB BRAM

� În fereastra principală XPS, selectaţi Device Configuration → Update Bitstream pentru a regenera şi a actualiza şirul de biţi pentru configurare.

� Lansaţi o sesiune HyperTerminal prin executarea unui clic dublu pe fişierul hyperterm.ht disponibil în arhiva edk-lab3.zip.

� Conectaţi la calculator şi alimentaţi placa Spartan-3E Starter.

� Configuraţi circuitul FPGA selectând Device Configuration ���� Download Bitstream. Modificaţi poziţiile comutatoarelor DIP şi verificaţi că LED-urile se aprind conform poziţiei comutatoarelor.

� Închideţi programul XPS.

Note: The start address now resides in the PLB BRAM space.

Page 14: EDK – Laborator 8-9 - radio.ubm.roradio.ubm.ro/EA/Documente/Cursuri_Laboratoare/Proiectare cu... · Introducere Acest laborator ... modifica fişierul script pentru linkeditare

Scrierea unor aplicaţii software simple www.xilinx.com/univ 4-15 Procesorul MicroBlaze [email protected]

Concluzie

Se poate utiliza mediul Xilinx Platform Studio pentru a defini, dezvolta şi integra componentele software ale sistemului înglobat. Se poate defini un driver de dispozitiv pentru fiecare periferic. XPS creează un fişier MSS care reprezintă partea software a sistemului procesor. Apoi, se poate dezvolta şi compila o aplicaţie specifică pentru periferice şi se poate genera fişierul executabil pe baza codului obiect şi a bibliotecilor. Dacă este necesar, se poate edita fişierul script pentru linkeditare, în scopul amplasării diferitelor segmente în diferite memorii.