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.