Kernel préemptif / multitâche (+ primitives de synchro et gestion du temps)

Bonjour à tous,

J'aimerais vous exposer mon projet "OS47". C'est un projet en développement continu mais la première version est complète et déjà disponible.

J'ai créé un noyau permettant d’exécuter plusieurs tâches à la fois. Le noyau a spécialement été conçu pour fonctionner sur les cartes Arduino UNO et donc sur le chip ATmega328 mais il devrait fonctionner sur les puces moins puissantes.

Voici quelques unes des fonctionnalités apportées :

  • Ordonnancement préempté ou coopératif
  • Détection des débordements de pile
  • Gestion des états des tâches
  • Faible empreinte mémoire
  • Gestion du temps (délai écoulé, attente passive / active)
  • Sémaphores, barrières, etc
  • Faible empreinte mémoire
  • Code source modulaire pour d'autres architectures

Le projet a un site dédié : http://www.rtos47.com/. Vous pourrez y trouver une documentation complète, des tutoriaux pour démarrer et comprendre les dessous.

Le tout est sous licence MIT. Si vous voulez obtenir directement le code source voici le lien GitHub : https://github.com/zives/os47.

N'hésitez pas à commenter :wink:

Bonsoir,
Voila un sujet intéressant :wink:
J'ai survolé le site et il faudra que je teste.
Bravo

bonsoir
+1

bonjour
petit test rapide

avec ton sketch sur cette page
http://www.rtos47.com/tuto/getting_started/#set-up-my-first-sketch

j'obtient une erreur de compil (j'ai du louper qq chose :grin: )

C:\Users\COMPAQ~1\AppData\Local\Temp\build6437161350218411665.tmp\os47\os47_core.cpp.o: In function _os47_switch_task': C:\Program Files (x86)\arduino-1.5.7\libraries\os47/os47_core.cpp:713: undefined reference to _os47_stack_overflow_fnc'

de plus j'interprete la p^hrase ci-dessous
c'est 1/100 de seconde ou 1 ms ?

This function initializes the kernel. In this case, the kernel interruption occurs every 1/100 seconds (1ms).

Bonjour,

Merci de ton retour.
Il s'agit de 10ms, j'ai procédé à la modification. Concernant le problème de compilation, celui-ci n’apparaît que depuis la release 1.5.7 de l'IDE. La manière de compiler est surement différente. Je vais enquêter là dessus.

dzives:
Bonjour,

Merci de ton retour.
Il s'agit de 10ms, j'ai procédé à la modification. Concernant le problème de compilation, celui-ci n’apparaît que depuis la release 1.5.7 de l'IDE. La manière de compiler est surement différente. Je vais enquêter là dessus.

ok
je ferais un test ce soir avec une release anterieure

j'ai là les 1.5.2 r2 et 1.5.6 r2 et ça passe (à la compil)

Problème résolu. Il faudra re-télécharger le ZIP.

dzives:
Problème résolu. Il faudra re-télécharger le ZIP.

ok , ça passe
reste plus qu'à bien apprehender tout ça :grin:

au passage (avec la derniere version de ta lib)
1.0.5-r2 7016 octets
1.5.6-r2 6938 octets
1.5.7 6786 octets

Superbe travail :slight_smile:

Merci :slight_smile: