Programowanie mikrokontrolerów

EiT, spec. SMiUP, sem. VII


Wykład (30 h)

I. Wprowadzenie do języka C. Podstawowe założenia i główne zalety
II. Przekształcanie programu źródłowego w program wynikowy
1. Preprocessing. 2. Kompilacja. 3. Konsolidacja.
III. Podstawy obsługi środowiska GNU-GCC
IV. Struktura programu w języku C
1. Funkcja main( ). 2. Deklaracje zmiennych. Wbudowane typy danych. 3. Wywoływanie funkcji. 4. Operatory arytmetyczne, logiczne i bitowe. 5. Instrukcje warunkowe. 6. Pętle.
V. Preprocesor
1. Makrodefinicje. 2. Kompilacja warunkowa. 3. Makra parametryzowane.
VI. Funkcje
1. Definiowanie i wywoływanie funkcji. 2. Zmienne lokalne. 3. Przekazywanie parametrów funkcji przez wartość. 4. Budowa ramki stosu na przykładzie procesorów Intel x86 i ColdFire. 5. Rekurencyjne wywoływanie funkcji.
VII. Wskaźniki
1. Deklarowanie i używanie wskaźników do zmiennych. 2. Tablice. 3. Wskaźniki do wskaźników. 4. Wskaźniki do funkcji. 5. Przekazywanie parametrów funkcji przez wskaźnik. 6. Funkcje zwracające wskaźniki.
VIII. Zmienne statyczne i globalne.
IX. Dynamiczna alokacja pamięci
1. Funkcje malloc( ), free( ) i realloc( ). 2. Dynamiczna alokacja pojedynczych zmiennych. 3. Dynamiczna alokacja tablic jedno- i wielowymiarowych.
X. Struktury i unie
1. Definiowanie struktur w języku C. 2. Deklarowanie konketyzacji struktur. 3. Odwoływanie się do pól struktury przez nazwę oraz przez wskaźnik do struktury. 4. Dynamiczna alokacja struktur. 5. Różnice pomiędzy strukturą a unią.
XI. Kompilacja wsadowa z wykorzystaniem programu make
1. Plik makefile i jego ogólna struktura (reguły, polecenia). 2. Tworzenie programów wielomodułowych z wykorzystaniem programu make. 3. Przekazywanie parametrów kompilacji i konsolidacji. 4. Definiowanie domyślnych reguł kompilacji dla poszczególnych rozszerzeń plików.
XII. Narzędzia służące do analizowania i uruchamiania programów w środowisku GNU
1. Korzystanie z debuggera gdb do uruchamiania programów i lokalizowania błędów. 2. Korzystanie z narzędzi nm i objdump do analizy i diagnostyki programów.
XIII. Biblioteki języka C (na przykładzie systemu operacyjnego Linux)
1. Biblioteki statyczne i dynamiczne. 2. Kompilacja bibliotek i ich konsolidacja z programem. 3. Korzystanie z narzędzia ar do tworzenia bibliotek oraz modyfikacji bibliotek
XIV. Kompilacja skrośna na przykładzie procesora ColdFire
1. Struktura pliku makefile dla kompilacji skrośnej. 2. Skrypty konsolidatora dla kompilacji skrośnej. 3. Zdalne i skrośne uruchamianie i debuggowanie programów przy pomocy debuggera gdb w wersji skrośnej na procesor ColdFire.
XV. Programowanie mikrokontrolerów w języku C (na przykładzie ColdFire)
1. Odczyt i zapis danych do/z rejestrów procesora zamapowanych na pamięć. Używanie dyrektywy volatile do zablokowania optymalizacji tych zapisów i odczytów. 2. Używanie wstawek asemblerowych do odczytywania z bądź zapisywania do rejestrów, które nie są zamapowane na pamięć. 3. Obsługa urządzeń wbudowanych w mikrokontroler ColdFire (portu równoległego, interfejsu szeregowego SCI, timera).
XVI. Obsługa przerwań w procesorze Freescale ColdFire z poziomu języka C, w środowisku GNU
1. Schemat obsługi przerwań na przykładzie procesora ColdFire. 2. Wektory przerwań. Zmiana lokalizacji tablicy wektorów przerwań. Modyfikacja rejestru bazowego VBR za pomocą wstawki asemblerowej (instrukcja MOVEC). 3. Specyfika procedur przerwania. Dodatkowe wymagania z tym związane. 4. Blokowanie użycia określonych rejestrów procesora przez procedurę przerwania za pomocą opcji kompilatora -ffixed-%ax. 5. Zabezpieczanie na stosie zawartości rejestrów używanych przez procedurę przerwania przy pomocy opcji kompilatora -fcall-saved-%ax lub wstawek asemblerowych (instrukcja asemblera MOVEM). 6. Blokowanie optymalizacji dostępu do danych, które mogą zostać zmodyfikowane przez procedurę obsługi przerwania w trakcie działania innej funkcji, przy pomocy dyrektywy volatile. 7. Obsługa przerwania na przykładzie interfejsu SCI. 8. Potencjalne problemy związane z jednoczesnym, współbieżnym dostępem do tych samych danych. Sposoby unikania tych problemów.
XVII. Struktura plików binarnych. Formaty plików wykonywalnych: S-record, COFF i ELF

Materiały pomocnicze do wykładu