Lab 2.1 Sisteme de Operare - Secventiale

Scopul lucrării:

Realizarea unei aplicații modulare pentru MCU care să ruleze secvențial cel puțin 3 task-uri, demonstrând metodologia de planificare, sincronizare și execuție non-preemptivă a task-urilor.

Obiectivele lucrării:

  • Familiarizarea cu principiile de planificare secvențială și execuție non-preemptivă a task-urilor într-un sistem embedded.
  • Analiza metodelor de stabilire a recurentei și a offset-urilor între task-uri pentru optimizarea utilizării resurselor procesorului.
  • Înțelegerea și aplicarea mecanismului de sincronizare între task-uri prin modelul provider/consumer, ca metodă de comunicare internă a datelor.
  • Elaborarea unui model de execuție secvențială, evidențiind avantajele și limitările acesteia din punct de vedere metodologic.
  • Documentarea detaliată a arhitecturii software și prezentarea schemelor bloc și a schemelor electrice, ca parte integrantă a metodologiei de proiectare.

Definire Problema

Realizarea unei aplicații pentru MCU care să ruleze secvențial cel puțin 3 task-uri distincte, după cum urmează:

  • Task 1 – Button LED: Schimbarea stării unui LED la detectarea unei apăsări pe buton.
  • Task 2 – LED Intermitent: Controlul unui LED intermitent, activ doar atunci când LED-ul din Task 1 este stins.
  • Task 3 – Variabilă de stare: Incrementarea/decrementarea unei variabile prin apăsarea a două butoane, reprezentând numărul de recurențe/timp în care LED-ul din Task 2 se află într-o anumită stare.

Un Task de Idle va prelua informațiile din variabilele globale/semnale generate de celelalte task-uri (conform modelului provider/consumer) și le va afișa utilizând funcțiile STDIO (ex. printf), demonstrând astfel metodologia de raportare și monitorizare a stărilor sistemului.

 

Indicații pentru implementare

1. sa se implementeze comunicarea intre Taskuri ca provider consumer:

  • task-ul care generează date, provider, stochează rezultatele într-o variabila globala/semnal
  • task-ul care utilizează aceste date, consumer, citește aceasta variabila/semnal.

de ex: task de UI (LCD sau Serial) preia informația din niște variabile-semnale globale și raportează

2. A se urma principiile prezentate la curs Sisteme Secvențiale 

  • stabilirea rezonabila a recurentei  pentru a diminua incarcarea procesorului
  • stabilirea ofsetului, intru a activa în ordinea cuvenita task urile

3. Task-ul de raportare pentru Secvențial cu utilizare STDIO printf() catre LCD va fi rulat in bucla infinita/IDLE deoarece este bazat pe un spin lock și ar putea bloca întreruperile  deci secvențial clasic - printf & delay in main loop, 

Materiale și Resurse:

Componente hardware:

  • Microcontroler (Arduino Uno, ESP32 sau similar)
  • LED-uri
  • Rezistor de 220 Ω
  • Butoane (minim 3, pentru funcționalitățile specificate)
  • Breadboard
  • Cabluri de conexiune (jumper wires)
  • Sursă de alimentare (USB)

Resurse software:

  • Visual Studio Code cu extensia PlatformIO instalată
  • Emulator terminal (ex.: Monitor Serial din PlatformIO, TeraTerm sau Putty)
  • Simulator hardware (opțional, ex.: Proteus)

Recomandări:

  • Se recomandă utilizarea unui IDE cu suport Arduino (de exemplu, Eclipse) pentru gestionarea proiectelor modulare.
  • Pentru validare se recomandă utilizarea unui simulator hardware (ex.: Proteus).
  • Funcționalitățile pentru fiecare periferic (LED, buton, LCD etc.) trebuie implementate în fișiere separate, pentru a facilita reutilizarea în lucrările viitoare.
  • Respectați convențiile de codare (CamelCase etc.) și asigurați o documentare detaliată a soluției.

Pontaj:

Cerințe obligatorii:

  • Respectarea structurii modulare a proiectului.
  • Prezentarea schițelor arhitecturale, a schemelor bloc și a schemelor electrice.
  • Respectarea formatului raportului conform normelor UTM.

Notare:

  • 50% – Demonstrarea rezultatelor (funcționarea corectă a execuției secvențiale a task-urilor și implementarea mecanismului provider/consumer).
  • 10% – Utilizarea STDIO (printf, scanf, etc.) pentru raportare și monitorizare.
  • 10% – Explicarea interfeței hardware–software, evidențiind metodologia implementată.
  • 10% – Prezentarea schemelor electrice.
  • 10% – Demonstrarea funcționării fizice a soluției.

NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice a soluției!!

  • 10% penalizare pentru fiecare săptămână întârziere de la deadline.