Go Down

Topic: Multitâches DuinOS (Read 7038 times) previous topic - next topic

Telson

Bonjour,

Est ce que quelqu'un aurait des informations complémentaire sur DuinOS pour les Méga2560.

Sommes nous obligés d'utiliser l'IDE 0021?

Y aurait t'il une nouvelle version pour la 0022?

Sur cette page, il semblerait que non mais sais t'on jamais :
http://robotgroup.com.ar/duinos/wiki/index.php?title=DownLoad_and_Getting_Started

Quelqu'un aurait t'il de l'expérience dans ce domaine?

Je me pose la question du multitâche ca pour faire avancer le robot et détecter les obstacles c'est bien deux routines qui fonctionnent en parallèle?

A+

skywodd

#1
Aug 10, 2011, 11:57 am Last Edit: Aug 10, 2011, 11:59 am by skywodd Reason: 1
Bonjour,

Personnellement j'ai la version svn (+ client svn pour la garder à jour) et elle marche parfaitement sous arduino 0022.

Aprés ce n'est pas du calcul parallèle attention !
DuinOS est un RTOS, mais il ne fait qu'alloué un certain temps de calcul à une tache et pendant ce temps les autres sont en pause.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Telson

Tu pourrais développer SVN + client pour mise à jour?

Tu utilises la mega2560?

Merci.

skywodd

#3
Aug 10, 2011, 06:00 pm Last Edit: Aug 10, 2011, 10:03 pm by skywodd Reason: 1

Tu pourrais développer SVN + client pour mise à jour?

