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

Programare C – Nivel Avansat

Avansat
21 h
4.9 (721 recenzii)

Sesiuni programate

Nu există sesiuni disponibile în acest moment.
Programare C – Nivel Avansat

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

Lucrezi intensiv, hands-on, cu pointeri, tablouri, modele Object-Oriented în C și concepte arhitecturale cu focus pe microcontrollere AVR.

Explorezi evoluția standardelor C (C11/C18) și impactul noilor sintaxe asupra codului embedded.

Dobândești experiență practică prin laboratoare de codare (~70% din timp) care reflectă fidel provocările din proiectele reale din industrie.

Cum te ajută acest curs: Vei dobândi capabilitatea de a construi software embedded extrem de robust, portabil și eficient.

Cui i se adresează: Programatorilor cu experiență anterioară în C care doresc să atingă nivelul de expertiză în sistemele embedded.

La finalul cursului, vei implementa cu încredere sisteme complexe, acoperind totul, de la gestionarea întreruperilor (ISR) la tehnici avansate de design low-power.

Abilități dobândite

Internale Linker Pointeri & Memorie OOP în C State Machines Modern C (C11/C18) Arhitectură AVR Baze RTOS & ISR 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

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.