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 \STR910- Eval\Examples. Przeanalizować kod (wskazane wprowadzić własne poprawki), skompilować projekt, wgrać do układu ewaluacyjnego STR910- Eval 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\str910- Eval) 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 Rkit- ARM 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 LD2- LD5 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 pamięci mikrokontrolera za pomocą środowiska RFlasher7 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