RTuinOS 1.0: Second Release of the Real Time Operating System (RTOS) for Arduino

Dear Arduino Fans,

RTuinOS, the Real-Time Operating System (RTOS) for Arduino, revision 1.0,
is now hosted at Sourceforge, please see "http://sourceforge.net/projects/RTuinOS".

Two technical changes have been made in comparison to the first release
(December 2012, version 0.9,
"RTuinOS: A Real Time Operating System (RTOS) for Arduino 1.0.1"):
The event concept has been generalized. Events can now be broadcasted
events, semaphores or mutexes. This permits to implement all the usual
inter-task communication patterns. Please refer to the user guide and the
diverse code samples for details.

The second technical change is a complete revision of the makefile. It has
been improved in many aspects and it now supports three operating systems;
the RTuinOS samples (as well as your applications) can be built under
Linux, Windows and Mac OS. Many thanks to Sudar Muthu
(mailto:sudar@sudarmuthu.com), who has made the port from
Windows to the other systems.

To us Arduino is a toy and we believe it's the same to many of you. To
strengthen this idea we added one particular sample (tc14), which does not
only prove the operability of RTuinOS but also implements a true
application of the Arduino 2560 Mega board with the LCD shield. Different
tasks measure the analog input voltage and compute other information and
handle the button input. All of these tasks share the display to present
their information. The code is not only a test case but also instructive
and meant as a practical how-to-do guide. We hope this sample will spark
your interest in running RTuinOS on your Arduino board!

RTuinOS 1.0 is distributed as setup (a ZIP archive), which contains all
source files and the complete documentation, also with source files.
Building the samples can be started immediately after unzipping and
setting a single environment variable (not necessary for those, who
already run RTuinOS 0.9).

Forum members can download the setup from the forum, but in the past this
turned out to be unreliable. A second location for the download of the
setup is RTuinOS download | SourceForge.net. Click the Files tab,
then click on the desired ZIP file entry (RTuinOS-1.0.2.zip) to start the
download.

Thank you for your kind interest in RTuinOS; your feedback is welcome.

With kind regards

Peter Vranken

RTuinOS-1.0.2.zip (2.62 MB)

I just downloaded it, thank you very much for the effort you have put in to documenting, let alone developing this release.

Looks professional. Am very keen to get a good understanding on how it works.

Peter, It's absolutely awesome!

I've read the documentation and check some source code, and it's just what I wanted to do over Arduino.

Good job. I´m going to put it running.

The only thing to object is that source code is written in platform dependent (asm code), are you planning to port or make portable to other arquitectures (e.g. 32 bits) under Arduino?.

And of course, It would be better adding compatibility to Arduino IDE.

I think that's the differential point to make it widely used.

Thanks for the compliments!

I agree, making RTuinOS an IDE compatible library would probably increase its
everybody-usability. Unfortunately, at the moment I'm not planning to do so:
-) The time. Meanwhile I'm busy with another project
-) The tight integration into the IDE is a risk. One important chapter of the RTuinOS
manual highlights the problems with isolated RTOS, that come along without a powerful
framework of libraries. The IDE has such a framework, but none of the libraries can safely
be used for RTuinOS applications just like that. Multi-threading has not been an issue when
these libraries had been developed and one needs to do a careful code review prior to using
them. Therefore, a project like RTuinOS always is a bit different by principle
-) Once setup, working with a makefile and a powerful editor like Emacs can be more
efficient than working with an IDE. Although a side effect only, developing a re-usable,
generic makefile is considered an important added value of the RTuinOS project. This
makefile can easily be used with any RTuinOS-free Arduino application. Only a little bit of
configuration is required.

The platform issue has been tackled with respect to the host. Linux, Windows and Mac should
be supported with version 1.0. Support of the different AVR controllers is only given by
comments and hints. Only a few code locations need modification but without having the
devices for testing I'd not dare to publish an implementation. Support of the 32 Bit ARM
architecture is however an interesting, challenging task and I can imagine to try it one
day (having a lot of time ...).

Implementing an RTOS without assembler code is an illusion. However, a more proper solution
would be a separation of proper, portable C code from handwritten assembler code files. I
didn't do so for simplicity/time/effort reasons. It would have meant to learn another
couple of things. (I didn't work with the GNU assembler so far.) A redesign of the code
would probably lead to such a separation. And it's even worse than just being controller
dependent; actually, we are compiler-revision-dependent. RTuinOS exploits very particular,
proprietary GNU C features; even the next release of GCC could break the code.

RTuinOS is now hosted at Sourceforge. This means simple access to all sources via SVN and to the ready-to-use packages by a download button. Please visit "http://sourceforge.net/projects/RTuinOS" or directly "download RTuinOS 1.0.2 with manual, sources, build scripts and samples"!

Dear All,

RTuinOS has now been uploaded to SourceForge as 1.0.3 (which used to be 1.0.2 so far). Reason is a bug fix in the RTOS initialization. Under quite specific condition would 1.0.2 disregard task priorities in semaphore management in the very beginning of scheduling.

There are a number of minor improvements of the documentation, typos and clarifications.

The DCF77 sample is no longer a supplementary package but packaged as a normal RTuinOS sample.

Please refer to Download RTuinOS-1.0.3.zip (RTuinOS).

It's a long while ago since RTuinOS had been announced here. These days, a port to the PowerPC architecture has now been published, please have a look at GitHub - PeterVranken/TRK-USB-MPC5643L: Sample code for support of PowerPC development with GCC and NXP eval board TRK-USB-MPC5643L.

The git-hub project is complete with comprehensive documentation and all development tools and scripts (Open Source compiler/linker and make, unlimited, free of charge debugger by NXP). Install the tools and build, flash, run and debug the software on an easily available, low cost NXP evaluation board (TRK-USB-MPC5643L for about 30,- Euro). 32 Bit, floating point, many I/O, 120 MHz, many available code samples.

Have a second look: RTuinOS for PowerPC (e200z4) is built on kernelBuilder at same location -- an assembler written software platform that provides a C API for interrupt processing, system calls and context switches: Design your own RTOS in plain C, without (inline) assembler and in a race condition free coding paradigm.