EMB 93

EMBEDDED 93 • SETTEMBRE • 2024 61 DEBUG | SOFTWARE incremento del semaforo da parte del “main thread,” come riportato in figura 2. Se è necessario avviare immediatamente l’elaborazio- ne nel “child thread” ad ogni incremento del semaforo, questo comportamento è accettabile. Tuttavia, se fosse possibile rimandare l’elaborazione del “child thread” fino a quando non siano stati eseguiti tutti gli incre- menti del semaforo, sarebbe possibile evitare due pre- emption (commutazione del contesto), come mostrato nella visualizzazione di figura 3. Rendendo uguali le priorità del “child thread” e del “main thread”, si elimina la preemption (context-switch) dopo ogni chiamata a “sem_post()”, restituendo all’ap- plicazione i cicli di elaborazione che sarebbero necessari per due commutazioni del contesto non necessarie. Con questa ottimizzazione a livello di sistema, il “child thre- ad” viene eseguito solo dopo la chiamata all’API “sched_ yield()”. Questo semplice esempio evidenzia come la vi- sualizzazione aiuti l’ottimizzazione. In definitiva, l’integrazione di Tracealyzer con l’RTOS PX5 migliora le capacità degli sviluppatori di analizza- re, eseguire il debug e ottimizzare i sistemi embedded in tempo reale. Esso offre una visione completa del com- portamento del sistema, favorendo lo sviluppo di appli- cazioni embedded più efficienti, affidabili e prevedibili. Fig. 1 Fig. 3

RkJQdWJsaXNoZXIy Mzg4NjYz