praca w zintegrowanym Środowisku …pmik.imio.pw.edu.pl/pliki/mat_iwanowicz/projekt.pdf ·...

13
PRACA W ZINTEGROWANYM ŚRODOWISKU URUCHOMIENIOWYM - IDE Keil μVision 2

Upload: phambao

Post on 27-Jul-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

PRACA W ZINTEGROWANYM ŚRODOWISKU URUCHOMIENIOWYM - IDE

Keil μVision 2

1. Środowisko IDE - KEIL

µVision firmy KEIL jest popularnym zintegrowanym środowiskiem programistycznym IDE. Składa się na nie: menadżer projektu, edytor kodu źródłowego, debugger programu oraz programator pamięci Flash mikrokontrolera. Niniejszy dokument opisuje sposób pracy ze środowiskiem µVision i płytą dydaktyczną EXTB.

Otwarte okno programu KEIL przedstawiono na rys. 1.

Rys. 1. Otwarte okno programu Keil.

W pliku projektowym przechowywane są wszelkie informacje związane z ustawieniami oraz konfiguracją przeznaczone dla: kompilatora, asemblera, linkera, debuggera oraz programatora pamięci Flash. Zakładka Project zawiera wszystkie opcje menadżera projektu, spośród których mamy następujące możliwości:

- tworzenie nowego projektu – New Project,

- otwieranie projektu – Open Project,

- opcje projektu takie jak np.: wybór układu mikrokontrolera, sposobu podłączenia układu docelowego do komputera, czy nazwy projektu.

2. Tworzenie nowego projektu

W celu utworzenia nowego projektu należy wybrać:

Project - New Project - następnie należy podać ścieżkę dostępu oraz nazwę projektu, należy przy tym pamiętać, iż jedynym miejscem gdzie można umieszczać projekty jest katalog danego zespołu (w katalogu c:\ Documents and Settings). Zaleca się, aby był to pusty katalog oddzielny dla każdego laboratorium (ćwiczenia).

Podać typ mikrokontrolera – w naszym przypadku jest to układ 80C51F060 firmy Silicon Laboratories, zgodnie z rys.2. Nie należy zgadzać się na automatyczne dodawanie pliku konfiguracji do projektu.

Rys.2. Wybór mikrokontroler.

Następnie ustawiamy opcje zadania (należy zaznaczyć myszką nasze zadanie – Target 1):

Project - Options for Target ‘MAIN’ - zakładka Debug zgodnie z rys.3., na którym okno podzielone jest na dwie części: lewa dla symulatora (opis w dalszej części) oraz prawa dla debuggera.

Należy zaznaczyć Use: w prawej części okna, następnie wybrać typ adaptera – Silicon Laboratories C8051FXXX - (A), potem wybrać Settings - (B) i określić typ połączenia z adapterem – USB Debug adapter.

Należy zaznaczyć jeszcze opcję Load Application at Startup, aby program był automatycznie ładowany do pamięci mikrokontrolera na początku uruchamiania.

Rys. 3. Okno opcji zadania (zakładka Debug).

Następnie powinniśmy utworzyć nowy plik źródłowy naszego programu:

File - New lub Ctrl + N. Plik powinien mieć rozszerzenie .A51 zgodnie z rys. 4.

A B

Rys.4. Zapisanie pliku źródłowego.

Następnie należy dołączyć utworzony plik źródłowy do projektu. W tym celu należy wybrać:

Project - Targets, Groups, Files, zgodnie z rys. 5., a później wybrać zakładkę Groups/Add Files. W oknie pokazanym na rys. 6. zaznaczyć Source Group 1 i wybrać opcję Add Files to Group. Teraz należy wybrać pliki asemblera Asm Source File (*.s*,*,src,*.a*) i znaleźć wcześniej utworzony plik *.A51.

Możliwa jest zmiana nazwy zadania (Target) oraz grupy (Source Group 1). Dokonuje się jej przez zaznaczenie wybranego obiektu w oknie Targets Groups Files, wybranie opcji Remove, a następnie dodanie nowej nazwy (Add). Operację tę należy wykonać przed dodaniem plików źródłowych, gdyż w przeciwnym razie trzeba je będzie dodać po raz kolejny.

