Деталі електронної книги

Systemy wbudowane. Wzorce projektowe dla twórców oprogramowania. Wydanie II

Systemy wbudowane. Wzorce projektowe dla twórców oprogramowania. Wydanie II

Elecia White

Eлектронна книга

Systemy wbudowane napędzają działanie urządzeń medycznych, samochodów, samolotów, sprzętów AGD, a nawet zabawek dla dzieci. Zazwyczaj pracują w środowiskach o ściśle określonych parametrach sprzętowych i często nie korzystają ze wsparcia systemów operacyjnych. Dlatego ich tworzenie wymaga dużej precyzji, a także odmiennego podejścia do projektowania i implementacji oprogramowania.

Lektura tej książki pozwoli Ci przyswoić kluczowe koncepcje i opanować dobre praktyki, które warto stosować podczas tworzenia kodu. Poznasz zarówno klasyczne wzorce projektowe, jak i te opracowane specjalnie z myślą o systemach wbudowanych. Znajdziesz tu rozdziały poświęcone nowoczesnym technologiom, takim jak systemy współpracujące z internetem rzeczy i czujniki sieciowe, a także omówienie zagadnień związanych z silnikami. Dokładnie zbadasz tematykę debugowania, strategii zarządzania danymi ― i wiele więcej! Dowiesz się, jak budować architekturę urządzenia z uwzględnieniem procesora, a nie systemu operacyjnego. Zapoznasz się również z technikami rozwiązywania problemów sprzętowych, modyfikowania projektów i definiowania wymagań produkcyjnych.

Najciekawsze zagadnienia:

  • optymalizacja systemu pod kątem kosztów i wydajności
  • zapewnianie niezawodności w środowisku o ograniczonych zasobach
  • czujniki, wyświetlacze, silniki i inne urządzenia wejścia-wyjścia
  • redukcja zużycia pamięci RAM, przestrzeni kodu, cykli procesora i energii
  • projektowanie systemów wbudowanych współdziałających z internetem rzeczy i czujnikami sieciowymi

Dzięki książce zorientujesz się w zawiłościach procesów i wzorców budowy oprogramowania wbudowanego!

Miro Samek, znawca systemów wbudowanych, autor książek i nauczyciel

Przedmowa

Rozdział 1. Wprowadzenie

  • Tworzenie systemów wbudowanych
    • Kompilatory i języki
    • Debugowanie
    • Ograniczenia zasobów
    • Zasady radzenia sobie z tymi problemami
  • Prototypy i płytki dla makerów
  • Dalsza lektura

Rozdział 2. Tworzenie architektury systemu

  • Pierwsze kroki
  • Tworzenie diagramów systemu
    • Diagram kontekstowy
    • Diagram blokowy
    • Organigram
    • Diagram warstwowy
  • Projektowanie pod kątem zmian
    • Enkapsulacja modułów
    • Delegowanie zadań
    • Interfejs sterownika: open, close, read, write, ioctl
    • Wzorzec adaptera
  • Tworzenie interfejsów
    • Przykład: interfejs rejestrowania zdarzeń
  • Zabawa w piaskownicy
  • Z powrotem do tablicy
  • Dalsza lektura

Rozdział 3. Praca ze sprzętem

  • Integracja sprzętu i oprogramowania
    • Idealny przepływ projektu
    • Projekt sprzętu
    • Uruchamianie płytki
  • Czytanie arkusza danych
    • Sekcje arkusza danych, których będziesz potrzebować, kiedy coś pójdzie nie tak
    • Sekcje arkusza danych przeznaczone dla twórców oprogramowania
    • Ewaluacja komponentów z użyciem arkusza danych
  • Twój procesor jest językiem
  • Czytanie schematu
  • Ćwiczenie z czytania schematów: Arduino!
  • Bezpieczeństwo płytki
  • Tworzenie własnego przybornika diagnostycznego
    • Multimetr cyfrowy
    • Oscyloskopy i analizatory stanów logicznych
    • Przygotowywanie oscyloskopu do pracy
  • Testowanie sprzętu (i oprogramowania)
    • Budowanie testów
    • Przykład testu pamięci flash
    • Polecenie i odpowiedź
    • Wzorzec polecenia
  • Obsługa błędów
    • Spójna metodyka
    • Przepływ sprawdzania błędów
    • Biblioteka do obsługi błędów
    • Diagnozowanie błędów związanych z zależnościami czasowymi
  • Dalsza lektura

