Home > On-Demand Archives > Q&A Sessions >

Live Q&A - Understanding RTOSs in 45 minutes

Jean Labrosse - Watch Now - Duration: 21:46

Live Q&A - Understanding RTOSs in 45 minutes
Jean Labrosse
Live Q&A with Jean Labrosse for the talk titled Understanding RTOSs in 45 minutes
M↓ MARKDOWN HELP
italicssurround text with
*asterisks*
boldsurround text with
**two asterisks**
hyperlink
[hyperlink](https://example.com)
or just a bare URL
code
surround text with
`backticks`
strikethroughsurround text with
~~two tilde characters~~
quote
prefix with
>

glennk
Score: 0 | 2 years ago | 1 reply

Fantastic presentation Jean, I particularly liked your graphical representation approach to explaining the software concepts.

JeanLabrosseSpeaker
Score: 0 | 2 years ago | no reply

Thank you.

Thomas.Schaertel
Score: 0 | 2 years ago | 1 reply

Great overview, highly recommended!

JeanLabrosseSpeaker
Score: 0 | 2 years ago | no reply

Thank you.

Erin RobotGrrl
Score: 0 | 2 years ago | 1 reply

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?

JeanLabrosseSpeaker
Score: 0 | 2 years ago | no reply

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!

OUR SPONSORS

OUR PARTNERS