Rys. 5. Dołączanie pliku źródłowego - 1. Rys. 6. Dołączanie pliku źródłowego - 2

Przykładowy projekt po zmianie nazwy zadania i grupy przedstawiono na rys. 7:

ZadanieGrupa

PlikBiblioteka

Rys. 7. Przykładowy projekt.

Po napisaniu pliku źródłowego przystępujemy do kompilacji wykorzystując przyciski z paska rys. 8.

- Kompilacja - Budowa projektu- Przebudowa projektu- Zakończenie budowy projektu- Załadowanie programu do pamięci mikrokontrolera- Opcje projektu

- Wybór aktywnego programu

Rys. 8. Opis paska projektu.

3. Uruchamianie programu

Ostatnim etapem pracy nad projektem jest uruchomienie programu – debugging. W tym celu wybieramy opcję:

Debug - Start/Stop Debug Session

W tym momencie nasz program jest ładowany do pamięci mikrokontrolera i przechodzimy do uruchamiania wykorzystując przyciski z rys. 9:

- Reset mikrokontrolera- Uruchomienie programu- Zatrzymanie programu- Krok programu- Krok na jednym poziomie hierarchii- Praca ciągła- Skok do wskazanego miejsca - Wskazanie aktualnie miejsca w programie

Rys.9. Opis paska debuggera.

W trybie tym mikrokontroler podłączony jest do komputera za pomocą adaptera USB <-> JTAG, zgodnie z rys. 10.

Rys. 10. Sposób podłączenia układu docelowego z komputerem.

Aby uruchomić program należy wybrać:

Debug - RUN

Użytkownik powinien sprawdzić czy program rozpoczyna się od adresu 0000H. Jeżeli nie, należy wyjść z opcji Debug i ponownie do niej wejść.

Aby zatrzymać program należy wybrać - Stop Running, w celu naniesienia poprawek - edycji kodu źródłowego, należy wyjść z trybu uruchamiania:

Debug – Start/Stop Debug Session.

4. Usuwanie błędów

Aby ułatwić usuwanie błędów programu środowisko umożliwia wprowadzenie pułapek w dowolnym miejscu programu

Debug - Insert/Remove Breakpoint

Wprowadzenie pułapki oznacza, że praca programu zostanie zatrzymana ilekroć pętla programu będzie przechodziła przez miejsce, w którym wprowadziliśmy pułapkę. Możliwe są jeszcze następujące opcje:

- Enable/Disable Breakpoint, włączenie/wyłączenie uprzednio wprowadzonej pułapki;

- Disable All Breakpoints, wyłączenie wszystkich pułapek;

- Kill All Breakpoints, usunięcie wszystkich pułapek.

5. Uruchamianie programu

Dzięki zintegrowaniu w mikrokontrolerze sprzętowego interfejsu JTAG, możliwe jest sterowanie pracą mikrokontrolera za pomocą komputera, zgodnie z rys.10. Do dyspozycji mamy następujące funkcjonalności:

- sterowanie pracą programu tj. praca krokowa, obsługa pułapek,

- podgląd zawartości wszystkich rodzajów pamięci w systemie uruchomieniowym (wewnętrzne pamięci danych i programu mikrokontrolera, a także zewnętrzne pamięci danych i programu, o ile istnieją)

- podgląd zawartości rejestrów sterujących pracą poszczególnych układów peryferyjnych zintegrowanych w mikrokontrolerze.

Podczas uruchamiania programu mamy dostęp do podstawowych rejestrów, zgodnie z rys.11. prócz tego możemy obejrzeć zawartość pamięci:

View - Memory Window

Następnie w okienku Address należy wpisać adres początku interesującego nas obszaru pamięci zgodnie z rys.12. Do dyspozycji mamy trzy obszary pamięci:

C:0xAAAA ;gdzie AAAAh - jest adresem w pamięci programu

X:0xBBBB ;gdzie BBBBh - jest adresem w zewnętrznej pamięci danych (XDATA)

D:0xCC ;gdzie CCh - jest adresem w wewnętrznej pamięci danych mikrokontrolera.