Rozdział 4. Wejścia, wyjścia i timery

  • Obsługa rejestrów
    • Matematyka binarna i szesnastkowa
    • Operacje bitowe
    • Testowanie, ustawianie, zerowanie i przełączanie
  • Przełączanie wyjścia
    • Konfigurowanie pinu jako wyjścia
    • Włączanie diody LED
    • Miganie diodą LED
    • Rozwiązywanie problemów
  • Oddzielanie sprzętu od działań
    • Plik nagłówkowy specyficzny dla płytki
    • Kod obsługi wejścia-wyjścia
    • Pętla główna
    • Wzorzec fasady
  • Wejście w wejściu-wyjściu
  • Chwilowe naciśnięcie przycisku
    • Przerwanie przy naciśnięciu przycisku
    • Konfigurowanie przerwania
    • Eliminowanie drgań styków
  • Niepewność w czasie wykonania
    • Zwiększanie elastyczności kodu
    • Wstrzykiwanie zależności
  • Używanie timera
    • Elementy timera
    • Odrobina matematyki
    • Więcej matematyki: trudna częstotliwość docelowa
    • Długie oczekiwanie między tyknięciami timera
    • Używanie timera
  • Modulacja szerokości impulsów
  • Oddawanie gotowego produktu
  • Dalsza lektura

Rozdział 5. Przerwania

  • Kurczak naciska przycisk
  • Wystąpienie przerwania
    • Przerwania niemaskowalne
    • Priorytet przerwań
    • Zagnieżdżone przerwania
  • Zapisywanie kontekstu
  • Pobieranie ISR z tablicy wektorów
    • Inicjalizacja tablicy wektorów
    • Wyszukiwanie procedury ISR
  • Wywoływanie procedury ISR
    • Wiele źródeł jednego przerwania
    • Wyłączanie przerwań
    • Sekcje krytyczne
  • Przywracanie kontekstu
  • Konfigurowanie przerwań
  • Kiedy używać przerwań, a kiedy nie
    • Jak unikać używania przerwań
    • Odpytywanie
    • Tyknięcie systemowe
    • Zdarzenia oparte na czasie
    • Malutka usługa harmonogramowania
  • Dalsza lektura

Rozdział 6. Zarządzanie przepływem aktywności

  • Harmonogramowanie i podstawy systemu operacyjnego
    • Zadania
    • Komunikacja między zadaniami
    • Unikanie wyścigów
    • Inwersja priorytetów
  • Maszyny stanów
    • Przykład maszyny stanów: kontroler sygnalizacji świetlnej
    • Maszyna stanów skupiona na stanach
    • Skupiona na stanach maszyna stanów z ukrytymi przejściami
    • Maszyna stanów skupiona na zdarzeniach
    • Wzorzec stanu
    • Maszyna stanów sterowana tabelą
    • Wybieranie implementacji maszyny stanów
  • Watchdog
  • Pętle główne
    • Odpytywanie i czekanie
    • Przerwanie timera
    • Przerwania robią wszystko
    • Przerwania powodują zdarzenia
    • Malutka usługa harmonogramowania
    • Obiekty aktywne
  • Dalsza lektura

Rozdział 7. Komunikacja z urządzeniami peryferyjnymi

  • Komunikacja szeregowa
    • Szeregowe łącze TTL
    • Szeregowe łącze RS-232
    • SPI
    • I2C i TWI
    • 1-Wire
    • Łącze równoległe
    • Podwójna i poczwórna magistrala SPI
    • USB
    • Inne protokoły
  • Komunikacja w praktyce
    • Przykład użycia zewnętrznego przetwornika ADC: sygnalizacja gotowości danych w SPI
    • Używanie kolejki FIFO (jeśli jest dostępna)
    • Bezpośredni dostęp do pamięci (DMA)
    • Przykład użycia zewnętrznego przetwornika ADC: SPI i DMA
  • Bufory okrężne
  • Dalsza lektura

Rozdział 8. Budowanie systemu

  • Macierze klawiszy
  • Wyświetlacze segmentowe
  • Wyświetlacze pikselowe
    • Zasoby graficzne
    • Zmienne dane? Wzorce pyłku i fabryki
  • Zewnętrzna pamięć flash
    • Zasoby graficzne
    • Emulacja pamięci EEPROM i magazyny KV
    • Małe systemy plików
    • Przechowywanie danych
  • Sygnały analogowe
  • Czujniki cyfrowe
  • Obsługa danych
    • Zmienianie algorytmów: strategia
    • Etapy algorytmu: potoki i filtry
  • Obliczanie potrzeb: szybkości i przepustowości
    • Przepustowość danych
    • Przepustowość pamięci i buforowanie danych
  • Dalsza lektura

