Aplikacje Systemów Wbudowanych
Transkrypt
Aplikacje Systemów Wbudowanych
Aplikacje Systemów Wbudowanych Laboratorium STR910-EVAL Evaluation Board (STR912FW47) Politechnika Gdańska Wydział Elektroniki, Telekomunikacji i Informatyki Katedra Systemów Geoinformatycznych Gdańsk 2013 1 2 Spis treści Programowanie mikrokontrolera z rdzeniem ARM (STR912F) ....................................... 5 Dodatek A Otwieranie, kompilacja, wgrywanie oraz uruchamianie istniejących projektów w środowisku Ride7 z dodatkiem Rkit-ARM ......................................................................... 7 Dodatek B Tworzenie nowego projektu dla mikrokontrolerów z rdzeniem ARM w środowisku Ride7 z dodatkiem Rkit-ARM ............................................................................................. 12 Dodatek C Wgrywanie pliku binarnego (.hex) do pamięci mikrokontrolera za pomocą środowiska RFlasher7 ........................................................................................................... 14 3 4 Programowanie mikrokontrolera z rdzeniem ARM (STR912F) Wykorzystywany sprzęt • Układ ewaluacyjny STR910-Eval z mikrokontrolerem STR912F • Programator i debugger Rlink w wersji standard • Kabel RS232 • Kabel USB x 2 • Kabel ethernetowy Cel ćwiczenia Zapoznanie się środowiskiem do tworzenia projektów oraz programowania mikrokontrolerów z rdzeniem ARM. Tworzenie projektów oraz programowanie mikrokontrolera STR912F z wykorzystaniem układu ewaluacyjnego STR910-Eval. Szczegółowe zagadnienia • Porty wejścia/wyjścia • Watchdog • Przerwania • Zegar czasu rzeczywistego • Magistrala CAN • Interfejs UART • Wyświetlacz graficzny (122x32 piksele) • Modyfikacja kodu, kompilacja i uruchamianie zmodyfikowanych projektów na układzie ewaluacyjnym STR10-Eval • Tworzenie aplikacji, kompilacja i uruchamianie ich na układzie ewaluacyjnym STR10-Eval Przygotowanie stanowiska • Skopiować zawartość katalogu d:\materialy\Aplikacje Systemów Wbudowanych\STR910-Eval do katalogu roboczego d:\lab\STR910-Eval • Podłączyć Rlink do układu STR910-Eval (JTAG) oraz komputera PC (USB) • Podłączyć kabel RS232 do układu STR910-Eval (UART1) oraz komputera PC (com4) • Podłączyć kabel USB do układu STR910-Eval (USB) oraz komputera PC (USB) • Podłączyć kabel ethernetowy do układu STR910-Eval (ETHERNET) oraz komputera PC (ETHERNET) • Podłączyć zasilanie do układu STR910-Eval 5 Zadania do wykonania (1 tydzień) • Uruchomić Demo oraz sprawdzić działanie poszczególnych aplikacji (STR91x_demonstration_software_user_manual.pdf) • Otworzyć wszystkie przykładowe projekty z katalogu …\STR910Eval\Examples. Przeanalizować kod (wskazane wprowadzić własne poprawki), skompilować projekt, wgrać do układu ewaluacyjnego STR910Eval oraz przeanalizować ich działania w trybie debugowania (dodatek A) o Porty wejścia/wyjścia – GPIO o Watchdog – WDG o Przerwania – WIU o Zegar czasu rzeczywistego – RTC o Magistrala CAN – CAN o Interfejs UART – UART o Wyświetlacz graficzny (122x32 piksele) – LCD • Wgrać aplikację Demo do układu STR910-Eval za pomocą aplikacji RFlasher7 (dodatek C) Zadania do wykonania (2 tydzień) • Utworzyć nowy projekt oraz napisać dowolną aplikację demonstrującą moŜliwości układu ewaluacyjnego STR910-Eval (dodatek B) • Wgrać aplikację Demo do układu STR910-Eval za pomocą aplikacji RFlasher7 (dodatek C) Potrzebne informacje (d:\materialy\aplikacje systemów wbudowanych\STR910Eval) • Otwieranie, kompilacja, wgrywanie oraz uruchamianie istniejących projektów w środowisku Ride7 z dodatkiem Rkit-ARM – dodatek A • Tworzenie nowych projektów – dodatek B • Wgrywanie pliku binarnego do pamięci mikrokontrolera za pomocą środowiska RFlasher7 – dodatek C • Opis układu ewaluacyjnego STR910-Eval - STR910-Eval_User_Manual.pdf • Mikrokontrolery z rdzeniem ARM w środowisku Ride7 – Getting_Started_ARM_Ride7.pdf • Opis programu demonstracyjnego dla układu STR910-Eval – STR91x_demonstration_software_user_manual.pdf • Programowanie wyświetlacza LCD - Wyswietlacz_LCD.pdf 6 Dodatek A Otwieranie, kompilacja, wgrywanie oraz uruchamianie istniejących projektów w środowisku Ride7 z dodatkiem RkitARM Oprogramowanie Ride7 wraz z dodatkiem Rkit-ARM jest zintegrowanym środowiskiem typu IDE (Integrated Development Environment) pozwalającym na edytowanie projektów, kompilacje kodu, wgrywanie oraz debugowanie wgranego do układu oprogramowania (programator/debugger Rlink). Rkit-ARM to zestaw dedykowanych narzędzi dla mikrokontrolerów z rdzeniem ARM z kompilatorem języka C (GCC). Przykładową zawartość katalogu z projektem przedstawiono na rysunku 1. Rys.1. Zawartość katalogu z projektem Plik z rozszerzeniem .rprj jest głównym plikiem projektu. Na rysunku 2 przedstawiono domyślny widok okna głównego projektu, w skład którego wchodzi: • Pasek narzędzi (rysunek 3) • Lista plików projektu • Ustawienia dla projektu • Kod aktualnie edytowanego pliku • Wyniki kompilacji projektu • Lista dokumentacji 7 Rys. 2. Okno główne projektu Kolejny etap to kompilacja projektu. W tym celu naleŜy kliknąć ikonkę Make all project (rysunek 3). Rys. 3. Kompilacja projektu JeŜeli proces ten zakończył się sukcesem (powstanie między innymi plik z rozszerzeniem .hex), moŜna przystąpić do debugowania programu. W tym celu naleŜy kliknąć ikonkę Start debugging (rysunek 4). Rys. 4. Włączanie debugowania projektu Efektem będzie wyczyszczenie pamięci mikrokontrolera oraz wgranie nowego programu do pamięci mikrokontrolera z pliku binarnego z rozszerzeniem .hex. Okno główne projektu zmieni swoją konfigurację na dedykowaną debugowaniu kodu programu. W nowej domyślnej konfiguracji będzie moŜna: • Oglądać i edytować zawartość pamięci programu (rysunek 5) • Oglądać i edytować zawartość rejestrów związanymi z poszczególnymi peryferiami mikrokontrolera (rysunek 5) • Oglądać i edytować zmienne lokalne (rysunek 6) • Zobaczyć wynik disassemblacji kodu (rysunek 7) 8 • Kod programu • Menu debugowania (rysunek 8) Rys. 5. Okno z wyborem pamięci/rejestrów do podglądu/edycji Rys.6. Zmienne lokalne Rys. 7. Wynik disassemblacji kodu programu Rys.8. Menu debugowania 9 Program moŜna wystartować do pracy ciągłej (Run), pauzować (Pause) resetować (Reset), wykonywać krokowo, stawiać/usuwać pułapki programowe (Breakpoints). KaŜdy z projektów posiada: • opis działania oraz niezbędne pliki z funkcjami bibliotecznymi (plik Redme.txt) • dedykowaną funkcję główną main znajdującą się w pliku main.c • dedykowany plik nagłówkowy 91x_conf.h z definicją nazw rejestrów • dedykowaną implementację funkcji obsługi przerwań w pliku 91x_it.c zdefiniowanych w pliku nagłówkowym 91x_it.h • zestaw funkcji bibliotecznych wykorzystywanych w danym projekcie z definicją w plikach z rozszerzeniem .h oraz ich implementacją w plikach z rozszerzeniem .c o 91x_adc – przetwornik analogowo-cyfrowy ADC o 91x_can – magistrala CAN o 91x_dma – bezpośredni dostęp do pamięci DMA o 91x_fmi – interfejs pamięci flash FMI o 91x_gpio – porty wejścia/wyjścia GPIO o 91x_i2c – magistrala I2C o 91x_rtc – zegar czasu rzeczywistego RTC o 91x_scu – zegar o 91x_ssp – magistrala SPI o 91x_tmi – liczniki o 91x_uart – magistrala UART o 91x_vic – kontrola przerwań o 91x_wdg – watchdog o 91x_wiu – przerwania wektoryzowane • inne funkcje realizujące funkcjonalność danego programu Skrócony opis działania programów dla poszczególnych projektów (szczegóły w plikach Readme.txt): • Porty wejścia/wyjścia (GPIO) – generowanie sekwencji błysków diod LD2LD5 podłączonych do pinów 0-3 portu GPIO9. • Watchdog (WDG) – program po resecie układu zapala na pewien czas diodę LD3, a następnie ją gasi. Zadaniem watchdoga jest ciągłe resetowanie układu w odstępach 1 sekundowych. Po wgraniu programu do układu opcja Run jest nieaktywna. Aby ją aktywować naleŜy zresetować układ klikając Reset, lub wciskając przycisk Reset na płytce układu. • Przerwania (WIU) – dla kaŜdego zbocza opadającego sygnału wymuszającego przerwanie sygnał dla diody LD2 zmienia swój stan. Sygnałem wymuszającym przerwanie są przyciski na płycie układu (KEY, TAMPER) oraz Joystick. • Zegar czasu rzeczywistego (RTC) – po zadanym czasie (5 sekund) generowany jest alarm w postaci nieskończonej sekwencji błysków diody LD4. 10 • • • Magistrala CAN (CAN) – program testuje w pętli nieskończonej magistralę CAN wystawiajać paczkę danych, która jest następnie odbierana z powrotem. W przypadku prawidłowej pracy diody LD3 (odbiór danych nie wykorzystujący przerwań) i LD4 (odbiór danych z wykorzystaniem przerwania z pliku 91x_it.c) powinny sięzapalć Interfejs UART (UART) – transmisja danych z wykorzystaniem interfejsu RS232 (parametry konfiguracji poru komputera PC w pliku Readme.txt). Po resecie układu do terminala na komputerze PC wysyłany jest napis „Aplikacje Systemow Wbudowanych”. Teraz układ czeka na dane z terminala komputera PC. Gromadzi je w buforze (rozmiar 255 znaków) do czasu wciśnięcia przycisku Enter na klawiaturze, po czym odsyła do terminalna komputera PC zawartość bufora. Wyświetlacz graficzny (LCD) – po resecie układu wyświetlana jest animacja, a następnie pojawia się napis „Aplikacje Systemów Wbudowanych”. NajwaŜniejsze funkcje, to: o LCD_Init – inicjalizacja wyświetlacza o LCD_Picture – wyświetlenie grafiki o rozmiarze 122x32 z tablicy o rozmiarze 488 bajtów (4 x 122 linie wyświetlacza). Do wygenerowania danych do wyświetlenia moŜna wykorzystać aplikację AsystentLCD. o LCD_PictureSC – wyświetlenie grafiki o rozmiarze 122x32 z tablicy o rozmiarze 488 bajtów (4 x 122 linie wyświetlacza) przesuniętą w prawo o zadaną liczbę pikseli. Do wygenerowania danych do wyświetlenia moŜna wykorzystać aplikację AsystentLCD. 11 Dodatek B Tworzenie nowego projektu dla mikrokontrolerów z rdzeniem ARM w środowisku Ride7 z dodatkiem Rkit-ARM Utworzenie nowego projektu dla układu STR910-Eval z mikrokontrolerem STR912F w środowisku Ride7 z dodatkiem Rkit-ARM odbywa się w następujących krokach: • Uruchomienie środowiska Ride7 • Z menu Project wybrać New Project • W nowym oknie (rysunek 9) wybrać właściwy mikrokontroler, podać nazwę projektu oraz jego lokalizację na dysku (d:\lab\...) Rys. 9. Okno tworzenia nowego projektu • Z katalogu d:\lab\STR910-Eval\lib przegrać pliki: o plik main.c z funkcją główną main o plik nagłówkowy 91x_conf.h z definicją nazw rejestrów (moŜna go pozostawić bez zmian, lub przystosować do specyfiki tworzonego projektu) 12 o plik 91x_it.c z implementację funkcji obsługi przerwań (domyślnie wszystkie funkcje obsługi przerwań są puste) o inne pliki z funkcjami biblioteczne wymagane do realizacji projektu (d:\lab\STR910-Eval\lib\include, d:\lab\STR910-Eval\lib\source) • dodać skopiowane pliki do projektu (rysunek 10) Rys. 10. Dodawanie plików do projektu • wybrać plik main.c do edycji i uzupełnić o kod realizujący funkcjonalność tworzonej aplikacji • skompilować projekt, wgrać program do pamięci mikrokontrolera oraz uruchomić go zgodnie z instrukcją z dodatku A 13 Dodatek C Wgrywanie pliku binarnego (.hex) do mikrokontrolera za pomocą środowiska RFlasher7 pamięci Wgranie pliku binarnego z rozszerzeniem .hex do pamięci mikrokontrolera STR912F odbywa się w następujących krokach: • Uruchomienie środowiska RFlasher7 • Z menu Project wybrać New Project • W nowym oknie (rysunek 11) wybrać właściwy mikrokontroler, podać nazwę projektu oraz jego lokalizację na dysku (d:\lab\...) Rys. 11. Okno tworzenia nowego projektu • W oknie memory wybieramy opcje Fill/Save (rysunek 12) 14 Rys. 12. Widok okna memory • Wskazać plik demo.hex (d:\lab\STR910-Eval\) i kliknąć Fill (rysunek 13) - w oknie memory pojawi się zawartość pliku binarnego Rys. 13. Wybór pliku binarnego 15 • Wyczyścić pamięć mikrokontrolera za pomocą komendy Erase, a następnie zaprogramować mikrokontroler za pomocą komendy Program (rysunek 14) Rys. 14. Lokalizacja komend Erase i Program 16