Recommendation on Choice of RTOS

Started by ukhan 2 years ago7 replieslatest reply 1 year ago422 views
We're targeting to launch a product based on STM32U5. The two potential candidates for the choice of RTOS/middleware we want to decide from are Segger's EmbOS and Microsoft's AzureRtos.

It's not clear to us as to what could be more beneficial for us in the long run
- EmbOs with Segger's dedicated support OR
- AzureRtos being open source & Community support

Based on our talks with Segger, they've added a number of components to their middleware for Cortex M33 (on which U5 is based). As for AzureRtos, since ST has partnered with Microsoft - there are already various example codes available for the U5.

Any suggestions would be much appreciated.
Thanks a lot!
[ - ]
Reply by MarkDSylvaJune 6, 2023

Have you considered FreeRTOS or did you already rule it out for some reason?


[ - ]
Reply by ukhanJune 6, 2023

What's the added benefit of going with FreeRTOS?
We did consider it, but then AzureRTOS seemed a better alternative having partnered with ST and having middleware components which are added to it's portfolio available in stmCube Ecosystem.

[ - ]
Reply by vbhuntJune 6, 2023

It is nearly impossible to describe added benefits of a particular RTOS without a more detailed understanding of your requirements.  What are the areas of middleware that your project requires?  What are the performance requirements? Do you have price/profile/storage/peripheral/security requirements?  How dependent on a particular platform/architecture/company is your product willing to be? Is portability more important than performance or vice-versa? 

[ - ]
Reply by ukhanJune 6, 2023

Thanks for your detailed response.

Our application would comprise file system, graphical user interface, USB & networking stack. From the looks of AzureRtos and based on our talks with Segger's FAE about EmbOS, both have middleware which meets our requirements.

Performance is at the core of our application, however price won't be an issue. 

The product doesn't require very high level of security and as long as we're satisfied with the support, dependence on a particular platform won't be problematic. 

As for Portability vs. Performance, frankly speaking, we're not very sure - however, we'd appreciate tools like TraceX and Segger's System View that are helpful in debugging application.

Would be great to know if there exists a thorough comparison of the various RTOSs based on the metrics you mentioned - helping in making final decision.

[ - ]
Reply by beningjwJune 6, 2023

From what you have described, most likely either EmbOS or AzureRTOS will meet your requirements. Both are high-quality RTOSes that were well thought out in their design and implementation. (I wouldn't even consider FreeRTOS. It's a poorly written RTOS that everyone loves because it was free when there were only commercially available RTOSes. Their original model was to get you hooked on free and then pay for an upgrade to the commercial version. Now it's to get you hooked and pay for AWS).

TraceX and SystemView are interesting tools for RTOS tracing, but pretty basic.  You should really look at Percepio Tracealyzer. It provides far more capabilities and is easier to use at a reasonable cost. 

If you are struggling to choose between them, you might try to use the RTOS Selection KT Matrix that I put together a few years ago. An article about it can be found at https://www.beningo.com/7-steps-to-selecting-the-r... (The images for some reason are broken so I need to fix them, but the topic and links to the excel sheet still work). 

Good luck and if you have additional follow-up questions, let us know. 

[ - ]
Reply by ukhanJune 6, 2023

Thank you very much for the detailed response. Initially we chose Segger, However, over time, we are realizing that we might need to reconsider our decision.

Based on your suggestion, we are contemplating shifting to FreeRTOS instead of Segger. Our primary reason for this consideration is that we can retain the Middleware of Segger while leveraging the benefits of NXP's SDK (which is based on FreeRTOS) since we are using NXP's RT595 (Switched from STMU5).

Furthermore, Segger currently lacks support for the GPU drivers in the RT595, and it also lacks the driver for the WiFi module we intend to use (FreeRTOS fulfills both of these requirements)

We are now deliberating whether it would be advantageous to switch the RTOS at this stage in order to combine the strengths of both Middlewares. We would greatly appreciate your opinion on this matter.

[ - ]
Reply by beningjwJune 6, 2023

I've not worked with the RT595 so I can't offer much specific advice. 

When considering the change, you have to look at what your return on investment will be to make the change and for the long-term support of the product. If you tightly coupled the RTOS to your application, you could end up with a lot of rework. Best case, it might just be a few days or rework. 

That said, a lot has changed in the last year or so. I'd recommend that you also take a look a Zephyr. I have a sneaking suspicion that it is going to be the long-term "winner" in the RTOS wars. I don't know if they support what you need and the learning curve might not be worth it. 

If FreeRTOS meets your needs, implementation is simplified, you can leverage the middleware you like and the long-term support you need is there, then give it a shot. Worst case, you try it with FreeRTOS, you don't like it, and you revert to SEGGER.