Using C++ in Embedded Systems - Applying C++11/C++14 - Plan Szkolenia
To szkolenie ma na celu wprowadzenie C++ jako powszechnego rozszerzenia języka C w kontekście obiektowego programowania systemów wbudowanych. Ponieważ C++ obejmuje C, to szkolenie poprowadzi nas w naturalny sposób od C do C++, pozwalając zajrzeć pod maskę implementacji C++. Jest to szczególnie cenne, gdy C++ jest stosowany w środowisku z ograniczonymi zasobami. Standard C++ przeszedł ostatnio gruntowną rewizję, znaną jako C++11, a nowa wersja, C++14, jest w przygotowaniu. Kurs ten obejmuje tematy wprowadzone w tych poprawkach, które są szczególnie przydatne, takie jak wydajne zarządzanie pamięcią, współbieżność wykorzystująca środowisko wielordzeniowe oraz programowanie blisko sprzętu.
CELE/KORZYŚCI
Głównym celem tej klasy jest umiejętność używania C++ w “poprawny sposób”.
- Wprowadzenie C++ jako obiektowego języka alternatywnego w kontekście systemu wbudowanego
- Pokazanie podobieństw – i różnic – w stosunku do języka C
- Zrozumienie różnych strategii zarządzania pamięcią – szczególnie semantyki przenoszenia wprowadzonej w C++11
- Zajrzenie pod maskę i zrozumienie, do czego prowadzą różne paradygmaty w C++ w kodzie maszynowym
- Wykorzystanie szablonów do osiągnięcia bezpiecznych typowo abstrakcji wyższego rzędu dla programowania blisko sprzętu – dostępu do pamięci mapowanej I/O oraz przerwań – szczególnie szablonów wariadycznych wprowadzonych w C++11
- Dostarczenie kilku przydatnych wzorców projektowych, szczególnie przydatnych w kontekście systemów wbudowanych
- Kilka ćwiczeń w celu przećwiczenia niektórych koncepcji
ODBIORCY/UCZESTNICY
Szkolenie skierowane jest do C++- programistów, którzy zamierzają rozpocząć korzystanie z C++ w kontekście systemu wbudowanego.
WCZEŚNIEJSZA WIEDZA
Kurs wymaga podstawowej wiedzy z zakresu C++ programowania, odpowiadającej naszym szkoleniom ”C++ – Level 1” i ”C++ Level 2 – Introducing C++11”.
ĆWICZENIA PRAKTYCZNE
Podczas szkolenia przećwiczysz prezentowane koncepcje w szeregu ćwiczeń. Wykorzystamy otwarte i darmowe zintegrowane środowisko programistyczne Eclipse
Plan Szkolenia
- Co to jest system wbudowany?
- Prosta definicja
- Kilka kamieni milowych
- Charakterystyka
- Dlaczego używać C++?
- Porównanie z C
- C: Podzbiór C++ – prawie
- Wydajność
- Dodatkowa funkcjonalność „za darmo”
- Dlaczego nie używać C++?
- Klasy
- Zmienne składowe
- Zmienne instancji
- Zmienne klas
- Funkcje składowe
- Funkcje instancji
- Funkcje klas
- Niejawne metody
- Konstruktor
- Inicjalizacja
- Delegowanie
- Destruktor
- Operator przypisania kopiującego
- Konstruktor
- Semantyka przenoszenia – unikanie niepotrzebnego głębokiego kopiowania
- struct w C++
- Pakiet/Przestrzeń nazw
- Zmienne składowe
- Dziedziczenie
- Wprowadzenie
- Realizacja
- Wydajność
- Dziedziczenie wielokrotne
- Dziedziczenie wirtualne
- Polimorfizm
- Wprowadzenie
- Funkcja wirtualna
- Wirtualny destruktor
- Implementacja
- Informacje o typie w czasie wykonywania, RTTI
- Wydajność
- Szablony
- Wprowadzenie
- Funkcja szablonowa
- Klasa szablonowa
- Szablony wariadyczne
- Rozrost kodu
- Strategie implementacji
- Meta szablon Programming
- Szablony a dziedziczenie?
- Obsługa błędów
- Obsługa wyjątków
- Problemy z wydajnością
- Implementacja
- Kod inline
- Kiedy używać?
- Strategie
- Uruchomienie
- Uruchomienie systemu
- Część C
- Część C++
- Biblioteka standardowa
- Standardowa biblioteka szablonów, STL
- Biblioteka iostream
- Główne rozszerzenia wprowadzone w STL dzięki C++11:
- Semantyka przenoszenia
- Szablony wariadyczne
- Współbieżność
- Pamięć Management
- Model pamięci C++
- stdint-types
- Typy atomowe i ich operacje
- Strategie
- Zmienne
- Placement new
- Pamięć zdefiniowana przez użytkownika Management
- Model pamięci C++
- Interoperacyjność między C a C++
- Name Mangling
- Statyczna inicjalizacja
- Dynamiczna pamięć
- Zawartość struct
- POD – Plain Old Data type
- Design Patterns
- RAII – Resource Acquisition Is Initialization
- Memory-mapped I/O
- Interrupt
- Inicjalizacja obiektów statycznych
Wymagania
Aby wziąć udział w tym kursie, nie trzeba spełniać żadnych szczególnych wymagań.
Szkolenia otwarte są realizowane w przypadku uzbierania się grupy szkoleniowej liczącej co najmniej 5 osób na dany termin.
Using C++ in Embedded Systems - Applying C++11/C++14 - Plan Szkolenia - Booking
Using C++ in Embedded Systems - Applying C++11/C++14 - Plan Szkolenia - Enquiry
Opinie uczestników (2)
Podobał mi się czas przeznaczony na rozwiązywanie ćwiczeń. Było to bardzo przydatne, ponieważ pozwoliło nam poświęcić trochę czasu na przemyślenie naszych rozwiązań i ich wdrożenie.
Valeriu - Siemens
Szkolenie - Using C++ in Embedded Systems - Applying C++11/C++14
Przetłumaczone przez sztuczną inteligencję
Szczegóły dotyczące zachowania kompilatora w zależności od użycia składni. Sekcje "Quiz" są bardzo stymulujące.
Andrea Pomatto
Szkolenie - Using C++ in Embedded Systems - Applying C++11/C++14
Przetłumaczone przez sztuczną inteligencję
Propozycje terminów
Szkolenia Powiązane
Advanced Embedded Systems Development
35 godzinSzkolenie na żywo prowadzone przez instruktora w Polsce (na miejscu lub zdalnie) jest przeznaczone dla inżynierów, którzy chcą dowiedzieć się, jak używać wbudowanego języka C do programowania różnych typów mikrokontrolerów opartych na różnych architekturach procesorów (8051, ARM CORTEX M-3 i ARM9).
Course Outline Buildroot: a Firmware Generator for Embedded Systems
7 godzinBuildroot to projekt typu open-source, który zawiera skrypty tworzące zestaw narzędzi do kompilacji krzyżowej, konfigurowalny obraz głównego systemu plików i Linux jądro dla urządzeń wbudowanych. Podczas tego praktycznego kursu uczestnicy dowiedzą się, jak z niego korzystać:
- Jak wybrać oprogramowanie, które trafi do głównego systemu plików.
- Jak dodawać nowe pakiety i modyfikować istniejące.
- Jak dodać wsparcie dla nowych płyt wbudowanych.
Podczas kursu zostaną utworzone bootowalne obrazy systemu plików. Kursy zdalne są dostarczane przy użyciu emulatora QEMU, podczas gdy w klasie można korzystać z QEMU lub prawdziwych płyt wbudowanych wybranych przez trenera.
Inne projekty o podobnych celach obejmują projekt Yocto i OpenWRT. Skorzystaj z tych prezentacji, aby określić, który z nich jest właściwym wyborem dla Twoich potrzeb.
Circuits and Electronics Fundamentals
14 godzinTo prowadzone przez instruktora szkolenie na żywo w Polsce (na miejscu lub zdalnie) jest przeznaczone dla inżynierów i informatyków, którzy chcą zastosować podstawy obwodów i elektroniki do projektowania urządzeń i systemów wykorzystujących właściwości komponentów elektrycznych do rozwoju funkcjonalności sprzętu.
Pod koniec tego szkolenia uczestnicy będą w stanie
- Ustawiać i konfigurować niezbędne narzędzia i programy do rozwoju obwodów i płytek drukowanych.
- Zrozumieć podstawowe zasady stojące za obwodami i inżynierią elektroniki.
- Wykorzystywać podstawowe komponenty elektroniczne w konstruowaniu wydajnych technologii sprzętu komputerowego.
- Optymalizacja urządzeń elektronicznych poprzez wdrażanie metod analizy obwodów.
- Zastosować podstawy elektroniki i obwodów do rozwoju aplikacji korporacyjnych.
Digital Signal Processing (DSP) Fundamentals
21 godzinTo prowadzone przez instruktora szkolenie na żywo (online lub na miejscu) jest skierowane do inżynierów i naukowców, którzy chcą nauczyć się i zastosować implementacje DSP, aby efektywnie obsługiwać różne typy sygnałów i uzyskać lepszą kontrolę nad wielokanałowymi systemami elektronicznymi.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
- Ustawianie i konfigurowanie niezbędnej platformy oprogramowania i narzędzi do cyfrowego przetwarzania sygnałów.
- Zrozumienie pojęć i zasad, które są fundamentalne dla DSP i jego zastosowań.
- Zapoznanie się z komponentami DSP i wykorzystanie ich w systemach elektronicznych.
- Generowanie algorytmów i funkcji operacyjnych przy użyciu wyników z DSP.
- Używać podstawowych funkcji platform oprogramowania DSP i projektować filtry sygnałowe.
- Syntetyzować symulacje DSP i implementować różne typy filtrów dla DSP.
Embedded C Application Design Principles for Automotive Professionals
14 godzinDwudniowy kurs obejmujący wszystkie zasady projektowania z przykładami kodu w połączeniu z najnowszą technologią przemysłową; bardzo przydatny dla programistów oprogramowania motoryzacyjnego.
Embedded C Application Design Principles
14 godzinTo prowadzone przez instruktora szkolenie na żywo (na miejscu lub zdalnie) jest przeznaczone dla programistów C, którzy chcą nauczyć się wbudowanych zasad projektowania C.
Pod koniec tego szkolenia uczestnicy będą mogli
- Zrozumieć względy projektowe, które sprawiają, że wbudowane programy C są niezawodne
- Zdefiniować funkcjonalność systemu wbudowanego
- Zdefiniować logikę i strukturę programu w celu uzyskania pożądanego rezultatu
- Zaprojektować niezawodną, wolną od błędów aplikację wbudowaną
- Uzyskać optymalną wydajność z docelowego sprzętu
Format kursu:
- Interaktywny wykład i dyskusja
- Ćwiczenia i praktyka
- Praktyczna implementacja w środowisku laboratoryjnym na żywo
Opcje dostosowywania kursu:
- Aby poprosić o niestandardowe szkolenie dla tego kursu, skontaktuj się z nami w celu ustalenia.
Electronic Control Unit (ECU) - Practical Vector
28 godzinTo prowadzone przez instruktora szkolenie na żywo w Polsce (na miejscu lub zdalnie) jest przeznaczone dla średnio zaawansowanych inżynierów i techników motoryzacyjnych, którzy chcą zdobyć praktyczne doświadczenie w testowaniu, symulowaniu i diagnozowaniu ECU za pomocą narzędzi Vector, takich jak CANoe i CANape.
Pod koniec tego szkolenia uczestnicy będą w stanie
- Zrozumieć rolę i funkcję ECU w systemach motoryzacyjnych.
- Konfigurować i konfigurować narzędzia Vector, takie jak CANoe i CANape.
- Symulować i testować komunikację ECU w sieciach CAN i LIN.
- Analizować dane i przeprowadzać diagnostykę ECU.
- Tworzenie przypadków testowych i automatyzacja procesów testowania.
- Kalibracja i optymalizacja ECU przy użyciu praktycznych podejść.
Electronic Control Unit (ECU) - Theoretical Vector
21 godzinTo prowadzone przez instruktora szkolenie na żywo w Polsce (na miejscu lub zdalnie) jest przeznaczone dla średnio zaawansowanych inżynierów motoryzacyjnych i programistów systemów wbudowanych, którzy chcą zrozumieć teoretyczne aspekty ECU, koncentrując się na narzędziach i metodologiach opartych na wektorach stosowanych w projektowaniu i rozwoju motoryzacyjnym.
Pod koniec tego szkolenia uczestnicy będą w stanie
- Zrozumieć architekturę i funkcje ECU w nowoczesnych pojazdach.
- Analizować protokoły komunikacyjne stosowane w rozwoju ECU.
- Poznaj narzędzia oparte na wektorach i ich teoretyczne zastosowania.
- Zastosować zasady rozwoju oparte na modelach do projektowania ECU.
FreeRTOS: Programming for Real Time Operating Systems
14 godzinW tym prowadzonym przez instruktora szkoleniu na żywo w Polsce uczestnicy dowiedzą się, jak kodować za pomocą FreeRTOS, przechodząc przez proces tworzenia prostego projektu RTOS przy użyciu mikrokontrolera.
Pod koniec tego szkolenia uczestnicy będą mogli
- Zrozumieć podstawowe pojęcia systemów operacyjnych czasu rzeczywistego.
- Poznać środowisko FreeRTOS.
- Dowiedz się, jak kodować za pomocą FreeRTOS.
- Interfejs aplikacji FreeRTOS do sprzętowych urządzeń peryferyjnych.
Learning Vivado
14 godzinTo prowadzone przez instruktora szkolenie na żywo w Polsce (na miejscu lub zdalnie) jest przeznaczone dla programistów FPGA, którzy chcą używać Vivado do projektowania, debugowania i wdrażania rozwiązań sprzętowych.
Pod koniec tego szkolenia uczestnicy będą mogli
- Rozwijać systemy HDL za pomocą kodu C i narzędzi Vivado.
- Generować i wdrażać miękkie procesory w Vivado.
- Testować i symulować kod C przy użyciu Vivado.
LEDE: Set Up a Linux Wireless Router
7 godzinProjekt LEDE (Linux Embedded Development Environment) to system operacyjny Linux oparty na OpenWrt. Jest to kompletny zamiennik dla dostarczanego przez dostawców oprogramowania sprzętowego szerokiej gamy routerów bezprzewodowych i urządzeń niesieciowych.
W tym instruktażowym szkoleniu na żywo uczestnicy dowiedzą się, jak skonfigurować router bezprzewodowy oparty na LEDE.
Uczestnicy
- Administratorzy i technicy sieci
Format kursu
- Część wykładu, część dyskusji, ćwiczenia i ciężka praktyka praktyczna
Introduction to FreeRTOS
7 godzinKurs stanowi wprowadzenie do projektowania oprogramowania opartego na RTOS dla systemów wbudowanych/IoT. Uczestnicy zapoznają się z koncepcjami RTOS, mechanizmami synchronizacji i scenariuszami projektowania oprogramowania przy użyciu RTOS. Ćwiczenia wykonywane są na płytkach STM32 Nucleo 144 lub podobnych.
Yocto Project
28 godzinW tym prowadzonym przez instruktora szkoleniu na żywo w Polsce uczestnicy dowiedzą się, jak utworzyć system kompilacji dla wbudowanego Linux opartego na Yocto Project.
Pod koniec tego szkolenia uczestnicy będą w stanie
- Zrozumieć podstawowe pojęcia stojące za systemem kompilacji Yocto Project, w tym przepisy, metadane i warstwy.
- Zbudować obraz Linux i uruchomić go pod emulacją.
- Oszczędzać czas i energię budując systemy wbudowane Linux.
The Yocto Project - An Overview - hands-on
28 godzinOpis
To czterodniowe szkolenie łączy teorię z praktycznymi ćwiczeniami w celu wprowadzenia Yocto Project.
Odpowiada na często zadawane pytania, takie jak:
- Czy naprawdę konieczne jest używanie innej wersji toolchaina/bibliotek/pakietów dla każdego projektu GNU/Linux, a na dodatek stosowanie innego przepływu pracy?
- Czy można zapewnić, że środowisko programistyczne jest identyczne dla wszystkich deweloperów/dostawców i że za ponad 10 lat nadal będzie można tworzyć identyczne kompilacje jak dziś?
- Czy YP może pomóc dowiedzieć się, na jakich licencjach oprogramowania są licencjonowane używane pakiety?
Sesje praktyczne są przeprowadzane na docelowym sprzęcie (np. Beagle Bone Black Rev. C - http://beagleboard.org/BLACK). Po zakończeniu szkolenia będziesz mógł pobrać obraz docker z Ubuntu 14.x i wszystkimi preinstalowanymi zależnościami oraz przykładami, aby pracować z materiałem kursu we własnych laboratoriach. Należy pamiętać, że nie jest to kurs wprowadzający do Embedded GNU/Linux. Powinieneś już wiedzieć, jak działa Embedded GNU/Linux i jak skonfigurować / zbudować jądro GNU/Linux i sterowniki jądra.
Kto powinien wziąć udział?
Używasz już GNU/Linux w swoich projektach i prawdopodobnie słyszałeś o Yocto Project, ale nie odważyłeś się przyjrzeć mu bliżej lub miałeś trudności z jego użyciem. Nie wiesz, czy i jak twój codzienny przepływ pracy może być dostosowany do YP i ogólnie uważasz, że YP jest raczej skomplikowany. Po co nam to wszystko, skoro wcześniej wszystko było (podobno) o wiele łatwiejsze? Po szkoleniu powinieneś być w stanie zdecydować, czy potrzebujesz YP, czy nie. Warsztaty skierowane są do programistów, programistów, inżynierów systemowych, testerów, administratorów, inżynierów i innych osób zainteresowanych YP, z solidną znajomością Embedded GNU/Linux.