DuinOS: small and simple rtos

Hello,

I have translated the DuinOS 's wiki in french at http://robotgroup.com.ar/duinos/wiki/index.php?title=Main_Page-FR

and I have updaded several english wiki page and added several useful links in the DuinOS wiki.

I hope this will useful for the Arduino community.

Regards.

Yannick

Many thanks!
Great Idea!

I think we will have to translate to Spanish then :slight_smile:

Regards,
Julián

I'm working on DuinOS 0.3 Alpha.
I have checked all the changes in DuinOS 0.2 and I have reported them on DuinOS 0.3.

Now in this Alpha DuinOS 0.3 release, I have made :

  • update to FreeRTOS 6.1.0
  • update to Arduino IDE 0021

With DuinOS 0.3, I have compiled the following exemples without problems :
MoreComplexBlinking and MoreComplexBlinkingAndSound.

Does somebody have any idea where I can upload the 0.3 release for downloading by users for testing ?

I'm happy to provide with some webspace for the download on a personal hosting, I'll contact you via PM.

Thanks
Stijn

@Stijn

I think that I will contact Julian DA SILVA to allow me to commit my changes at Google Code Archive - Long-term storage for Google Code Project Hosting..

It will be more useful for all community (get source code and show diff changes, download the latest release for the users).

Sorry, I did not see the replies before.

Of course, please feel free to commit to the Google Code repository. We have created that this year but did not announced it yet.

Regarding the mprintf, please check my previous question to Paula and her kindly answer in entries 5, 6 and 7 of this blog:

http://www.out--there.com/blog/the-devil-is-in-the-details-atmega-startup-to-freertos/

We are cooking new software (don't say nothing yet, it's a graphical programming environment, but shhh) to be released as soon as possible, so DuinOS were not receiving our full attention. I'm really happy that you have ported it to the 0021 and the new FreeRTOS core.

By other hand, we were working along the 2010 on a lot of things, and one of them is testing core that we called the 0Warning Experimental Arduino Core, or just the 0W. It's here:

http://code.google.com/p/0w-experimental-arduino-core/

