Edocti Training
C și C++ Avansat pentru Sisteme Embedded
Sesiuni programate
Nu există sesiuni disponibile în acest moment.
Abilități dobândite
C/C++ Avansat
Programare Bare-metal STM32
Arhitectura ARM Cortex-M4
RTOS & Planificare Task-uri
Întreruperi Hardware (NVIC)
DMA & Zero-copy Pipelines
State Machines pentru Embedded
Simulare ECU Automotive
Curriculum
Ziua 1 — C/C++ Esențial și Fundamente la Nivel de Memorie
- C Esențial și Evoluția Limbajului: O analiză detaliată a rolului linker-ului, formate ABI, capcane legate de promovarea tipurilor (promotion pitfalls) și overflow, manipularea avansată a pointerilor, array-uri multidimensionale și rezolvarea problemelor de portabilitate cauzate de comportamentele nedefinite (undefined behaviors).
- Tranziția către Embedded C++: Înțelegerea ownership-ului resurselor și RAII (Resource Acquisition Is Initialization), contrastul dintre smart pointers și stocarea statică în medii care interzic strict alocarea dinamică a memoriei.
- Managementul Datelor: Manipularea în siguranță a tipurilor complexe de date, utilizarea corectă a cuvântului cheie volatile, gestionarea operațiunilor atomice și rezolvarea problemelor de aliniere a memoriei (alignment) și endianness.
- Matematică și Optimizare: Implementarea matematicii în virgulă fixă (fixed-point math) pentru algoritmi automotive de înaltă performanță și utilizarea constexpr pentru a muta overhead-ul de configurare de la runtime la compile time.
Ziua 2 — Arhitectura STM32 G474RE, Periferice și Hardware I/O
- Arhitectura ARM Cortex-M4: Tranziția de la vechea arhitectură pe 8 biți AVR la cea pe 32 de biți ARM. Explorarea hărții memoriei, a funcțiilor nucleului CPU, registrelor critice, modurilor de adresare și a mecanismului Stack Pointer.
- Hardware I/O și Periferice: Configurarea bare-metal a porturilor I/O (GPIO), setarea timerelor avansate, convertoarelor analog-digitale (ADC) și generarea PWM pentru controlul precis al motoarelor și achiziția de date de la senzori.
- Transfer Avansat de Date: Utilizarea magistralelor de memorie, a porturilor periferice și a controllerelor Direct Memory Access (DMA). Înțelegerea constrângerilor de memorie DMA, aplicarea măștilor DMA și implementarea pattern-urilor DMA eficiente și non-blocante.
- Strategii de Memorie în Proiect: Proiectarea și integrarea memory pools, ring buffers și zero-copy pipelines pentru a ruta datele brute de la senzori către logica de control fără alocări dinamice (heap) la rulare.
Ziua 3 — Concurență, RTOS și Managementul Timpului
- Gestionarea Întreruperilor (ARM NVIC): Stăpânirea controller-ului NVIC. Cele mai bune practici pentru scrierea Rutinelor de Tratare a Întreruperilor (ISR) — identificând exact ce trebuie făcut și ce trebuie evitat, asigurând cod ISR-safe și utilizând deferrable functions.
- RTOS Essentials și Planificarea Task-urilor (Scheduling): Conceptele de bază ale planificării în timp real, înțelegerea context switching-ului, a ciclurilor de viață ale thread-urilor și compararea mecanismelor de planificare cooperative cu cele preemptive în limitele impuse de sistemele embedded.
- Algoritmi de Planificare: Analiza task-urilor periodice versus sporadice, compararea algoritmilor rate-monotonic și EDF (Earliest Deadline First) și explorarea tehnicilor pentru estimarea precisă a Worst-Case Execution Time (WCET).
- Sincronizare și Resurse Partajate: Partajarea în siguranță a resurselor folosind mutex-uri (comparând politicile robuste vs. non-robuste), identificarea problemelor critice de inversiune a priorităților (priority inversion) și implementarea plafoanelor de prioritate (priority ceilings) pentru a proteja fluxul de execuție.
Ziua 4 — Arhitectură Software, State Machines și Integrare Finală
- Metode Orientate pe Obiect pentru Performanță: Implementarea nativă a constructorilor și destructorilor și modul în care toolchain-ul le oferă suport. Evaluarea polimorfismului static vs. dinamic, utilizarea CRTP (Curiously Recurring Template Pattern) și aplicarea idiomului Pimpl pentru interfețe embedded curate.
- State Machines Corect Implementate: Gestionarea logicii complexe a aplicațiilor automotive prin mașini de stare (state machines) robuste. Construirea ierarhiilor de stări, diferențierea modelelor Mealy/Moore, gestionarea modurilor de operare și asigurarea reentranței sigure a codului.
- Managementul Consumului de Energie (Power Management): Explorarea stărilor de alimentare ale sistemului STM32, implementarea modurilor low-power și echilibrarea performanței de calcul cu cerințele stricte de eficiență energetică în mediile automotive.
- Integrarea Finală a Proiectului: Asamblarea modulelor simulatorului ECU autonom (senzor, actuator, manager). Efectuarea de sesiuni practice de debugging direct pe placa STM32 G474RE, desfășurarea de sesiuni de code review și validarea firmware-ului final.
Module opționale
Opțional — Standarde Automotive și Conformitate cu Siguranța
- Noțiuni de bază privind alinierea ISO 26262: mentalitatea ASIL, obiective de siguranță (safety goals) și o prezentare generală a mecanismelor de siguranță hardware.
- Integrarea analizei statice: Adoptarea elementelor esențiale de conformitate MISRA C/C++ și încorporarea unor teste de bază tip CI smoke.
Structura zilei de curs
- Partea 1: 09:00–10:30
- Pauză: 10:30–10:45
- Partea 2: 10:45–12:15
- Pauză de prânz: 12:15–13:15
- Partea 3: 13:15–15:15
- Pauză: 15:15–15:30
- Partea 4: 15:30–17:30