1.Wstęp 2.Generowanie systemu w EDK

Transkrypt

1.Wstęp 2.Generowanie systemu w EDK
1.Wstęp
Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na
platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty
Xilinx Platform SDK (Eclipse).
Wymagania: EDK8.2 ; ISE8.2; Spartan3 - Digillent Board.
2.Generowanie systemu w EDK
Otworzyć środowiski „Embedded Development Kit” i wygenerować nowy system softprocesorowy przy pomocy Base System Builder Wizard.
Wpisujemy dowolną nazwę projektu w wybranym katalog, a następnie wybieramy opcję
tworzenie nowego projektu EDK (szczegółowy opis generowania nowego systemu EDK
znajduje się w ćwiczeniu dotyczącym środowiska EDK).
Wybieramy wersję płytki z którą będziemy wykorzystywać w ćwiczeniu tj. „Spartan-3 Starter
Board”
Wybieramy wersję systemu z softprocesorem MicroBlaze i konfigurujemy go zgodnie z
rysunkiem.
Spośród urządzeń wejścia/wyjścia wybieramy kontroler RS232 tj. OPB_UARTLIGHT oraz
kontroler zewnętrznej pamięci SRAM_256Kx32 tj. OPB_EMC.
a) Interfejsy magistrali
Poprawnie wygenerowany system pokazano poniżej.
• microblaze_0 – procesor MicroBlaze
• mb_opb – magistrala i arbiter OPB
• debug_module – moduł umożliwiający sprzętowe debuggowanie poprzez JTAG
• RS232 – interfejs UART
• SRAM_256Kx32 – interfejs pamięci SRAM
• lmb_bram – pamięć BRAM
• dcm_0 – moduł zegara
b) Mapa pamięci
Dokonać zmian w mapie pamięci automatycznie wygenerowanego systemu zgodnie z
rysunkiem:
Uwaga. Należy dokonać zmian w adresach pamięci SRAM i BRAM. W przypadku
SRAM_256Kx32 adres początkowy ustawiamy na wartość 0x00000000, natomiast dla
dlmc_cntlr i imb_cntlr adresy początkowe ustawiamy na wartość 0x70000000 a rozmiar na
8K.
3. Środowisko Eclipse
Przy pomocy kabelka JTAG do komputera podłączyć płytkę Spartan-3.
Eclipse jest rozbudowanym środowiskiem programistycznym napisanym w Javie. Projekt
został stworzony przez firmę IBM a następnie udostępniony społeczności Open Source.
W naszym przypadku jest ono dostosowane przez firmę Xilinx m.in. w celu łatwiejszego
tworzenia i debuggowania oprogramowania na platformę MicroBlaze.
Wybieramy: Software ! Launch Platform Studio SDK
a) Tworzenie projektu
⇒ Wybieramy File!
! New ! Projekt
⇒ Wybieramy projekt w C oraz aby pliki Makefile były generowane automatycznie
⇒
Wybieramy nazwę naszego projektu i klikamy Finish.
b) Pisanie i kompilacja kodu
Po utworzeniu projektu pojawi się widok projektu z głównym oknem edytora, w którym
znajduje się przykładowy kod. Aplikacja automatycznie kompiluje kod po każdorazowym
zapisaniu.
W oknie nawigatora po lewej widzimy wszystkie pliki naszego projektu. Nasz
przekompilowany plik binarny to *.elf znajduje się w katalogu Debug.
Teraz możemy przystąpić do pisania naszej aplikacji.
⇒ W oknie edytora wpisujemy poniższy kod i zapisujemy projekt.
#include "xuartlite_l.h"
#include "xparameters.h"
#include <stdio.h>
int main()
{
Xuint8 a,b;
while(1)
{
a=-1;b=-1;
while(a>9){
printf("\nPodaj a=");
a=XUartLite_RecvByte(XPAR_RS232_BASEADDR);
a-=0x30;
};
while(b>9){
printf("\nPodaj b=");
b=XUartLite_RecvByte(XPAR_RS232_BASEADDR);
b-=0x30;
};
printf("\nSuma=%d",a+b);
}
return 0;
}
Projekt zostanie przekompilowany a w oknie konsoli pojawi się komunikat:
„Build complete for project SDK_first”
c) Ustawienia debuggera
⇒ Wybieramy Run!
! Debug… i klikamy New
⇒ W zakładce Main!
!C/C++ Application: klikamy na Browse i wybieramy plik *.elf z
katalogu Debug.
⇒ Przechodzimy do zakładki XMD Target Connection, w której powinniśmy mieć
ustawienia jak poniżej, a następnie klikamy Debug.
d) Wgrywanie i debuggowanie programu
Aplikacja automatycznie załaduje nasz program do pamięci ( plik *.elf ) zaczynając od lokacji
0x00000000. Następnie przejdzie do okna debuggowania.
Debugger środowiska Eclipse umożliwia wszystkie czynności, jakie dostępne są w innych
środowiskach programistycznych np. Visual C++. Możliwa jest praca krokowa., ustawianie
pułapek ( Brakepoint ), podgląd zmiennych, pamięci rejestrów procesora i wiele innych.
Nie należy zapominać że program wykonuje się w rzeczywistym procesorze na naszej
platformie sprzętowej, a środowisko Eclipse komunikuje się z procesorem przy pomocy
konsoli XMD.
Aby wrócić do trybu edycji kodu należy wybrać Window!Open Perspective!C/C++
Aby przerwać debuggowanie należy wybrać Run!
!Terminate.
4. Konsola XMD
Uruchomić środowisko EDK
Konsola XMD umożliwia nam krokowanie pracy, ustawianie pułapek, podgląd rejestrów oraz
zapewnia nam pełny dostęp do magistrali procesora MicroBlaze.
⇒ Konfiguracji XMD można dokonać wybierając Debug ! XMD Debug Option
• Connection Type – Hardware
• JTAG Properties ! JTAG Cable – Auto
• JTAG Properties – Auto Discovery JTAG Chain Definition
⇒ Aby uruchomić XMD należy wybrać Debug ! Launch XMD
Rysunek 1 Konsola XMD po poprawnym połączeniu się z MicroBlaze
W XMD dostępna jest pomoc po wydaniu polecenia help.
⇒
⇒
⇒
⇒
⇒
⇒
Należy zapoznać się z komendami konsoli XMD
Odczytać zawartość rejestrów [ r0 - r8 ] procesora MicroBlaze.
Odczytać początek pamięci SRAM (adres 0x00000000), zapisać tam dowolną wartość.
Odczytać początek pamięci BRAM (adres 0x00600000), zapisać tam dowolną wartość.
Dokonać konwersji pliku programu elf na format binarny.
Wgrać program od adresu 0x00000000 i go uruchomić.