Rys. 12. Zawartość podstawowych rejestrów mikrokontrolera.

Rys.13. Okno podglądu zawartości pamięci.

Prócz tego mamy możliwość także podglądu zawartości rejestrów sterującymi peryferiami mikrokontrolera, takimi jak np.: porty, liczniki, port szeregowy, przetwornik analogowo-cyfrowy i inne, na rys.13. zamieszczono przykładowe okna:

Peripherial – Ports, UART, DAC itd.

Rys. 13. Przykładowe okna pokazujące zawartość rejestrów sterujących peryferiami mikrokontrolera.

6. Symulacja

6.1. Symulator - KEIL Środowisko IDE KEIL posiada zintegrowany symulator, dzięki któremu możliwe jest lepsze przygotowanie się do zajęć laboratoryjnych. Niestety symulator rozszerzonej wersji mikrokontrolera C8051F060 (dostępnej na laboratorium) nie obsługuje peryferiów, dlatego symulacje należy przeprowadzać dla klasycznego układu – 8051.

Aby rozpocząć symulacje należy stworzyć projekt, analogicznie jak to opisano powyżej, z tą różnicą iż wybieramy klasyczny układ mikrokontrolera 8051 np. 8051AH firmy INTEL.

Kolejną różnicą w porównaniu z wcześniejszym opisem jest konieczność wybrania symulatora:

Project - Option for Target ‘MAIN’ zakładka Debug, zgodnie z rys. 14.

Rys. 14. Włączenie symulatora.

Dalsze postępowanie jest analogiczne z tą różnicą, iż po przejściu w tryb – Debug:

Debug - Start/Stop Debug Session, włączamy symulator.

Zawartość wszystkich rejestrów jest obliczana przez komputer, a nie odczytywana z układu docelowego. Podczas symulacji mamy do dyspozycji wszystkie funkcjonalności debuggera: praca krokowa oraz podglądanie zawartości pamięci. Mamy możliwość obejrzenia zawartości:

- podstawowych rejestrów mikrokontrolera (okienko z lewej strony rys.11.),

- pamięci systemu uruchomieniowego (rys.12.),

- oraz rejestrów sterujących peryferiami.

W naszym przypadku podczas symulacji korzystamy z klasycznego układu 8051 natomiast na laboratorium uruchamiamy programy na rozbudowanej wersji – C8051F060. Z tego powodu nie wszystkie peryferia są dostępne w trybie symulatora. Podczas symulacji mamy dostęp do rejestrów odpowiedzialnych za: porty mikrokontrolera, port szeregowy, liczniki oraz system przerwań, zgodnie z rys.15. Dodatkowe funkcjonalności można uzyskać instalując wtyczki (pliki *.DLL).

Rys. 15. Okienka pokazujące zawartość rejestrów sterujących peryferiami mikrokontrolera.

6.2. Symulator - Proteus

Symulator zintegrowany w środowisku KEIL jest dość prosty w obsłudze, ale za to ma stosunkowo ograniczone możliwości. Wykrywanie błędów polega na odczycie zawartości poszczególnych rejestrów podczas pracy krokowej programu. Aby umożliwić symulowanie programów bardziej złożonych, zastosować należy symulator Proteus.

Proteus jest środowiskiem projektowym, z pomocą którego można przejść poszczególne etapy projektowania poczynając od zaprojektowania schematu poprzez symulację do zaprojektowania obwodu PCB czy jego wizualizację 3D. Możliwe jest przykładowo połączenie wyświetlacza graficznego LCD (z różnymi kontrolerami, np. T6963C czy choćby z telefonu komórkowego NOKIA 7110) do mikrokontrolera (MCS’51, AVR, ARM itd.) i oprogramowanie go, a wynik pracy programu będzie widoczny na wirtualnym wyświetlaczu. W naszym przypadku interesujące będzie zaprojektowanie schematu systemu mikroprocesorowego oraz jego symulacja. Do symulacji zachowania się badanego układu niezbędne jest połączenie obu programów KEIL i Proteus, zgodnie z rys. 16., tak aby debbuger KEILa mógł kontrolować symulator Proteusa.

Rys. 16. Połączenie KEIL - Proteus.

