Język C w programowaniu urządzeń. Praktyczna nauka tworzenia kodu dla systemów wbudowanych - ebook
Język C w programowaniu urządzeń. Praktyczna nauka tworzenia kodu dla systemów wbudowanych - ebook
C to najczęściej wybierany język do programowania systemów wbudowanych. Pozwala precyzyjnie sterować kontrolerami zawierającymi system w chipie (ang. system on a chip, SOC), które wydają się być wszędzie: od telefonów przez samochody do "inteligentnych" żarówek.
Poznanie języka to jednak dopiero połowa sukcesu. Musisz też wiedzieć, jakie operacje w systemie wykonuje ten język. Do zbadania, jak działa kompilator i co dzieje się za kulisami, w książce tej wykorzystywana jest płytka rozwojowa Nucleo z niewielkim, tanim mikroukładem ARM. Dowiesz się, jak pracować z systemem, który ma ograniczoną ilość pamięci i funkcji wejścia/wyjścia, ale jego moc wystarcza do przeprowadzania złożonych operacji.
Z książki Język C bezpośrednio na sprzęcie dowiesz się:
- o podstawach języka C;
- czym jest liczba (jeśli przyjrzeć się temu dokładniej, nie jest to takie proste);
- jakie kroki wykonuje kompilator, by przekształcić kod w program wykonywalny;
- jak pisać kod, który ma bezpośredni dostęp do systemu wejścia/wyjścia;
- jak pisać procedurę obsługi przerwania - i jak jej nie pisać;
- Jak programować na "wielkim żelastwie ", w tym: jak korzystać ze sterty, buforowanego systemu wejścia/wyjścia, liczb zmiennoprzecinkowych i innych funkcji wielkich komputerów;
Jeśli chcesz się nauczyć języka C albo już go znasz i zamierzasz programować systemy wbudowane, książka Język C bezpośrednio na sprzęcie pokaże Ci właściwą drogę.
Wymagania: płytka rozwojowa Nucleo z mikrokontrolerem ARM
Spis treści
Wprowadzenie
I. Programowanie systemów wbudowanych
- 1. Witaj, świecie
- Instalowanie GCC
- Pobieranie programu System Workbench for STM32
- Pierwszy program
- Kompilowanie programu
- Popełnianie błędów
- Zrozumienie działania programu
- Dodawanie komentarzy
- Ulepszanie programu i procesu jego budowania
- Program "make"
- Flagi kompilatora
- Jak kompilator działa za kulisami
- Preprocesor
- Kompilator
- Asembler
- Konsolidator
- Dodawanie reguł do pliku Makefile
- Podsumowanie
- Pytania
- 2. Prezentacja zintegrowanego środowiska programistycznego
- Korzystanie z programu System Workbench for STM32
- Uruchamianie środowiska IDE
- Tworzenie programu "Witaj, świecie"
- Debugowanie programu
- Co zrobiło środowisko IDE
- Importowanie przykładowych programów opisanych w tej książce
- Podsumowanie
- Problemy programistyczne
- Pytania
- Korzystanie z programu System Workbench for STM32
- 3. Programowanie mikrokontrolera
- Płytka rozwojowa NUCLEO-F030R8
- Programowanie i debugowanie na płytce
- Konfigurowanie płytki
- Konfigurowanie projektu dla systemu wbudowanego
- Twój pierwszy program dla systemu wbudowanego
- Inicjacja sprzętu
- Programowanie pinu GPIO
- Przełączanie diody LED
- Budowanie kompletnego programu
- Analiza procesu budowania
- Analiza plików projektu
- Debugowanie aplikacji
- Wykonywanie programu krok po kroku
- Podsumowanie
- Problemy programistyczne
- Pytania
- Płytka rozwojowa NUCLEO-F030R8
- 4. Liczby i zmienne
- Praca z liczbami całkowitymi
- Deklarowanie zmiennych do przechowywania liczb całkowitych
- Nadawanie wartości zmiennym
- Inicjowanie zmiennych
- Rozmiary i reprezentacje liczb całkowitych
- Reprezentacje liczb
- Standardowe liczby całkowite
- Typy całkowitoliczbowe bez znaku
- Przepełnienie
- Reprezentacja liczb całkowitych ze znakiem metodą uzupełnień do dwóch
- Skrócone operatory
- Sterowanie mapowanymi w pamięci rejestrami we/wy za pomocą operacji bitowych
- Alternatywa
- Koniunkcja
- Negacja
- Alternatywa wykluczająca
- Przesunięcie
- Definiowanie znaczenia bitów
- Nadawanie wartości dwóm bitom naraz
- Wyłączanie bitu
- Sprawdzanie wartości bitów
- Podsumowanie
- Problemy programistyczne
- Praca z liczbami całkowitymi
- 5. Instrukcje decyzyjne i sterujące
- Instrukcja if
- Instrukcja if/else
- Instrukcje pętli
- Pętla while
- Pętla for
- Używanie przycisku
- Inicjacja
- Wybór układu ze ściąganiem
- Pobieranie stanu przycisku
- Uruchomienie programu
- Sterowanie pętlą
- Instrukcja break
- Instrukcja continue
- Antywzorce
- Pusta pętla while
- Przypisanie w pętli while
- Podsumowanie
- Problemy programistyczne
- 6. Tablice, wskaźniki i łańcuchy
- Tablice
- "Pod maską": wskaźniki
- Arytmetyka tablic i wskaźników
- Przepełnienie tablicy
- Znaki i ich łańcuchy
- Podsumowanie
- Problemy programistyczne
- Tablice
- 7. Zmienne lokalne i procedury
- Zmienne lokalne
- Przesłonięte zmienne
- Procedury
- Ramki stosu
- Rekurencja
- Styl programowania
- Podsumowanie
- Problemy programistyczne
- 8. Złożone typy danych
- Wyliczenia
- Sztuczki preprocesora a wyliczenia
- Struktury
- Struktury w pamięci
- Dostęp do niewyrównanych danych
- Inicjacja struktur
- Przypisywanie struktury
- Wskaźniki do struktur
- Nazewnictwo struktur
- Unie
- Tworzenie własnego typu
- Struktury a programowanie systemów wbudowanych
- typedef
- Wskaźniki do funkcji a dyrektywa typedef
- typedef i struct
- Podsumowanie
- Problemy programistyczne
- 9. Wyjście szeregowe w mikrokontrolerze STM
- Wypisywanie znaków łańcucha jeden po drugim
- Definiowanie własnej funkcji putchar
- Wyjście szeregowe
- Krótka historia komunikacji szeregowej
- Szeregowe "Witaj, świecie!"
- Inicjacja interfejsu UART
- Przesyłanie znaku
- Komunikacja z urządzeniem
- Windows
- Linux i macOS
- Podsumowanie
- Problemy programistyczne
- Wypisywanie znaków łańcucha jeden po drugim
- 10. Przerwania
- Odpytywanie kontra przerwania
- Przerwania w szeregowych operacjach we/wy
- Procedury obsługi przerwań
- Wypisywanie łańcucha za pomocą przerwań
- Szczegóły programu
- Koszmar przerwań
- Zwiększanie prędkości przy użyciu bufora
- Funkcja nadawcza
- Procedura obsługi przerwania
- Cały program
- Problem
- Podsumowanie
- Problemy programistyczne
- 11. Konsolidator
- Zadanie konsolidatora
- Modele pamięci stosowane podczas kompilacji i konsolidacji
- Idealny model języka C
- Sekcje niestandardowe
- Proces konsolidacji
- Symbole definiowane przez konsolidator
- Relokacja i konsolidacja plików obiektowych
- Mapa konsolidatora
- Zaawansowane wykorzystanie konsolidatora
- Pamięć flash jako "trwałe" miejsce składowania
- Wiele elementów konfiguracji
- Przykład adaptacji w "warunkach polowych"
- Uaktualnianie oprogramowania układowego
- Podsumowanie
- Problemy programistyczne
- 12. Preprocesor
- Proste makra
- Makra parametryzowane
- Makra z kodem
- Kompilacja warunkowa
- Gdzie definiowane są symbole
- Symbole w wierszu poleceń
- Symbole predefiniowane
- Pliki dołączane
- Inne dyrektywy preprocesora
- Sztuczki preprocesora
- Podsumowanie
- Problemy programistyczne
- Proste makra
II. Język C na wielkich maszynach
- 13. Pamięć dynamiczna
- Podstawowe operacje przydzielania pamięci ze sterty i wycofywania jej przydziału
- Listy wiązane
- Dodawanie węzła
- Wypisywanie listy wiązanej
- Usuwanie węzła
- Składamy to wszystko razem
- Problemy z pamięcią dynamiczną
- Valgrind i AddressSanitizer z GCC
- Podsumowanie
- Problemy programistyczne
- 14. Buforowane plikowe operacje we/wy
- Funkcja printf
- Wypisywanie tabeli znaków ASCII
- Zapis we wstępnie zdefiniowanych plikach
- Odczyt danych
- Szkodliwa funkcja gets
- Otwieranie plików
- Binarne we/wy
- Kopiowanie pliku
- Buforowanie i opróżnianie
- Zamykanie plików
- Podsumowanie
- Problemy programistyczne
- Funkcja printf
- 15. Argumenty poleceń i podstawowe operacje we/wy
- Argumenty poleceń
- Podstawowe operacje we/wy
- Wykonywanie podstawowych operacji we/wy
- Tryb binarny
- Funkcja ioctl
- Podsumowanie
- Problemy programistyczne
- 16. Liczby zmiennoprzecinkowe
- Czym jest liczba zmiennoprzecinkowa?
- Typy zmiennoprzecinkowe
- Automatyczne konwersje
- Problemy związane z liczbami zmiennoprzecinkowymi
- Błędy zaokrągleń
- Precyzja
- Nieskończoność, wartości nieliczbowe i liczby subnormalne
- Implementacja
- Alternatywne rozwiązania
- Podsumowanie
- Problemy programistyczne
- Czym jest liczba zmiennoprzecinkowa?
- 17. Programowanie modularne
- Proste moduły
- Problemy związane z prostym modułem
- Kompilowanie modułu
- Cechy dobrego modułu
- Przestrzenie nazw
- Biblioteki
- Program ranlib i konsolidacja biblioteki
- Tryb deterministyczny i niedeterministyczny
- Słabe symbole
- Podsumowanie
- Problemy programistyczne
- Proste moduły
Posłowie
- Ucz się dobrze pisać
- Ucz się selektywnie czytać
- Współpraca i twórcze ściąganie
- Przydatne otwarte narzędzia
- Cppcheck
- Doxygen
- Valgrind
- SQLite
- Nie przestawaj się uczyć
Dodatek. Lista kontrolna projektu
- Natywny projekt C
- Projekt STM32 Workbench dla urządzenia wbudowanego
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-8322-086-4 |
Rozmiar pliku: | 7,6 MB |