Home > On-Demand Archives > Q&A Sessions >
Live Q&A - Understanding RTOSs in 45 minutes
Jean Labrosse - Watch Now - EOC 2022 - Duration: 21:46
Thank you.
Great overview, highly recommended!
Thank you.
Great presentation! This is incredibly helpful to beginners starting RTOS, will definitely re-watch this and take notes. How often do RTOS "distros" (is that what they are called?) get a new version? Are there ever any difficulties updating a system to run on the new version of RTOS?
Erin,
Like I mention in the Q&A, my golden rule has always been that upgrades should be transparent and if changes are needed to the application, there should be a very clear document that describes how to go from the old to the new version. Also, APIs should never be changed. Case in point, years ago, my team wanted to change the definition of how to specify the size of a stack from 'stack units' (4 bytes on an ARM) to bytes. That was totally out of question and we never implemented this change. Just imagine if the person upgrading to the latest software doesn't change the size of the stack to accommodate bytes from 4-byte entities. You specify a stack of 256 stack units (i.e. 1024 bytes) and now it means 256 bytes? Disastrous!
As for releases, typically between 6 and 18 months. That being said, a well designed RTOS doesn't need to be updated very often unless new capabilities are added. Again, backwards compatibility is the prime directive!
10:42:32 From Leandro Pérez : In the slides you say create the RTOS objects before start RTOS... In my code, I always initializate the RTOS object inside task.. before the infinite loop... Is that a bad practice? 10:44:08 From Leandro Pérez : Right 10:44:35 From Gillian Minnehan : What are the downsides to using the DataQ with a large amount of data or MessageQ with a small amount of data? 10:44:53 From Gillian Minnehan : So, the opposite of their intended use 10:45:06 From Raul Pando : Why do ISRs need to signal the RTOS when they're running, at entry and exit points? 10:45:32 From Leandro Pérez : Thanks… I have another question… How you can implement your user code without matter what RTOS you use? For example FreeRTOS or Zephyr... That the application runs in both architecture for example 10:46:30 From Erin RobotGrrl : How often do RTOS "distros" (is that what they are called?) get a new version? Are there ever any difficulties updating a system to run on the new version of RTOS? 10:47:16 From Gillian Minnehan : Thank you! 10:48:31 From Raul Pando : Makes sense, thanks! 10:49:41 From Leandro Pérez : In that case #ifdef in the only option? 10:50:39 From Cole Wyant : I've seen people develop an OS abstraction layer that encapsulates some of the basic/most used features. 10:51:03 From Cole Wyant : They typically use the linker to decide with one to implement 10:51:10 From Gabe Ferencz : I just learned about SBOMs in Kate Stewart's talk yesterday. Are you aware of any facilities for generating SBOMs in RTOSs (other than in Zephyr as mentioned in Kate's talk)? 10:51:19 From Anthony Armbruster : Are there many RTOS options for C++? 10:52:25 From Thomas Schaertel : Hi Jean, can you recommend any uC-development system where I can test MPU and TCP/IP stack functionality? What I found, that (some) implementations using uC/OS only support limited hardware resources so you are left alone. I lost a bit track since Micrium - SiLabs - Weston-Emb. times. I takes a lot of effort to adapt the code for a new hardware. 10:52:38 From Leandro Pérez : Thanks Jean 10:53:31 From WILSON PARDI JUNIOR : @Anthony Armbruster: One very nice RTOS for C++ was MCOS (MCOE) from Mercury Systems. They used to sell it with Green Hills C++ compiler. 10:54:31 From WILSON PARDI JUNIOR : BTW, I wonder why most famous and commercial RTOS (Monte Vista, VxWorks) are so expensive.. 10:54:57 From Anthony Armbruster : @Wilson, thank you for info! 10:55:27 From Leandro Pérez : Thanks @Wilson 10:57:06 From Raul Pando : @Anthony Armbruster: I've used ChibiOS (kernel written in C) with the user application written in C++ with success. That was with using arm-gnu-gcc/g++ as the compiler, I think that arrangement could be extended to many, I believe Zephyr offers the option. 10:57:58 From WILSON PARDI JUNIOR : An interesting question: is there a specific RTOS being developed just to be used with GPUs, instead of general CPUs? 10:59:56 From Anthony Armbruster : @Jean, thank you! 11:00:01 From Aditya S : With FreeRTOS, the context of main() doesn't exist after the scheduler starts, so anything we allocated on the stack used by main() was getting overwritten. So we needed to define our memory pools etc before main(). Is this the case with all RTOSs, and what would be an optimal way of doing this? 11:01:52 From Erin RobotGrrl : Great answers, Thank you! 11:02:26 From Raul Pando : Thanks Jean! 11:02:28 From Thomas Schaertel : Thank you so much, Jean! 11:02:35 From Gabe Ferencz : Thank you! 11:03:34 From René Andrés Ayoroa : Thank you Jean 11:03:35 From WILSON PARDI JUNIOR : Cheers from Japan!
Fantastic presentation Jean, I particularly liked your graphical representation approach to explaining the software concepts.