Skip to content

RTOS for Arduino

Before I hang my hat on an RTOS for my Atmega projects I wanted to know what was out there and how popular the various rtos platforms were. Here is a summary (original list from here). As of this writing, FreeRTOS for DuinOS is a hands down winner.

Update: 20100112: DuinOS : DuinOS is a port of freeRTOS on Arduino that tries to preserve the development environment by hiding much of the freeRTOS fundamentals as possible. I have mixed feelings on this and have been reverse engineering my sketches to expose as much of freeRTOS as possible.

Update 2010112: AVRx: Although not actively expanding, there seems to be a yahoogroup, avrx, that is active. This is worth a second look at.

Update 2010112: TinyOS: This is an OS for a sensor networks.  There is mixed information on how actively supported and used this OS is. Still researching.

FreeRTOS: A Free RTOS for microcontrollers Currently very active. There is an interesting fork called DuinOS for use with the Arduino IDE that works very nicely. Can be found here and a discussion can be found here. I’ve done this fork on the Arduino Duiemonolove and peeled back the covers. TBD in another section of this blog with performance metrics.

AvrX: Real-Time Kernel for AVR processors Not very active. the 2.6 version compiled from C looks interesting. The yahoogroup for discussing AvrX is moderately active

YAVRTOS: Yet Another Atmel AVR Real-Time Operating System Just what it sez, yet another RTOS. Self described as a project and not a product. Not regourisly tested.

AVRAsmOS: A tiny OS for small AVRs V1.0 active November 9,2009. No web page or documenation.

pc/OS RTOS Kernel (for larger AVR processors >= mega128) There is some activity. Documentation is sparse. No porting or installation guidance. Based on a 1992 rtos

uSmartX: Non-Preemptive Priority-based Multitask RTOS Not active

COMATOS Not active.

Task dispatcher Is what it is, a dispather. Not an RTOS

Opex A simple scheduler, not an RTOS

mthreads Another thread only library, not really an rtos

RTK low activity. Nice starting point for someone interested in creating their own RTOS.

csRTOS not active

Adam Dunkel’s Protothreads Fairly old simple threading code. Not really an RTOS. Last updated in 2005.

Femto OS Active, looks interesting but the license is restrictive and requires all of your application IP to be freely distributed.  Lays claim to your IP (intellectual property) because your code gets embedded with femto OS. If you think what you are creating is every commercially viable you probably do not want to use this.

TinyOS Spotty activity, supposedly for sensor networks, site links are old or not active, forum and wiki seems to have been compromised with spam, look at them on your own risk. Best link I have found is here

Contiki Heavy on the TCP/IP requires 2k ram 40k rom

pico OS not active

scmRTOS: a C++ cooperative OS with Mit license Last updated by author 2006

iRTOS: a C preemptive OS with LGPL license

