Edocti
Training tehnic avansat pentru inginerul software de mâine
Edocti Training

C și C++ Avansat pentru Sisteme Embedded

Avansat
28 h
4.8 (142 recenzii)

Sesiuni programate

Nu există sesiuni disponibile în acest moment.
C și C++ Avansat pentru Sisteme Embedded

Programare Embedded Avansată: Faceți tranziția de la platforme de bază precum Arduino sau AVR la microcontrollere standard din industrie, ARM Cortex-M4, cu un focus specific pe placa STM32 G474RE.

Acumulați experiență practică construind un Simulator complet de ECU Automotive, împărțind responsabilitățile echipei între achiziția datelor de la senzori, controlul de precizie al motoarelor și managementul central al sistemului.

Aplicați practici moderne de C și C++ pentru a rezolva constrângeri hardware complexe, optimizați managementul memoriei și depășiți provocările de planificare (scheduling) în timp real fără overhead-ul abstracțiilor greoaie.

Obțineți experiență practică prin laboratoare intensive de scriere de cod (aprox. 70% din curs) corelate direct cu cazuri de utilizare automotive, interacțiuni la nivel de hardware și debugging avansat.

Cui se adresează: Conceput pentru inginerii software cu cunoștințe de bază în C care doresc să stăpânească concepte avansate, acces bare-metal la hardware și C++ modern în medii cu resurse limitate.

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

Ai participat la acest curs?

Opinia ta este foarte importantă pentru noi. Spune-ne cum a fost experiența ta și ajută-ne să îmbunătățim acest curs pentru viitorii participanți.

Ofera feedback

Vrei să afli mai multe? Suntem aici să te ajutăm!

Sau scrie-ne direct la training@edocti.com.