histoire de toujours avoir la dernière version de duinOS (et donc pouvoir utiliser l'IDE arduino le plus récent), j'utilise un client SVN avec le lien google code du projet : http://code.google.com/p/duinos/source/checkout
Par contre le fait d'avoir la dernier version de développement implique que quelque fois il y est des bug sur certaine fonction récente.


Tu utilises la mega2560?

Oui mega2560 officiel et Uno et ça marche bien sur les deux.
Edit : Je viens de regarder le µc de ma mega (fait maison) sur laquelle j'avais tester duinOS et c'est un ATmega1284 :smiley-red:. je vais voir de refaire le test avec ma "vrai" mega2560
Re-Edit : C'est bizarre avec une UNO ça marche normalement, avec ma mega1284 aussi et sur la mega2560 le programme ne boot pas ?!
Sinon je confirme la version 3 (version svn) tourne sans probléme sous arduino 0022 (et même avec l'add-on teensyduino aucun probléme).
Re-Re-Edit : (décidément ^^) L'ATmega1280 marche, l'ATmega1284 marche, l'ATmega2560 n'est rien d'autre que l'ATmega1280 avec 2x plus de flash et ça ne marche pas !? C'est vraiment un bug trés étrange !
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Telson

#4
Aug 10, 2011, 11:45 pm Last Edit: Aug 11, 2011, 12:20 am by Telson Reason: 1
Bon alors apparemment selon le lien suivant :
http://robotgroup.com.ar/duinos/wiki/index.php?title=DownLoad_and_Getting_Started

Nous pouvons lire sur la procédure d'instalation :
4. Copy the hardware\boards.txt (0.3) deployed with DuinOS to the \hardware\arduino (Arduino IDE 0021) folder.

Note : if you use Arduino card other than Arduino Duemilanove or Nano w/ ATmega328, Arduino Diecimila, Duemilanove, or Nano w/ ATmega168,
then
Copy the hardware\boards-test.txt (0.3) deployed with DuinOS to the \hardware\arduino (Arduino IDE 0021) folder and rename it as board.txt.


Dans ce fichier nous pouvons lire :

##############################################################

mega2560_DuinOS.name=Arduino Mega 2560 + DuinOS
.
.
.

Quelqu'un a déjà essayé?

skywodd

Je vais tester ce board-test.txt mais je ne pense pas que le probléme viennent de là.
L'ATmega2560 est juste la version 256Ko de l'ATmega1280 (128Ko) sinon niveau hardware il n'y à aucune différence !
Ce qui marche avec un ATmega1280, ATmega1284 devrait marcher avec un  ATmega2560 :smiley-yell:
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Telson

Ha ok.....Et bien j'ai hâte de lire tes conclusions.....

skywodd

C'est trés trés bizarre en comparant avec notepad++ les deux fichiers boards.txt et boards-test.txt là seul diférence c'est qu'il ont supprimé la uno + duinos et mega2560 + duinos  :smiley-eek:
Je vais voir de trifouiller un peu la configuration de FreeRTOS pour la mega2560 voir si cela change quelque chose.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

skywodd

J'ai trouvé le probléme 8)

En faite c'est tout bête !
L'ATmega1280 a 2x moins de place en flash que l'ATmega2560.
Or qui dit plus de mémoire, dit plus d'adresses mémoire !
Par conséquent le registre interne qui gère l'adressage est plus grand !
Sur l'ATmega1280 c'est un compteur 16bit mais sur l'ATmega2560 c'est un compteur 22bit !

J'ai fait un patch pour le fichier port.c se trouvant dans ..\hardware\arduino\cores\arduino.DuinOS\DuinOS
je le joins en pièce jointe.
Le patch fonctionne "normalement" en 16bit avec les Atmega328/1280/1284/... mais si il détecte un ATmega2560 il passera en mode 22bit ;)

En espérant que cela aidera d'autre personne ^^

PS: j'ai aussi posté mon patch sur le google code du projet duinOS ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Telson

#9
Aug 11, 2011, 05:15 pm Last Edit: Aug 11, 2011, 11:09 pm by Telson Reason: 1
Mais c'est énorme ce que tu nous proposes là.

Merci beaucoup, je vais essayer de faire fonctionner cela au plus vite.

Car en fait, je souhaiterais faire avancer mon robot et en même temps faire tourner ma tourelle supportant mon capteur.

J'essaie tout cela dès que possible.

Merci encore.

P.S. L'adresse du google code DuinOS c'est bien : http://code.google.com/p/duinos/ ?


skywodd


Mais c'est énorme ce que tu nous propose là.

CM... Non je vais évité même si c'est trop tentant :smiley-mr-green:


Merci beaucoup, je vais essayer de faire fonctionner cela au plus vite.

Car en fait, je souhaiterais faire avancer mon robot et en même temps faire tourner ma tourelle supportant mon capteur.

Chaque chose n'est pas exécuté en "même" temps, chaque fonction à un certain temps de calcul puis c'est le tour d'une autre fonction etc, etc, ...
On a l'impression que tout ce fait en même temps mais c'est pas vraiment le cas.


P.S. L'adresse du google code DuinOS c'est bien : http://code.google.com/p/duinos/ ?

Oui c'est ça.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Telson

CM ??????

Effectivement ce n'est pas vraiment du multi. mais pour mon niveau cela devrait aller.....Quoi que j'aimerai bien apprendre mais je ne sais pas par ou commencer????

skywodd


CM ??????

Même pas une petite idée ^_^


Effectivement ce n'est pas vraiment du multi. mais pour mon niveau cela devrait aller.....Quoi que j'aimerai bien apprendre mais je ne sais pas par ou commencer????

http://www.pobot.org/Premiers-pas-avec-DuinOS.html ? ça pourrai aller pour commencé ^^ aprés pour partir sur du plus "concret" (application avec zone de code critique, mutex & co) il est toujours possible d'allez voir les tuto pour freeRtos.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Telson

ARGH !!! J'suis con CMB !!!

Telson

Bonjour,

Je viens de faire un essai avec Duinos et l'exemple


voici le résultat !!

In file included from E:\arduino-0021\hardware\arduino\cores\arduino.DuinOS/DuinOS.h:14,
                 from E:\arduino-0021\hardware\arduino\cores\arduino.DuinOS/WProgram.h:13,
                 from E:\arduino-0021\hardware\arduino\cores\arduino.DuinOS\main.cpp:1:
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h: In function 'void eeprom_read_block(void*, const void*, size_t)':
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error: ISO C++ forbids incrementing a pointer of type 'void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error: ISO C++ forbids incrementing a pointer of type 'const void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error: invalid conversion from 'const void*' to 'const uint8_t*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:290: error:   initializing argument 1 of 'uint8_t eeprom_read_byte(const uint8_t*)'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h: In function 'void eeprom_write_block(const void*, void*, size_t)':
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error: ISO C++ forbids incrementing a pointer of type 'void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error: ISO C++ forbids incrementing a pointer of type 'const void*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error: invalid conversion from 'void*' to 'uint8_t*'
e:/arduino-0021/hardware/tools/avr/lib/gcc/../../avr/include/avr/eeprom.h:398: error:   initializing argument 1 of 'void eeprom_write_byte(uint8_t*, uint8_t)'


A l'aide.....Snifff!!!

Go Up