• Język C w programowaniu urządzeń. Praktyczna nauka tworzenia kodu dla systemów wbudowanych

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.

Podtytuł Język C w programowaniu urządzeń. Praktyczna nauka tworzenia kodu dla systemów wbudowanych
Tytuł oryginalny Bare Metal C: Embedded Programming for the Real World
Autor Stephen Oualline
Tłumaczenie Krzysztof Bąbol, Andrzej Watrak
Rok wydania 2023
Oprawa Miękka
Format 165x228
Stron 328
Wydawnictwo Helion
87.00 59.16
Do końca promocji pozostało:
Najniższa cena z 30 dni przed promocją:
65.25
szt. Do przechowalni
Wysyłka w ciągu 24 godziny
ISBN 978-83-832-2085-7
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

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
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
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
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
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
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

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
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
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

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

Steve Oualline od ponad 50 lat pisze niezawodne, prawie bezbłędne programy na systemy wbudowane. Zdobył tytuł magistra inżyniera na Uniwersytecie Południowej Kalifornii i napisał wiele książek wydanych przez O'Reilly i No Starch Press. Obecnie jest wolontariuszem w Muzeum Kolejnictwa Południowej Kalifornii, w którym jego ostatnim przedsięwzięciem było odpluskwianie komputerowego kontrolera systemu sygnalizacji świetlnej Acme (w jego wnętrzu zbudowały sobie gniazdo mrówki i trzeba je było usunąć). Adres jego strony internetowej to http://oualline.com.

Nie ma jeszcze komentarzy ani ocen dla tego produktu.

Polub nas na Facebooku