C++ w systemach wbudowanych. Skuteczna migracja z C do nowoczesnego C++ Toruń

Programiści systemów wbudowanych najczęściej korzystają z języka C ze względu na jego prostotę i przystępność. Jednak prostota C sprawia, że tworzenie złożonych systemów jest trudne, a kod staje się podatny na błędy. Tych problemów można uniknąć, wybierając C++, który świetnie się sprawdza w …

od 58 Najbliżej: 2,4 km

Liczba ofert: 7

Oferta sklepu

Opis

Programiści systemów wbudowanych najczęściej korzystają z języka C ze względu na jego prostotę i przystępność. Jednak prostota C sprawia, że tworzenie złożonych systemów jest trudne, a kod staje się podatny na błędy. Tych problemów można uniknąć, wybierając C++, który świetnie się sprawdza w systemach wbudowanych za sprawą takich cech jak programowanie generyczne, polimorfizm czy zwiększone bezpieczeństwo typów i pamięci. Dzięki tej praktycznej książce nauczysz się wykorzystywać zaawansowane możliwości nowoczesnego języka C++, aby zachować wydajność przy jednoczesnym tworzeniu bezpieczniejszego i bardziej przejrzystego kodu. Rozpoczniesz od konfiguracji środowiska programistycznego, a następnie dowiesz się, jak bezpiecznie używać niektórych elementów biblioteki standardowej C++ w środowiskach o ograniczonych zasobach. Zapoznasz się też z biblioteką Embedded Template Library (ETL). Zrozumiesz podstawowe i zaawansowane koncepcje języka C++, takie jak szablony, silne typowanie, obsługa błędów, obliczenia w trakcie kompilacji i technika RAII. Na podstawie praktycznych przykładów zaimplementujesz sekwencer, utworzysz bezpieczną warstwę abstrakcji sprzętowej i zastosujesz wzorce projektowe do realizacji typowych scenariuszy w programowaniu systemów wbudowanych. W książce: zalety języka C++ w systemach wbudowanych kompilacja kodu C++ w środowiskach o ograniczonych zasobach silne typowanie i poprawa bezpieczeństwa typów inicjalizacja zasobów (RAII) i inne techniki nowoczesnego C++ praktyczne użycie biblioteki Boost SML najlepsze praktyki tworzenia oprogramowania w systemach wbudowanych Nowoczesny C++: obal mity i twórz doskonały kod! Spis treści: Przedmowa O autorze O korektorach merytorycznych Wprowadzenie Część 1. Wprowadzenie do języka C++ w programowaniu systemów wbudowanych Rozdział 1. Obalanie popularnych mitów na temat C++ Wymogi techniczne Krótka historia języka C++ C z klasami Nowoczesny C++ Typy generyczne constexpr Nadmiar kodu i obciążenie wydajności Konstruktory i destruktory Optymalizacja Szablony RTTI i wyjątki Podsumowanie Rozdział 2. Wyzwania w systemach wbudowanych o ograniczonych zasobach Wymogi techniczne Systemy wbudowane o znaczeniu krytycznym dla bezpieczeństwa i systemy czasu rzeczywistego Moduł sterowania poduszkami powietrznymi i wymagania dotyczące działania w czasie rzeczywistym Pomiar wydajności i nieprzewidywalności oprogramowania wbudowanego Zarządzanie pamięcią dynamiczną Fragmentacja pamięci Wytyczne bezpieczeństwa o znaczeniu krytycznym podczas dynamicznego zarządzania pamięcią w C++ Dynamiczne zarządzanie pamięcią w bibliotece standardowej C++ Wyłączanie niepożądanych funkcji C++ Podsumowanie Rozdział 3. Ekosystem C++ dla systemów wbudowanych Wymogi techniczne Kompilatory i środowiska programistyczne Środowisko programistyczne Arm Keil MDK i kompilator Arm dla systemów wbudowanych Kompilator IAR C/C++ i środowisko programistyczne IAR Embedded Workbench dla architektury ARM Kompilator GCC oraz zintegrowane środowiska programistyczne producentów Analizatory statyczne Testy jednostkowe Profilowanie Podsumowanie Rozdział 4. Przygotowanie środowiska programistycznego C++ dla projektu wbudowanego Wymogi techniczne Wymagania dla nowoczesnego środowiska programistycznego Kompilator Automatyzacja procesu kompilacji Symulator Edytor kodu Środowisko programistyczne oparte na kontenerach Tworzenie programu "Witaj, świecie!" przy użyciu narzędzia CMake Tworzenie oprogramowania wbudowanego przy użyciu narzędzia CMake Środowisko programistyczne oparte na kontenerach i Visual Studio Code Podsumowanie Część 2. Podstawy języka C++ Rozdział 5. Klasy - podstawowe elementy w C++ Wymogi techniczne Hermetyzacja Metody dostępowe Metody statyczne Struktury Inicjalizacja i czas przechowywania Inicjalizacja niestatycznych elementów składowych Inicjalizacja statycznych elementów składowych Dziedziczenie i polimorfizm dynamiczny Funkcje wirtualne Polimorfizm dynamiczny Podsumowanie Rozdział 6. Poza klasami - podstawowe koncepcje C++ Wymogi techniczne Przestrzenie nazw Nienazwane przestrzenie nazw Zagnieżdżone przestrzenie nazw Przeciążanie funkcji Współpraca z językiem C Łączenie zewnętrzne i językowe w C++ Biblioteka standardowa C w C++ Referencje Kategorie wartości Referencje do l-wartości Referencje do r-wartości Algorytmy i kontenery biblioteki standardowej Tablica Adaptery kontenerów Algorytmy Podsumowanie Rozdział 7. Wzmacnianie oprogramowania wbudowanego - praktyczne metody obsługi błędów w C++ Wymogi techniczne Kody błędów i asercje Globalna obsługa błędów Asercje Wyjątki std::optional i std::expected Podsumowanie Część 3. Zaawansowane koncepcje języka C++ Rozdział 8. Tworzenie za pomocą szablonów kodu ogólnego i wielokrotnego użytku Wymogi techniczne Podstawy szablonów Wywołanie funkcji szablonowej Specjalizacja szablonu Metaprogramowanie z użyciem szablonów Koncepty Polimorfizm podczas kompilacji Wykorzystanie szablonów klas do polimorfizmu w trakcie kompilacji Wzorzec CRTP Podsumowanie Rozdział 9. Poprawa bezpieczeństwa typów za pomocą silnych typów Wymogi techniczne Konwersja niejawna Promocje i konwersje typów liczbowych Konwersja tablicy na wskaźnik Konwersja funkcji na wskaźnik Konwersja jawna Operator rzutowania const_cast Operator rzutowania static_cast Operator rzutowania dynamic_cast Operator rzutowania reinterpret_cast Silne typy Podsumowanie Rozdział 10. Tworzenie ekspresyjnego kodu za pomocą wyrażeń lambda Wymogi techniczne Podstawy wyrażeń lambda Przechowywanie lambdy za pomocą std::function Wzorzec Polecenie Menedżer przerwań GPIO Szablon klasy std::function i dynamiczna alokacja pamięci Podsumowanie Rozdział 11. Obliczenia w trakcie kompilacji Wymogi techniczne Szablony Specyfikator constexpr Przykład 1. Analizator adresów MAC Przykład 2. Tworzenie tablicy wyszukiwania Specyfikator consteval Podsumowanie Część 4. Zastosowanie języka C++ do rozwiązywania problemów w systemach wbudowanych Rozdział 12. Tworzenie w C++ warstwy abstrakcji sprzętowej Wymogi techniczne Urządzenia peryferyjne odwzorowane w pamięci Urządzenia peryferyjne standardu CMSIS z odwzorowaniem w pamięci Urządzenia peryferyjne odwzorowane w pamięci w C++ Bezpieczne odwzorowanie pamięci urządzeń peryferyjnych w C++ Liczniki czasu Podsumowanie Rozdział 13. Praca z bibliotekami C Wymogi techniczne Użycie w projektach tworzonych w C++ warstwy abstrakcji sprzętowej napisanej w C Interfejs UART na potrzeby elastycznego projektowania oprogramowania Interfejs UART we wzorcu Adapter Wprowadzenie do klas statycznych Wykorzystanie techniki RAII do opakowania biblioteki littlefs utworzonej w C LittleFS - system plików dla mikrokontrolerów Klasa opakowująca C++ oparta na wzorcu RAII Lepsze zarządzanie plikami dzięki RAII Podsumowanie Rozdział 14. Ulepszanie pętli głównej programu za pomocą sekwencera Wymogi techniczne Pętla główna programu i powody stosowania sekwencera Projektowanie sekwencera Przechowywanie funkcji wywoływalnej Implementacja sekwencera Podsumowanie Rozdział 15. Praktyczne wzorce - tworzenie systemu publikowania temperatur Wymogi techniczne Wzorzec projektowy Obserwator Implementacja w czasie działania programu Implementacja w trakcie kompilacji programu Wykorzystanie szablonów o zmiennej liczbie argumentów Usprawnianie implementacji na etapie kompilacji Podsumowanie Rozdział 16. Projektowanie skalowalnych automatów skończonych Wymogi techniczne Prosta implementacja automatu skończonego Opisywanie stanów i zdarzeń Śledzenie bieżącego stanu i obsługa zdarzeń - klasa automatu skończonego Korzystanie z klasy ble_fsm Analiza danych wyjściowych Implementacja automatu skończonego przy użyciu wzorca projektowego Stan Interfejsy klas stanów automatu skończonego Refaktoryzacja klasy ble_fsm Implementacja wzorca projektowego Stan Wzorzec projektowy Stan Implementacja wzorca stanu z wykorzystaniem techniki tag dispatching Boost SML Podsumowanie Rozdział 17. Biblioteki i frameworki Wymogi techniczne Biblioteka standardowa Implementacje biblioteki standardowej w GCC Liczby i matematyka Kontenery i algorytmy Metaprogramowanie z użyciem szablonów Elementy biblioteki standardowej, których należy unikać w aplikacjach wbudowanych Biblioteka ETL Kontenery o stałej wielkości Użycie etl::delegate do przechowywania funkcji wywoływalnej Inne narzędzia z ETL Pigweed Przewodnik po bibliotece Pigweed RPC i Protocol Buffers Biblioteka CIB Wykorzystanie CIB do publikowania temperatury Rozbudowa przykładu publikującego temperaturę Podsumowanie Rozdział 18. Programowanie dla wielu platform Wymogi techniczne Znaczenie tworzenia przenośnego kodu Reguły projektowe SOLID Reguła jednej odpowiedzialności Reguła otwarte-zamknięte Zasada podstawień Barbary Liskov Zasada rozdzielania interfejsów Zasada odwrócenia zależności Testowalność Podsumowanie O autorze: Amar Mahmutbegović jest ekspertem w zakresie użycia nowoczesnego C++ do programowania systemów wbudowanych. Zajmuje się urządzeniami, które wykorzystują technologię Bluetooth Low Energy i zaawansowane urządzenia medyczne. Jest mentorem dla młodych inżynierów, pomaga im rozwijać umiejętności w zakresie nowoczesnych praktyk programistycznych.

Specyfikacja

Podstawowe informacje

Autor
  • Amar Mahmutbegović
Wydawnictwo
  • Helion
Okładka
  • Miękka
Rok wydania
  • 2026
Ilość stron
  • 328
Tematyka
  • Programowanie
ISBN
  • 9788328935600