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

Programare C – Avansat

Avansat
21 h
4.9 (721 recenzii)
Programare C – Avansat

Tehnici avansate: Stăpânești funcționalități esențiale C pentru proiecte embedded, de la internalele linker-ului la state machines.

Hands-on cu tablouri, pointeri, modele OOP în C și concepte avansate de embedded (focalizare pe AVR).

Explorezi evoluția standardelor C și impactul construcțiilor noi asupra codului embedded.

Dobândești experiență practică prin laboratoare (~70%) care reflectă proiecte reale.

Cum te ajută acest curs: Vei construi software embedded robust, portabil și eficient.

Cui i se adresează: conceput pentru persoane cu experiență anterioară în C care doresc să își aprofundeze expertiza embedded.

La final vei implementa cu încredere sisteme complexe în C, de la ISR-uri la design low-power.

Curriculum

C esențial
  • Rolul linker-ului (în detaliu)
  • Contextul de execuție pentru aplicații
  • Formate ABI
  • Capcane de promovare și overflow
  • Pointers
  • Lucrul cu tablouri multidimensionale
  • Capcane la tablouri și C strings
  • Tipuri de date complexe
  • Inlining – revizitat
  • Probleme de portabilitate și soluții
  • Undefined behaviors
Metode OOP în C
  • Constructori și destructori și cum sunt susținuți de toolchain
  • "Virtual methods" în C și avantaje
  • "Inheritance" și "polymorphism"
  • Îmbunătățiri de performanță
State machines făcute corect
  • Reprezentarea stării (enum, function pointers)
  • Tabele de tranziție și gărzi
  • State machines ierarhice (HSM)
  • Arhitectură event-driven pentru sisteme embedded
Evoluția limbajului C
  • Construcții mai noi (keywords, trigraphs, digraphs)
  • C11 _Generic și macro-uri type-generic
  • Actualizări C11/C18 relevante pentru embedded
Gestionarea argumentelor variabile
  • Bazele varargs
  • Considerații de securitate (format-string, limite, undefined behavior)
Programare embedded (focalizare AVR)
  • Prezentare arhitectură AVR (memorie, CPU)
  • Registre importante și moduri de adresare
  • Instrucțiuni AVR cheie
  • Timers
  • I/O ports
  • ADC
  • PWM
  • Interrupt handling
  • AVR interrupts și vectorul de întreruperi
  • Scrierea ISR-urilor: ce să faci / ce să eviți, exemple
  • Funcții deferabile și lucru amânat
  • Managementul timpului cu timere
  • Modele de operare pentru timere
  • Noțiuni de bază RTOS
  • Scheduling: threads, context switching, tipuri de schedulere
  • Implementarea unui task scheduler pentru momente precise
  • Mutexes (tipuri, robust vs. non-robust, policy)
  • Elemente MMU
  • I/O hardware: magistrale și porturi
  • Recapitulare registre (GPIO/ADC/PWM/Watchdog)
  • Power management și stări de putere ale sistemului
Embedded C avansat (extra)
  • C11 atomics vs. volatile; memory order și pattern-uri lock-free (unde se aplică)
  • Ring buffers pentru comunicare ISR ⇄ main (single-producer/single-consumer)
  • Noțiuni DMA și zero-copy I/O (unde există suport)
  • Linker scripts și secțiuni de memorie (.text/.data/.bss/.rodata, plasare custom)
  • Startup code și secvența de boot (reset vector, crt0, ordinea inițializării)
  • Latența întreruperilor, secțiuni critice și determinism
  • Scheduling fără tick și timere cu jitter redus
  • Aritmetică pe numere fixe și aritmetică cu saturație
  • Prezentare MISRA C și gestionarea abaterilor (deviations)
  • Testare pe ținte embedded: Unity/CMock, fakes și HIL
  • Strategii de abstractizare: HAL vs. acces la registre; configurare la compile-time
  • Design low-power: moduri de sleep, clock gating, surse de trezire

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