Arhitectură software embedded: proiectezi sisteme embedded fiabile, modulare și scalabile.
Hands‑on cu arhitecturi stratificate, design de componente și modelare UML.
Aplici practici moderne C++ la constrângeri embedded și sisteme real‑time.
Dobândești experiență practică prin ~70% laboratoare de construire a designului embedded.
Cum te ajută: îmbunătățești mentenabilitatea, testabilitatea și performanța software‑ului embedded.
Cui i se adresează: conceput pentru persoane cu experiență C/C++ în proiecte embedded.
Include opțional pattern‑uri avansate și compromisuri de arhitectură.
Curriculum
Ziua 1 — De la cerințe la arhitectură (realități embedded)
- Înțelegerea problemei și stakeholderilor; atribute de calitate (safety, performanță, disponibilitate, energie)
- Capturarea cerințelor și trasabilitate (use cases, non‑funcționale, contracte de interfață)
- Context, constrângeri HW, bugete de memorie/CPU/energie; riscuri timpurii și ADR‑uri
- Vederi de arhitectură: context, containere/componente, deployment; mapare pe țintă
Ziua 1 — Modelare structurală pentru sisteme embedded
- UML cu Enterprise Architect: packages, components, deployment și class diagrams
- Straturi și frontiere: aplicație, servicii, drivere; patternuri HAL/SAL; puncte de portabilitate
- Dataflow și model de concurență (event‑driven vs time‑triggered; task graph)
- Interfețe și contracte: API‑uri, coduri de eroare, pre/postcondiții
Ziua 2 — Comportament, timming și proiectare real‑time
- State machines corect implementate (ierarhie, Mealy/Moore, mode management, reentrancy)
- Diagrame de secvență/activitate/timp pentru fluxuri și bugete de timp
- Scheduling: task‑uri periodice/sporadice, rate‑monotonic vs. EDF, cooperativ vs. preemptiv
- Priority inversion și ceilings; partitionare pe nuclee; estimarea WCET
Ziua 2 — Tehnici C/C++ pentru embedded
- Ownership și RAII; smart pointers vs. stocare statică; pimpl și interfețe
- Polimorfism static vs. dinamic; CRTP; constexpr și configurație la compile time
- Aritmetică fixed‑point; memory pools, ring buffers și pipe‑uri zero‑copy
- Cod sigur pentru ISR și patternuri DMA; volatile, atomics, aliniere și endianness
Ziua 3 — Acces la hardware, portabilitate și startup
- Memory‑mapped I/O și patternuri de acces la registre; bitfields și măști în siguranță
- Drivere vs. servicii; headere în stil CMSIS; device trees (overview unde e relevant)
- Secvență de boot și inițializare; noțiuni de secure boot; elemente de linker script (overview)
Ziua 3 — Fiabilitate, diagnoză și testare
- Strategii de tratare a erorilor; watchdogs și brown‑out; degradare grațioasă
- Logging/tracing; jurnale de evenimente și contoare de performanță; hook‑uri de telemetrie
- Analiză statică și MISRA C/C++; teste unitare/integrare; SIL/HIL și fault injection
Ziua 3 — Din model în schelet de cod
- Maparea modelului pe module și directoare; reguli de dependențe; headere publice vs. private
- Sistem de build (CMake) și integrare toolchain; feature flags și variante
- Generarea unui schelet de aplicație; implementarea primului use case și teste CI
Module opționale
Opțional — Safety & security
- Aliniere ISO 26262 (gândire ASIL, safety mechanisms) — overview
- Comunicare și flashing securizate; checklist de hardening
Structura zilei de curs
- Part 1: 09:00–10:30
- Break: 10:30–10:45
- Part 2: 10:45–12:15
- Lunch break: 12:15–13:15
- Part 3: 13:15–15:15
- Break: 15:15–15:30
- Part 4: 15:30–17:30