~~NOTOC~~ ====== Real-Time Operating Systems ====== ===== (1) What is a Real-Time Operating System? ===== "A real-time operating system (RTOS) is an operating system (OS) for real-time computing applications that processes data and events that have critically defined time constraints. [...] All operations must verifiably complete within given time and resource constraints or else fail safe. Real-time operating systems are event-driven and preemptive, meaning the OS can monitor the relevant priority of competing tasks, and make changes to the task priority." ([[https://en.wikipedia.org/wiki/Real-time_operating_system|Wikipedia]]) * Real-Time OS: https://en.wikipedia.org/wiki/Real-time_operating_system * Real-Time Computing: https://en.wikipedia.org/wiki/Real-time_computing ===== (2) DevCon23 - Using ESP-IDF FreeRTOS Functionality Within an ESP32 Arduino Project ===== | {{youtube>fBWu8sCuat4?}} | | [[https://www.youtube.com/watch?v=fBWu8sCuat4|Live coding with FreeRTOS on ESP32]] \\ Rodrigo Garcia, Espressif Systems @ DevCon23 | ===== (3) Shawn Hymel's (DigiKey) Course on YouTube: Introduction to RTOS (year 2021) ===== ** :!: An excellent practically oriented introduction to RTOS and FreeRTOS by Shawn Hymel on [[https://www.youtube.com/playlist?list=PLEBQazB0HUyQ4hAPU1cJED6t3DU0h34bz|DigiKey@YouTube]]** This course covers general theoretical concepts of Real-Time Operating Systems (RTOS) and practical exercises with FreeRTOS on ESP32 microntrollers. | {{youtube>F321087yYy4?}} \\ DK RTOS, (1/12) - What is a Real-Time Operating System (RTOS)? \\ [[.:DK-Questions#Video 01|Questions on Video 01]] | {{youtube>JIr7Xm_riRs?}} \\ DK RTOS, (2/12) - Getting Started with FreeRTOS \\ [[.:DK-Questions#Video 02|Questions on Video 02]] | \\ | {{youtube>95yUbClyf3E?}} \\ DK RTOS, (3/12) - Task Scheduling \\ [[.:DK-Questions#Video 03|Questions on Video 03]] | {{youtube>Qske3yZRW5I?}}\\ DK RTOS, (4/12) - Memory Management \\ [[.:DK-Questions#Video 04|Questions on Video 04]] | \\ ===== (4) Renesas Tutorial of Real Time Operating Systems (RenesasPresents @ YouTube) ===== ** :!: An excellent general introduction on RTOS by Renesas: [[https://www.youtube.com/watch?v=ECEvUEkSSLg&list=PLgUXqPkOStPvUaPu-E6azm77i_Vj9AwX8&index=4|RenesasPresents @ YouTube]]** | {{youtube>ECEvUEkSSLg?}} \\ RTOS Tutorial (1/5) : Why is RTOS required? | {{youtube>3mu-2pM04xE?}} \\ RTOS Tutorial (2/5) : Task, handler and API | \\ | {{youtube>firiu8_3DZA?}} \\ RTOS Tutorial (3/5) : Semaphore and event flag | {{youtube>f_Y95tUFnUo?}} \\ RTOS Tutorial (4/5) : Architecture and Performance of RTOS | \\ | {{youtube>-j2vWXMpTEc?}} \\ RTOS Tutorial (5/5) : RTOS for Multi-core systems | | ===== Questions Set 1 on RTOS ===== **After having studied the above video tutorials successfully you are able to answer the following questions:** - What is a scheduler? - What does preemptive mean? - What do task, thread, and process mean? - What is a semaphore? - What is a mutex? How is it implemented? - What are message queues used for? How are they implemented? ===== RTOS 1: FreeRTOS ===== ===== RTOS 2: ChibiOS ===== * Project Home (mainly STM32 and LPC): http://www.chibios.org/dokuwiki/doku.php * Github: https://github.com/ChibiOS/ChibiOS * Slides by **[[https://www.linkedin.com/in/gdisirio/?locale=de_DE|Giovanni Di Sirio]]** (currently SW architect at STM): \\ https://sourceforge.net/p/chibios/svn/HEAD/tree/branches/various/ \\ The 2012 presentation set is more comprehensive. * Explained: Multithreading with ChibiOS: http://www.playembedded.org/blog/explanation-multithreading-chibios/ * PORT by William Greiman: **ChibiOS/RT for Arduino AVR, SAMD, Due, Teensy 3.x** \\ Github: https://github.com/greiman/ChRt ==== Youtube Channel "ItKindaWorks" ==== :!: This channel describes how to use the RTOS ChibiOS with **Arduino**. * **[[https://www.youtube.com/watch?v=JXy86GrjVso&list=PL-VRW4ibM-f20B-dXzf6ogiwSzexkAPxY|Arduino Real Time OS (ChibiOS)]]** * [[https://www.youtube.com/watch?v=zhWV_D_9OCY|How to multi-task on an Arduino]] :!: Please install the Arduino libraries from the PORT by William Greiman: **ChibiOS/RT for Arduino AVR, SAMD, Due, Teensy 3.x** \\ Github: https://github.com/greiman/ChRt ===== Coursera: Development of Real-Time Systems ===== https://www.coursera.org/learn/real-time-systems "About this course: This course is intended for the Master's student and computer engineer who likes practical programming and problem solving! After completing this course, you will have the knowledge to plan and set-up a real-time system both on paper and in practice. The course centers around the problem of achieving timing correctness in embedded systems, which means to guarantee that the system reacts within the real-time requirements. Examples of such systems include airbags, emergency breaks, avionics, and also multi-media systems like video playback and QoS in web servers." ===== SimSo - Simulation of Multiprocessor Scheduling with Overheads ===== Introduction including list of scheduling strategies: http://projects.laas.fr/simso/doc/introduction.html Online simulator: http://projects.laas.fr/simso/simso-web/#/configuration Project home: http://projects.laas.fr/simso/ ===== General Info on Scheduling ===== [[https://en.wikipedia.org/wiki/Scheduling_(computing)]]