Rozdział 9. Wpadanie w kłopoty

  • Walka z optymalizacjami kompilatora
  • Niemożliwe usterki
    • Odtwarzanie usterki
    • Wyjaśnianie usterki
  • Wywołanie chaosu i twardych błędów
    • Dzielenie przez zero
    • Mówienie do rzeczy, których nie ma
    • Wykonywanie niezdefiniowanych instrukcji
    • Niepoprawny dostęp do pamięci (niewyrównany dostęp)
    • Zwracanie wskaźnika do pamięci na stosie
    • Przepełnienia stosu i przepełnienia buforów
  • Diagnozowanie twardych błędów
    • Rejestry procesora: co poszło nie tak?
    • Tworzenie zrzutu rdzenia
    • Używanie zrzutu rdzenia
  • Po prostu bardzo trudne usterki
  • Konsekwencje pomysłowości
  • Dalsza lektura

Rozdział 10. Budowanie urządzeń podłączonych do sieci

  • Zdalna łączność
    • Połączenie bezpośrednie: Ethernet i WiFi
    • Połączenie przez bramę
    • Połączenie przez sieć kratową
  • Niezawodna komunikacja
    • Wersja!
    • Sumy kontrolne, kody CRC, skróty
    • Szyfrowanie i uwierzytelnianie
    • Analiza ryzyka
  • Aktualizowanie kodu
    • Bezpieczeństwo aktualizacji oprogramowania
    • Wiele części kodu
    • Koło ratunkowe
    • Wdrażanie etapowe
  • Zarządzanie dużymi systemami
  • Produkcja
  • Dalsza lektura

Rozdział 11. Więcej za mniej

  • Za mało przestrzeni kodu
    • Czytanie pliku mapy (część 1.)
    • Proces eliminacji
    • Biblioteki
    • Funkcje kontra makra: które są mniejsze?
    • Stałe i łańcuchy
  • Za mało pamięci RAM
    • Usuń wywołania malloc
    • Czytanie pliku mapy (część 2.)
    • Rejestry i zmienne lokalne
    • Łańcuchy wywołań funkcji
    • Zalety i wady zmiennych globalnych: pamięć RAM kontra stos
    • Nakładająca się pamięć
  • Za mało szybkości
    • Profilowanie
    • Optymalizacja pod kątem cykli procesora
  • Podsumowanie
  • Dalsza lektura

Rozdział 12. Matematyka

  • Identyfikowanie szybkich i powolnych operacji
    • Obliczanie średniej
    • Inne średnie: średnia kumulacyjna i mediana
  • Użycie istniejącego algorytmu
  • Projektowanie i modyfikowanie algorytmów
    • Rozkład wielomianów na czynniki
    • Szereg Taylora
    • Dzielenie przez stałą
    • Skalowanie wejścia
    • Tabele wyszukiwania
  • Udawane liczby zmiennoprzecinkowe
    • Liczby wymierne
    • Precyzja
    • Dodawanie (i odejmowanie)
    • Mnożenie i dzielenie
  • Uczenie maszynowe
  • Poszukaj odpowiedzi!
  • Dalsza lektura

Rozdział 13. Ograniczanie zużycia energii

  • Pobór mocy
    • Pomiar poboru mocy
    • Projektowanie pod kątem niższego poboru mocy
  • Wyłączaj światło, kiedy wychodzisz z pokoju
    • Wyłącz urządzenia peryferyjne
    • Wyłącz nieużywane linie wejścia-wyjścia
    • Wyłącz podsystemy procesora
    • Zwolnij, aby oszczędzić energię
  • Usypianie procesora
    • Model przepływu kodu opartego na przerwaniach
    • Bliższe spojrzenie na pętlę główną
    • Watchdog procesora
    • Unikanie częstych pobudek
    • Połączone procesory
  • Dalsza lektura

Rozdział 14. Silniki i ruch

  • Powodowanie ruchu
  • Kodowanie pozycji
  • Sterowanie prostym silnikiem prądu stałego z użyciem PWM
  • Sterowanie silnikiem
    • Sterowanie PID
    • Profile ruchu
  • Dziesięć rzeczy, których nienawidzę w silnikach
  • Dalsza lektura
  • Назва: Systemy wbudowane. Wzorce projektowe dla twórców oprogramowania. Wydanie II
  • Автор: Elecia White
  • Оригінальна назва: Making Embedded Systems: Design Patterns for Great Software, 2nd Edition
  • Переклад: Grzegorz Werner
  • ISBN: 978-83-289-1830-6, 9788328918306
  • Дата видання: 2025-02-11
  • Формат: Eлектронна книга
  • Ідентифікатор видання: syswb2
  • Видавець: Helion