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ć.