Pobieramy oprogramowanie:

Proteus:

http://www.labcenter.co.uk/download/prodemo_download.cfm#professional

plik - PRODEMO.EXE (ok. 42MB) oraz Proteus VSM Keil Debugger Driver, dzięki któremu uzyskamy połączenie, KEIL – Proteus (rys. 16.):

http://www.labcenter.co.uk/support/vdmkeil.cfm

plik - vdmagdi.exe (ok.1,3MB). Instalujemy program Proteus, a następnie VSM Keil Driver. Wspólnym mianownikiem łączącym dwa programy KEIL i Proteus jest plik - VDM51.dll. Należy skopiować powyższą bibliotekę z C:\Keil\C51\BIN\ do C:\Program Files\Labcenter Electronics\Proteus 7 Demonstration\MODELS\.

Przedmiotem niniejszego opracowania nie jest praca z programem Proteus, ale jedynie jego połączenie z środowiskiem KEIL. Dlatego w celu dokładnego zapoznania się z jego obsługą należy przeczytać dokumentację producenta.

Uruchamiamy środowisko KEIL i tworzymy nowy projekt, podobnie jak poprzednio. Jedyna różnica dotyczy opcji projektu:

Project - Options for Target zakładka Debug, zgodnie z rys. 17.

Rys. 17. Opcje Debug przy pracy z programem Proteus.

Wybieramy – Proteus VSM Simulator. Następnie tworzymy nowy plik i piszemy kod źródłowy naszego programu, który następnie kompilujemy.

Po uruchomieniu programu Proteus należy narysować schemat elektryczny układu, który chcemy zasymulować oraz dodać plik źródłowy dla mikrokontrolera. Jest to oczywiście że ten sam plik, który załadowaliśmy do debuggera KEIL. Najlepiej aby projekt KEIL i Proteus znajdowały się w tym samym katalogu. Aby debugger KEIL mógł kontrolować pracę symulatora Proteus należy w programie Proteus zaznaczyć opcję:

Debug - Use Remote Debug Monitor, zgodnie z rys. 18.

Rys. 18. Opcje – Debug, programu Proteus.

Podczas symulacji stosujemy zasadę: sterowanie pracą odbywa się z poziomu debuggera KEIL, natomiast wyniki symulacji są widoczne w symulatorze Proteus. Symulator ten wyposażono w dość szeroki wachlarz narzędzi kontrolnych: analizator stanów logicznych, oscyloskop, mierniki czy choćby graficzny wyświetlacz LCD.

Połączenie KEIL – Proteus zostanie przedstawione z wykorzystaniem przykładów znajdujących się:

C:\Program Files\Labcenter Electronics\Proteus 7 Demonstration\SAMPLES\VSM for 8051\

Rys. 19. i 20. przedstawiają pracę nad projektem: 8051 Memory i 8051 LCD Driver.

Rys. 19. Połączenie KEIL – Proteus na przykładzie projektu - 8051 Memory.

Rys. 20. Połączenie KEIL – Proteus na przykładzie projektu - 8051 LCD Driver.

Pewnym ograniczeniem jest jedynie fakt, iż wszelkie symulacje odbywają się z wykorzystaniem klasycznego mikrokontrolera MCS’51, natomiast na laboratorium mamy rozszerzoną wersję – C8051F060.

7. Linki

• Środowisko IDE firmy KEIL można pobrać ze strony producenta po uprzednim wypełnieniu ankiety ze strony:

https://www.keil.com/demo/eval/c51.htm

• Dodatkowe informacje można zaczerpnąć ze strony:

http://www.keil.com/dd/chip/3568.htm

• Nakładkę na KEILa przygotowaną przez producenta mikrokontrolera – Silabs, można pobrać ze strony:

http://www.silabs.com/tgwWebApp/public/web_content/products/Microcontrollers/en/mcu_keildriver.htm

• Dodatkowe wtyczki (pliki *.DLL) dla symulatora KEILa można pobrać ze strony:

http://www.c51.de/c51.de/Dateien/uVision2DLLs.php?Spr=EN

• Program symulatora Proteus można pobrać z:

http://www.labcenter.co.uk/