We just implemented it with the 0019 version, but it's quiet easy to do the same job for the 0021 version. We have no time now, but were planing to integrate the DuinOS Core with this. It's NOT TESTED AT ALL, but when compiled with Code::Blocks, it has 0 warnings, against the 42 warnings from the original 0019 version (we don't know if the 0021 has some of them, because did not check it).

But for DuinOS v0.4 it will be nice to have it 0W too! Don't you think?

Oh, something I was forgetting. If someone is interested, please find with the 0W core, the following files:

CPPLib.h
CPPLib.cpp

Those add the new() and delete() operators, (with very common and well known iplementations) and the function that allows to have virtual pure destructors.

I'm happy to of having feedback again!

Kind regards, and thanks for all your work!
Julián

To DuinOS users,

I have updated DuinOS source code for DuinOS 0.3 release in the next weeks (maybe before christmas 2010, I don't know) .
You can get it by svn here
http://code.google.com/p/duinos/source/checkout

We need someone who has an Arduino Mega2560 for testing.

That's great news!

Are the incompatibilities here still an issue?

http://www.multiplo.org/duinos/wiki/index.php?title=Tracker#Incompatibility_issues_with_Arduino_libraries

Some yes, and some no:

Thanks Yannick! Very great work!

Cheers!
Julián

So I tested with the 2560 and OR must have done something wrong or there must be something wrong where the RTOS doesn't support the board: #error "Device is not supported by DuinOS", is one of many.

Any ideas Yannick?

Thanks!

@Stijn

Can you reply to my personal message in this forum ?

So I tested with the 2560
Do you test with the latest source code (commit r27) in SVN here Google Code Archive - Long-term storage for Google Code Project Hosting. ?

#error "Device is not supported by DuinOS"
This message is at the end of the file FreeRTOSConfig.h here :
Google Code Archive - Long-term storage for Google Code Project Hosting.

Yannick

Hello DuinOS users,

I have updated DuinOS 0.2 source code for a DuinOS 0.3 release.

You can find the changes here in the readme.txt file :
http://code.google.com/p/duinos/source/browse/trunk/Readme.txt

or in the commit list here :
http://code.google.com/p/duinos/source/list

To get the latest source code, use the svn command here
http://code.google.com/p/duinos/source/checkout

Please test and report bugs or things that don't work in this forum.

Yannick.

thank you for this release
I want just to know if this version 3.0 accepts: micros(), delayMicroseconds() and pulseIn(), because I use them to measure distance with an ultrasonic sensor.

@chaoui

thank you for this release
It is not a release.
It's for testing by users before a release
and to know if some arduino card works or not.

If you want to test, then follow the part
"Install for DuinOS 0.3 Dev SVN for testing only "
at
robotgroup.com.ar - This website is for sale! - robotgroup Resources and Information..

I want just to know if this version 3.0 accepts: micros(), >delayMicroseconds() and pulseIn(),
Maybe, if it is in Arduino IDE 0021 API or FreeRTOS 6.1.0 API.
You need to test it.

Note : in the next days, I will try to replace Timer1A by Timer 0 OVF used by DuinOS kernel to improve compatibility with Arduino standard libs ( Here, I think about Servo lib).

thank you very much I'll do it soon

Hi Guys!

I've been trying to work with a servo and I tried the basic SWEEP example but I keep receiving the following error message :
core.a(port.c.o): In function __vector_11': E:\ARDUINOsoft\arduino-0021_duinOSv0.3\arduino-0021\hardware\arduino\cores\arduino.DuinOS\DuinOS/port.c:478: multiple definition of __vector_11'
Servo_renamed\Servo.cpp.o:E:\ARDUINOsoft\arduino-0021_duinOSv0.3\arduino-0021\libraries\Servo_renamed/Servo.cpp:103: first defined here

The example works perfectly fine if I don't use DuinOS.

Can you please help me?? Thank you in advance!

I've been trying to work with a servo and I tried the basic SWEEP
The example works perfectly fine if I don't use DuinOS.
Can you please help me?? Thank you in advance!

Yes, you must have this error because in the file DuinOS_v0.3_Alpha_dev_svn20101222.zip, DuinOS use Timer 1 for its kernel.
Timer 1 is 16 bits.
But Servo lib need Timer1.
And you use the Servo Lib that is not patched to not use Timer 1.

Then use patched Servo lib (from Arduino IDE 0021) with Timer1 disabled because DuinOS uses the timer 1 for its kernel,
if you have a card with AtMega 128, 1280, 1281, 2560, 2561, 32U4, AT90USB646, AT90USB1286.
This patched Servo lib with Timer disabled is in the file DuinOS_v0.3_Alpha_dev_svn20101222.zip.
And for the other cards, I have added ServoTimer2 lib to replace Servo for AtMega 88,168,328,644 - use the 8 bits Timer2 to manage up to 8 servos
ServoTimer2 lib website : Google Code Archive - Long-term storage for Google Code Project Hosting.

Or you can get the latest DuinOS souce code here
http://code.google.com/p/duinos/source/checkout
where I have replaced Timer1 by Timer0 for the timer used by DuinOS kernel.

I have tested micros(), delayMicroseconds() and pulseIn() with blinking LEDs, with a very simple examples on an Arduino Mega (1280), it seems to be working fine :slight_smile:

I've tested semaphores being set via interrupts on Arduino v22.

Note the hardware directory is a little different but seems to compile, load, and run correctly.

Does it makes sense for someone to put a regression test outline on the Google project site? The thought here is if we have various parties checking off a known set of previously supported features, we can move the process along.

Also, if there were a list of unresolved and untested subsystems, those interested could work on those as needed and contribute to the project.

Thoughts?