17 Comments

  1. Ruud Vlaming wrote:

    Hi Paula,

    Thank you for mentioning my OS here. The license is GPLv3. I am no lawyer, but let me try a one-liner: “I share if you share too”. There is no problem in going commercial. Only if you want to keep your code secret, you pay me. And only very little btw. Is that very bad? Maybe.

    Regards.
    Ruud

    Sunday, January 17, 2010 at 1:57 pm | Permalink
  2. Paula wrote:

    Hi Ruud, Thanks so much for finding my blog! I really didn’t expect any responses. I do appreciate very much you taking the time.

    Regarding your approach to licensing. I and many others differ in one key respect:

    IP (Intellectual property ) should be up to the creator to decide if it should be freely dispersed or protected.

    There are two distinct cases that need to be handled in a fair and equitable manner.

    1) Where a tool is distributed and a developer uses the the tool, unchanged, to create a unique application representing IP.

    2) Where a tool is distributed and a developer makes changes to the tool that are unique and represent IP.

    In case 1), no changes were made to the IP of the original tool. The developer of the application should determine if the application IP should be protected or not and such decision should not be guided by the underlying tool (eg additional cost). Distribution of the underlying tool should be guided by the underlying tool license. Distribution of the application should be guided by the application developer.

    In case 2) changes were made to the IP of the original tool by a developer. The developer must respect the original IP and must be guided by the underlying tool.

    I fully respect your desire for anyone who makes changes to your tools IP must either make those changes available for free or pay you a license fee. However, an application that makes use of your tool but does not change your tool should not be considered part of your IP but independent IP.

    I may never have an application IP that I would need to protect and so it may never be an issue. However, having the license approach you use makes spending lots of brain energy on your tool less desirable and more risky in any case where I may wish to protect IP. Working with an OS that does not have that restriction makes for feeling of ‘better mind investment’.

    In your license you have combined both cases making it less desirable for developers to use your tool as they loose control over any IP they develop.

    Just my thoughts,

    Paula

    Tuesday, January 19, 2010 at 10:10 am | Permalink
  3. Ruud Vlaming wrote:

    Hello Paula,

    Don’t underestimate the impact of your work here (or on several forum), you are doing a great job and people are listening. Keep up this good work!

    And, second, let us not start a long discussion on IP. I am a technician not a lawyer. The fact is, i had too choose some form of license. So i choose GPL for those
    who want to publish their stuff too, and others may pay me (minimal) for keeping their stuff secret. Seems fair enough.

    Now you are saying, when i understand you well, “do not touch the IP of my code, if a do not touch yours.” Seems fair too.

    What i really wanted is a license that states: “Please use my stuff anyway you like, except claiming
    it is yours, and if you make big bucks, give me a small part.” I understand your objection about the combination of the cases you mentioned and i see the problem too.
    However, i wanted to use an widely accepted license (not something home brew) with the objective mentioned above. GPL came closest to that, for most commercial users do not want to publish their code, so they buy a commercial license.

    And let’s keep it realistic. In practice there are two kind of users, private and companies. private users, hobbyists if you like, have no problems with GPL in general. Mostly, they are more than happy to share their code too. Companies, or anyone who wants to use my OS in a commercial manner, have no problem with buying a commercial license. In fact, it is usually a lot cheaper than the support they usually want from
    me too.

    So it seems to me that the discussion is a theoretical one. Yes, you are not the only one having objections against my choice. Some people even got really angry with me about that. Why, is totally unclear for me. Let everybody choose those what fit them best. For the moment, this is still a free world.

    regards
    Ruud

    Tuesday, February 16, 2010 at 6:42 am | Permalink
  4. Hi Paula, just to say that the DuinOS links had changed to this one:

    http://robotgroup.com.ar/duinos/wiki

    Regards, and congratulations for your blog!
    Julián

    Wednesday, August 11, 2010 at 3:47 pm | Permalink
  5. Miklos wrote:

    TinyOS is very actively developed, and many platforms and chips are supported

    Sunday, February 13, 2011 at 5:08 pm | Permalink
  6. Hi Paula, remember me? Julián, from DuinOS. I’m contacting you because I published a new project: a graphical programming environment for Arduino (and others). I will release it with sources soon (after a kickstarer campaign), so I need to make it as public as possible: http://minibloq.org
    Thanks and regards!
    Julián

    Thursday, April 14, 2011 at 4:42 pm | Permalink
  7. Terry King wrote:

    Hi Paula,

    Any updates on this? What are your current thoughts about Arduino RTOS efforts?

    I am working with some people on an OS/Environment which would work across shared Arduinos…

    Thanks!

    Regards, Terry King
    …In The Woods In Vermont
    terry@yourduino.com

    Sunday, August 7, 2011 at 8:33 am | Permalink
  8. > scmRTOS: a C++ cooperative OS with Mit license
    This OS was preemptive since it’s 1st release.

    > Last updated by author 2006
    Last updated — yesterday evening :-)

    Thursday, May 3, 2012 at 11:10 pm | Permalink
  9. Jan Berger wrote:

    Great site and blog. Thanks for the list of RTOS kernals. Interesting reading.

    Sunday, November 11, 2012 at 2:32 am | Permalink
  10. Mike wrote:

    any updates on this I am looking for a good stable OS for ARDUIONO

    Sunday, March 17, 2013 at 11:01 am | Permalink
  11. Paula wrote:

    I’ve been using DuionOS which is RTOS for a couple of years. Pretty happy with it.

    Sunday, March 17, 2013 at 2:05 pm | Permalink
  12. Hello I have maintained a DuinOS’s Fork, which is already updated with FreeRTOS 7.4.0 and also with the Arduino IDE 1.0.x and 1.5.x IDE

    Further information can be requested by email or http://www.github.com.br/carlosdelfino/DuinOS and http://www.github.com/carlosdelfino/Arduino

    Tuesday, March 26, 2013 at 7:50 am | Permalink
  13. Paula wrote:

    That is great to hear Carlos! I will taek a look. I have a couple of projects and the new 1128 boards to work with. I was dreading the deep dive to migrate onto a full freeRTOS and Arduiono.

    Tuesday, March 26, 2013 at 8:02 am | Permalink
  14. Jens wrote:

    Hi to all

    A small announcement for a preemptive realtime kernel for Arduino 168/328/1280/2560. No need for reconfigure for your arch.
    See http://www.control.aau.dk/~jdn/edu/doc/kernels/arduino

    There is also a eclipse setup (for linux)

    Same src for eclipse and arduino

    bone appetite :-)

    Thursday, April 18, 2013 at 9:23 am | Permalink
  15. Afdal wrote:

    So, where i can get the latest DuinOS ?

    Sunday, September 15, 2013 at 10:22 am | Permalink
  16. Jens wrote:

    http://www.control.aau.dk/~jdn/edu/doc/arduino/snot/

    FYI
    A small preemptive kernel for Arduinos.
    Open source etc etc

    Is fairly easy to use, have nice ISR integration etc.

    The source is 99% in C and should be readable.

    /Jens

    Tuesday, December 31, 2013 at 4:06 am | Permalink
  17. Sid wrote:

    Hi, A lot of the links no longer work, which would indicate to me that a lot of projects have moved or gone under. Articles like this are excellent and really help the RTOS seeking individual so I would encourage you to revise it and re-publish it. I’m happy to make reference to it on all the forums I visit.

    Sid

    Tuesday, February 18, 2014 at 1:22 pm | Permalink

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*