.. include:: Why Use An Embedded RTOS? (2026-09-23 - 2026-09-24) =================================================== .. topic:: Course Info * **Course Material**: :doc:`/trainings/material/soup/linux/why/index` * **Original Agenda**: :doc:`agenda` .. toctree:: :hidden: agenda Intro ----- .. topic:: See also * :doc:`/trainings/material/soup/linux/why/overview/index` * Coin terminology: "Interrupt", "ISR", "IRQ", "Spinlock", "Thread", "Scheduling", ... * Quick look into `Zephyr `__, and its in-course substitute, :doc:`WhyOS ` Interrupt Handling ------------------ .. topic:: See also * :doc:`/trainings/material/soup/linux/why/interrupt/index` * Bare metal embedded software: a main loop, and a number of interrupts that bring life to the system * Talk about limitations Scheduling ---------- .. topic:: See also * :doc:`/trainings/material/soup/linux/why/threads/index` * What is *The Scheduler*? * The advantages of *waiting* * Discuss task priorities, timeslices, and preemption Message Queues -------------- .. topic:: See also * :doc:`/trainings/material/soup/linux/why/messagequeue/index` * Message queue: easy communication from an ISR to a thread * ... and between threads * Main communication device for the rest of the course * Not the only one: :doc:`pipe `, :doc:`semaphore `, event (manual- and auto-reset), ... Semaphores ---------- .. topic:: See also * :doc:`/trainings/material/soup/linux/why/semaphore/index` * Show how we can implement custom *waiting* scenarios Didactic Toy Application ------------------------ .. topic:: See also * :doc:`/trainings/material/soup/linux/why/datalogger/index` * Longer live-hacking session with discussion * Demonstrate how easy life can be when you are allowed to wait * Create a semi-complex application with :doc:`file ` and :doc:`network ` I/O Events/Polling -------------- .. topic:: See also * :doc:`/trainings/material/soup/linux/why/polling/index` * Introduce *waiting for multiple events*, and why this is a good thing * Quick example: collapsing two threads into one Didactic Toy Application, Revisited ----------------------------------- .. topic:: See also * :doc:`/trainings/material/soup/linux/why/datalogger-polling/index` * Restructure the toy application around a single-threaded event loop Miscellaneous ------------- * Room for realtime discussions. Deadlock scenarios; what does it mean that Zephyr mutexes do priority inheritance? * The course uses modern C++ for brevity and clarity. If there is need to, we can diverge and explain as needed.