New Release: [IDE Mod] ARTe Arduino Real-Time extension by ReTiS Lab

ARTe Arduino Real-Time extension by ReTiS Lab Pisa

What is ARTe?

ARTe (Arduino Real-Time extension) is an extension to the Arduino framework that supports multitasking and real-time preemptive scheduling. Thanks to ARTe, the user can easily specify and run multiple concurrent loops at different rates, in addition to the single execution cycle provided by the standard Arduino framework. ARTe has been developed to support concurrent real-time periodic activities, while maintaining the simplicity of the programming paradigm typical of the Arduino framework.

You can find all the documentation about ARTe project in the arte project website at the URL

How can I write sketches for ARTe?

The ARTE programming model has been designed to result as similar as possible to the original Arduino programming model. Each periodic loop defined by the user is specified as follows:

void loop_i(int period)
    <code here>

where i = 1,2,3,… and period represents the time interval (in milliseconds) with which the loop is executed. As in the original Arduino programming model, the setup() function is also available under ARTE with the same syntax and semantics. Similarly, the original loop() function can also be used under ARTE, offering the programmer the possibility to execute background activities when no other pending loops are running.

In the following example is reported a comparison between the classic Arduino code and the ARTe one for a multi-rate LED blinking. The application is in charge of blinking 3 leds with different periods, equal to 3, 7, and 11 seconds, respectively.

How does ARTe works?

As illustrated in the figure below, the user application exploits the ARTE framework to execute on the Arduino hardware platforms. At the moment, the new ARTE implementation for Arduino IDE 1.9 beta supports the Arduino DUE platform, but we are working hard to provide the support for other common architectures as soon as possible. In addition to the single loop present in the standard Arduino approach, the user can easily specify the number of concurrent loops to be executed at specific rates. Concurrency and real-time scheduling is provided by the ERIKA Enterprise open-source real-time kernel. Loops can use the standard Arduino libraries, which have been enhanced to guarantee mutual exclusion in the access of shared data structures. The impact of ARTe in terms of footprint and runtime overhead has been evaluated by extensive tests and resulted in being negligible.

The principal part of the ARTE build process consists in extending the build process with an additional processing phase performed by the ARTe parser. ARTE parser is an external software component which processes the sketch before the original Arduino processing.

If you are interested in knowing more about the ARTe building flow come visit the documentation section in the ARTe project website.

How can I get started with ARTe?

ARTe is now available for Arduino IDE 1.9 Beta. ARTe has been developed to be cross-platform, so all the Arduino-supported operative systems are compatible with ARTe extension. The installation procedure is quite simple and relies on the standard Arduino board Manager. Follow the procedure in the Getting Started section of the ARTe project website to start.

Frequently Asked Questions

Q: Which are the currently supported boards?
A: At the moment, only Arduino Due board is supported by ARTe. Support for Arduino zero is on the way and will be available soon.

Q: Do I need to download the original Arduino Due board files in Arduino IDE to run ARTe?
A: No, it’s not mandatory. Just follow the procedure described above and you are ready to run ARTe.

Q: I found some trouble running ARTe in Windows 10 PRO.
A: We have been reported of a compatibility issue in Windows 10 PRO. We are working to understand what’s going on. All the other Windows versions are currently compatible with ARTe.

Who developed ARTe?

ARTe is developed and mantained by an enthusiastic team in ReTiSLab, Sant’Anna School of Advanced Studies Pisa, Italy

We love to receive feedbacks/suggestions about our work. If you would like to contact us to report a bug or only to say how much you love (or hate :)) ) ARTe please use the contacts in our personal pages.

Francesco Restuccia
Mauro Marinoni
Alessandro Biondi
Giorgio Buttazzo

This project brings together Arduino and FreeRTOS!

And if you really like objects, then you should try also

"The aim of this project is to objectify the well know kernel FreeRTOS. There are a number of reasons for doing so: a) C++ 11+ rocks! b) C++ is safer than C. c) FreeRTOS is crying out for being objectified!"