LABORATORIUM UKŁADÓW PROGRAMOWALNYCH
Transkrypt
LABORATORIUM UKŁADÓW PROGRAMOWALNYCH
Politechnika Wrocławska, Wydział Elektroniki Mikrosystemów i Fotoniki Wydziałowy Zakład Metrologii Mikro- i Nanostruktur LABORATORIUM UKŁADÓW PROGRAMOWALNYCH PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2015/2016 Prowadzący: dr inż. Daniel Kopiec Konsultacje: PN godz. 11-13, ŚR godz. 14-16 Miejsce konsultacji: sala 015a budynek C2 Email: [email protected] Tel.: 71 320 3651 Miejsce odbywania zajęć: sala 108 budynek C2 Spis treści: 1. Zadanie 1 – interfejs JTAG 2. Zadanie 2 – pierwszy program, porty GPIO 3. Zadanie 3 – procedura obsługi portów FGPIO 1. Na podstawie dokumentacji zestawu uruchomieniowego EVBmm oraz modułu procesora MMlpc23xx za pomocą przewodów pinowych połączyć interfejs JTAG z wyprowadzeniami płytki mikrokontrolera. Rys. 1 Moduł mikrokontrolera MMlpc23xx oraz rozmieszczenie poszczególnych wyprowadzeń Rys. 2 Opis wyprowadzeń złącza modułu MMlpc23xx z zaznaczeniem tych, które są używane w interfejsie JTAG. Piny oznaczone kolorem czerwonym – JTAG, niebieskim – GND, zółty zasilanie +3,3V Interfejs JTAG stanowi standard diagnostyczny IEEE 1149.1, który umożliwia również programowanie oraz uruchamianie układów programowalnych i systemów mikroprocesorowych. Niewątpliwą zaletą standardu JTAG jest fakt, że umożliwia programowanie układu bezpośrednio w gotowych urządzeniu, co przede wszystkim umożliwia szybkie tworzenie i modyfikacje prototypowych wersji urządzeń. Standardowy interfejs JTAG posiada następujące linie wykorzystywane w komunikacji: TDI (ang. Test Data In) TDO (ang. Test Data Out) TCK (ang. Test Clock) TMS (ang. Test Mode Select) TRST (ang. Test Reset) wejście danych wyjście danych wejście sygnału zegarowego wybór trybu pracy resetowanie interfejsu JTAG (opcjonalne) Interfejs układów ARM posiada kilka dodatkowych linii jak np. VREF (ang. Voltage Reference) RTCK (ang. Return Test Clock) SRST (ang. System Reset) DBGRQ (ang. Debug Request) DBGACK (ang. Debug Acknowledge) pomiar napięcia zasilającego układ, kontrola działania interfejsu cyfrowego sygnał umożliwiający negocjację szybkości transmisji danych pomiędzy interfejsem JTAG a układem ARM reset systemu, całego układu mikrokontrolera, stan aktywny – niski, czasem oznaczony nSRST sygnał żądania pracy krokowej procesora, stan wysoki oznacza wejście w tryb debugowania potwierdzenie wejścia w tryb debugowania, stan aktywny wysoki Rys. 3 J-Link Edu, programator, debuger działający w standardzie JTAG oraz opis wyprowadzeń złącza IDC 20 Podczas łączenie przewodów pinowych należy również pamiętać o podłączeniu zasilania +3,3V do modułu procesora oraz wszystkich pinów GND do masy płyty głównej. Poprawność połączeń można sprawdzić uruchamiając środowisko Keil µVision 5 przechodząc do zakładki Flash a następnie Configure Flash Tools… następnie zakładka DEBUG i w części J-Link klikamu Settings - w momencie kiedy zależy nam na pracy z rzeczywistym układem należy wybrać pracę z odpowiednim układem debugera/programatora, w naszym wypadku stosujemy debuger J-Link EDU. Po wybraniu opcji Target w częsci Info wyświetlonego okna otrzymamy kilka ważnych informacji dotyczących naszego mikrokontrolera jak np. sygnatura - inaczej ID w zapisie hex. Wartość ta powinna być różna od 0. Wystąpienie wartości 0 lub 1 może sugerować: błędne podłączenie programatora pod interfejs JTAG (najczęściej), nadpisanie ważnych obszarów pamięci mikrokontrolera i tym samym brak dostępu do obszaru bootloadera. Wówczas konieczne staje się skasowanie pamięci procesora za pomocą interfejsu szeregowego (opis procedury zawarty jest w pliku http://w12.pwr.wroc.pl/mikro/laboratorium/Procesory%20osadzone%20lab%20%20Wprowadzenie.pdf). 2. W środowisku Keil µVision 5 stworzyć nowy projekt, gdzie kod źródłowy pisany będzie w języku C, następnie: stworzyć szkielet programu – biblioteki, pętla główna itp. wykorzystując pin P1.20 portu GPIO układu LPC2368 stworzyć program tzw. migającej diody. W programie pętla opóźniająca powinna być zapisana jako osobna funkcja wywoływana z pętli głównej programu, w kolejnym kroku, pętlę opóźniającą pisaną w języku C zastąpić funkcją napisaną w asemblerze z wykorzystaniem dowolnych rozkazów 3. Na podstawie dokumentu USER MANUAL LPC2368 [2] zaproponować procedurę obsługi portów FGPIO. Jaka jest różnica pomiędzy portem GPIO a portem FGPIO ? Literatura: [1] http://www2.lauterbach.com/pdf/arm_app_jtag.pdf [2] http://www.nxp.com/documents/user_manual/UM10211.pdf