View
43
Download
0
Category
Preview:
DESCRIPTION
Systemy wbudowane. Wykład nr 7 Programowanie mikrokontrolerów Piotr Bilski. Cechy charakterystyczne programowania mikrokontrolerów. Ściśle związane z architekturą sprzętu Wykorzystanie głównie asemblera, ostatnio również C, C++, Java itp. - PowerPoint PPT Presentation
Citation preview
Systemy wbudowane
Wykład nr 7
Programowanie mikrokontrolerów
Piotr Bilski
Cechy charakterystyczne programowania mikrokontrolerów
• Ściśle związane z architekturą sprzętu
• Wykorzystanie głównie asemblera, ostatnio również C, C++, Java itp.
• Praca w czasie rzeczywistym (Real-Time) wymusza wysoką efektywność programów
• Często stosowane są techniki mieszane – asembler + język wysokiego poziomu
Programowanie w asemblerze• Asembler jest preferowany, gdy:
– Program jest prosty– Brak kompilatora języka wyższego poziomu– Są duże wymagania wobec szybkości i zajętości
pamięci programu
• Zalety asemblera:– Pełna kontrola nad sprzętem (rejestry, stos,
mechanizm przerwań)– Swobodne dysponowanie obszarem pamięci– Program jest szybszy i mniejszy– Dopasowanie programu do wymagań sprzętu
Cykl projektowanie w asemblerzeProjekt
algorytmu
Zapis źródłowy programu
Tłumaczenie
Łączenie i ładowanie
Uruchamianie
Edytor
Asembler
Program łącząco-ładujący
Program śledzący błąd
błąd
błąd
sieć działań
program źródłowy
program wynikowy
dwójkowy obraz pamięci
Schemat projektowania programu
Edytor, asembler, linker (IDE)
mikrokontrolerKomputer PC
Uruchomiony program
Tworzenie programu a pliki
• asm – plik źródłowy (tworzony w dowolnym edytorze)
• obj – plik z programem wynikowym• lst – plik z raportem z wynikami kompilacji
i wydrukiem (listingiem) programu• hex – nieprzemieszczalny program
dwójkowy utworzony w wyniku konsolidacji (łączenia plików .obj i modułów bibliotecznych), twórca - Intel
Format pliku hex
gdzie:• : - idetyfikator początku nowego rekordu• l l – długość pola danych (d) w bajtach• a a a a – adres w pamięci, gdzie należy
umieścić dane (d)• t t – typ rekordu (00 – dane, 01 – koniec pliku)• d d – bajty danych• c c – suma kontrolna
: l l a a a a t t [ d d .. d ] c c
Plik zawiera rekordy o stałym formacie:
Asemblery i makroasemblery
• Oba rodzaje programów mają identyczne przeznaczenie, ale makroasemblery są bardziej rozbudowane
• Zaawansowane operacje: asemblacja warunkowa i makrodefinicje
• Istotna jest podstawa zapisu danych:– Motorola preferuje zapis szesnastkowy– Intel preferuje zapis dziesiętny
Kompilacja warunkowa
• Dotyczy fragmentów kodu, które mają być tłumaczone warunkowo oraz postaci raportu kompilacji
• Przykład:
$ IF (warunek)
(tekst kodu tłumaczonego warunkowo)
$ ELSEIF (inny warunek)
(tekst kodu tłumaczonego, gdy warunek nie jest spełniony, a inny warunek - tak)
$ ENDIF
Makrodefinicje
• Jest to zestaw instrukcji wywoływanych poprzez nazwę etykiety:
DODAJ MACRO ARG1, ARG2MOV A,#ARG1ADD A,#ARG2ENDM
• Makrodefinicje powodują skopiowanie kodu, który zastępują w każde miejsce w kodzie
Wady i zalety makrodefinicji
• Makrodefinicje – działają szybciej, niż procedury– Zajmują więcej miejsca, niż procedury– Poprawiają czytelność programu– Mogą występować w postaci zagnieżdżonej– Przykłady: CASM (Motorola), A51 (Intel)
Wykorzystanie programów asemblerowych
• Testowanie układów elektronicznych
• Komunikacja z układami wykonawczymi przez port szeregowy UART
• Sterowanie układami cyfrowymi (wyświetlacze) i analogowymi
• Generacja sygnałów o zadanych parametrach
Programowanie w języku C
• Kompilatory języka C dla mikrokontrolerów są produkowane przez wiele firm (Archimedes, Tasking, Franklin, itp.)
• Problemy ze kompatybilnością – częściowa zgodność z ANSI C
• Kompilatory są skrośne (cross-compilers), działają na komputerze PC, a produkują kod wynikowy dla mikrokontrolera
Cechy kompilatorów C dla mikrokontrolerów
• Obecność typów danych zgodnych z ANSI C, w tym związanych z mikrokontrolerami (bit, sbit, sfr)
• Implementacja różnych modeli pamięci (tiny, small, compact, medium, large)
• Dostęp do rejestrów SFR i GPR• Obecność wskaźników o długości zależnej
od typu pamięci• Optymalizacja kodu wynikowego
Cechy programowania w C mikrokontrolerów
• Konieczna znajomość niskopoziomowych szczegółów budowy mikrokontrolera
• Program w C zawiera wiele instrukcji przypisania (pojedyncze bity i rejestry), niewiele w nich złożonych struktur danych
• Program w C może mieć podobną liczbę linii kodu, co program w asemblerze
• Większe programy w C są dużo tańsze od asemblerowych odpowiedników
Uruchamianie programów
• Modułowa budowa mikrokontrolerów wymusza stosowanie specjalizowanych narzędzi do śledzenia stanu systemu (rejestry SFR)
• Praca w czasie rzeczywistym wymaga użycia narzędzi monitorujących nie naruszających ograniczeń czasowych
• Pozostałe wymagania analogiczne, jak w przypadku tradycyjnych systemów
Narzędzia wspomagające uruchamianie programów
• Monitory programowe• Programy śledzące (debuggers)• Symulatory• Analizatory stanów logicznych• Emulatory sprzętowe (In-Circuit Emulators)• Zintegrowane systemy projektowo-
diagnostyczne (IDE)• Analizatory efektywności pracy systemu • Programatory wbudowanych i zewnętrznych
pamięci typu PROM• Asemblery, kompilatory, linkery
Monitory i programy śledzące
• Najprostsze i najtańsze
• Monitory pracują w pamięci mikrokontrolera, debuggery w pamięci komputera
• Możliwe rozwiązanie hybrydowe (części programu są ulokowane w obu urządzeniach)
Hybrydowa organizacja systemu uruchomieniowego
debugger Monitor (ROM)
UART (RS232C)
Symulatory
• Służą do śledzenia programu mikrokontrolera na komputerze ogólnego przeznaczenia
• Naśladują zachowanie systemu z uwzględnieniem zawartości pamięci, rejestrów, przerwań itp.
• Brak możliwości testowania współpracy systemu i modułów zewnętrznych
Przykład symulatora – ChipView-X51
• Platforma: Windows
• Zgodny z Turbo Debuggerem Borlanda
• Symulacja RTOS
• Zawiera High Performance Simulation Engine
Emulatory sprzętowe
• Najbardziej zaawansowane i najdroższe
• Zawierają sondę o wyprowadzeniach identycznych z podstawką mikrokontrolera
• Umożliwiają pełne testowanie systemu
• Sterowanie z komputera PC
Schemat emulatora
uP port
RAM
ROM (monitor)
Testowany system
Gniazdo mikroprocesora
Sonda emulatora
RS-232
Emulator
Edytor
Asembler
Kompilator C
Linker
Programy sterujące
Komputer
NMI
Cechy emulatorów
• Możliwość zamiany zasobów testowanego systemu z odpowiadającymi im zasobami emulatora (mapping)
• Możliwość testowania systemu w czasie rzeczywistym
• Praca w trybie ciągłym lub krokowym• Podgląd mapy pamięci i rejestrów• Wbudowane analizatory stanów
logicznych
Zaawansowane emulatory
• Obecność tylko pamięci RAM
• Dwie niezależne szyny adresowe
• Możliwość jednoczesnej pracy emulatora i komputera PC
• Ograniczona rola przerwań
Schemat emulatora zaawansowanego
uP RAM
Testowany system
Gniazdo mikroprocesora
Sonda emulatora
Dane i adresy
Emulator
Edytor
Asembler
Kompilator C
Linker
Programy sterujące
Komputer
NMI
Analizator stanu szyny
Niektóre polecenia
Problemy emulacji sprzętowej
• Konieczność rejestracji stanu mikrokontrolera (ułatwienie – układy bond-out)
• Mapowanie zasobów (zadanie dla specjalizowanego kontrolera)
• Mapowanie pamięci ROM (układy wyposażone w pamięć RAM)
• Śledzenie pracy w czasie rzeczywistym (układy Background Mode Debugging)
Zintegrowane programy wspomagające uruchamianie
• Pakiety programowe z kompletem modułów do projektowania i testowania:– Asembler– Debugger– Kompilator C– Linker– Moduł zarządzania plikami projektów– Symulator– Monitor wydajności systemu
• Przykład: PathFinder
Recommended