280 likes | 458 Views
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.
E N D
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
Projekt algorytmu Łączenie i ładowanie Zapis źródłowy programu Edytor Tłumaczenie Asembler Program łącząco-ładujący Program śledzący Uruchamianie Cykl projektowanie w asemblerze sieć działań program źródłowy błąd program wynikowy błąd dwójkowyobraz pamięci błąd
Schemat projektowania programu mikrokontroler Komputer PC Uruchomiony program Edytor, asembler, linker (IDE)
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 Plik zawiera rekordy o stałym formacie: 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
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łumczonego 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, ARG2 MOV A,#ARG1 ADD A,#ARG2 ENDM • 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 UART (RS232C) debugger Monitor (ROM)
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 Edytor Asembler Kompilator C Linker Programy sterujące ROM (monitor) Gniazdo mikroprocesora uP port RS-232 Sonda emulatora RAM NMI Testowany system Emulator Komputer
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 Analizator stanu szyny Gniazdo mikroprocesora Edytor Asembler Kompilator C Linker Programy sterujące RAM uP Dane i adresy Sonda emulatora Niektóre polecenia NMI Testowany system Emulator Komputer
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