Concept multi-tâches sur une µC [Forums - Mes premières expériences]
Concept multi-tâches sur une µC [Forums - Mes premières expériences]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes





Concept multi-tâches sur une µC
Intéressé
Inscrit:
14/06/2008 19:10
De France, Tours
Messages: 26
Hors Ligne
Salut et Meilleurs voeux,

Connaissez vous des articles qui pourront éclairer un programmeur expérimenté en haut niveau (Java, C#) mais débutant en µC sur les concepts de comment traiter plein d'opérations en parallèle.

Plus concrètement j'ai sous la main une Carte DigiButler (Coldfire MCF 52231) que j'arrive a flasher avec le programme de démo fourni avec (switch relai, lecture port, serveur http) que je compile avec CodeWarrior.

Maintenant que la chaîne matérielle est validée, j'ai quelques idées mais toutes me ramènent au traitement de plusieurs tâches simultanées.
Par exemple:
- servir les pages webs
- lecture d'un donnée sérielles (from 1-wire ou autres capteurs)
- lecture des ports
- enregistrement de données dans une pc-card.

Comment organiser tout ce bazar ?
En programmation haut niveau il y a tellement de couches pour s'occuper de tout qu'il suffit de gérer ça avec des évenements et des threads, c'est pas bien difficile. L'ordonnancement est géré par les couches sous-jacentes.

Là, tout de suite, devant le code source du DigiButler je suis complètement scotché. Je n'ais pas assez de connaissances pour avoir le début d'une idée. Je ne vais pas commencer à installer un Linux pour µC sur un si petit chip...

Voilà, donc si vous connaissez des articles expliquant les principes d'organisation multi-tâches, je suis preneur !

Merci d'avance
et de toute façon Meilleurs Voeux pour 2010 !

Cyrille.

Posté le : 04/01/2010 22:56
:bug:
Transférer la contribution vers d'autres applications Transférer


Re: Concept multi-tâches sur une µC
Accro
Inscrit:
29/08/2006 10:42
De cambrai
Messages: 658
Hors Ligne
Salut à toi, et meilleurs voeux aussi.

Il me semble avec lu des posts parlant de systèmes de gestion de taches sur ce forum (helium, ou free RTOS il me semble) tournant sur des petits uC permettant d'appeler des fonctions à intervalles réguliers en gérant des priorités....

Maverick

Posté le : 04/01/2010 23:03
La perfection est atteinte non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer....
(A de St EXUPERY)
Transférer la contribution vers d'autres applications Transférer


Re: Concept multi-tâches sur une µC
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1896
Hors Ligne
Bonjour

Le code fourni avec le digibutler est basé sur du code fourni par Freescale sur ses cartes de demo
Il intègre un "RTOS", exactement ce que tu cherches si je comprends bien. C'est tellement de haut niveau comme programmation (gestion de taches et de priorités) que je n'y comprends rien ! je suis descendu d'un niveau et j'essaie de remonter pour comprendre comment fonctionne le RTOS...

L'AN3470 décrit son fonctionnement.

(l'AN3455 t'aidera pas mal aussi pour le serveur web)

Posté le : 04/01/2010 23:19
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Concept multi-tâches sur une µC
Intéressé
Inscrit:
14/06/2008 19:10
De France, Tours
Messages: 26
Hors Ligne
Merci pour ces informations.

Penses tu que ce RTOS permet de gérer simplement plusieurs communications simultanées sur différents protocoles ? Par exemple répondre à une requête tcp/ip en même temps qu'une requête I2C ou USB ?

Cyrille.

Posté le : 05/01/2010 08:35
:bug:
Transférer la contribution vers d'autres applications Transférer


Re: Concept multi-tâches sur une µC
Modérateur
Inscrit:
24/09/2005 13:30
De 04110 - VACHERES- FRANCE
Messages: 1492
Hors Ligne
Bonjour,

Ce ne sera jamais "en même temps", car le processeur ne peut exécuter qu'une seule instruction à la fois, mais pour prendre le cas des COM, si les données arrivent sous IT, elles seront placées dans des buffers différents dès leurs arrivée et être traitées ensuite, COM par COM.
Donc on peut dire en "même temps" quand même, à l'oeil humain...
Pas besoin d'OS d'ailleurs pour traiter plusieurs COM.

Etant donné ta culture haut niveau / gros systèmes, il faudrait peut être commencé par plusieurs petites applis pour te permettre de comprendre le fonctionnement "bas niveau", l'éxécution d'un programme simple (une seule COM par exemple). Ensuite, tu y rajouteras d'autres "taches" et tu verras que ça peut se faire sans OS si c'est bien codé (ne jamais attendre des actions extérieures en boucle par exemple, pour ne pas bloquer le processeur).

Yvan

Posté le : 05/01/2010 08:45
Le houblon, c'est bon pour la récupération.
Transférer la contribution vers d'autres applications Transférer


Re: Concept multi-tâches sur une µC
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1149
Hors Ligne
Bonjour,

Il existe une nuance dans les noyaux temps réels : les préemptifs et les autres.
Les noyaux préemptifs sont ceux qui allouent du temps à une tâche de manière dynamique. (en général avec gestion de priorité). C'est le plus performant, mais aussi un poil plus complexe.
Le 2e cas ce sont les noyaux non préemptifs que l'on appelle en général des séquenceurs de taches.

Comme le dis Yvan, un logiciel temps réel n'execute pas deux taches en même temps, mais alloue du temps pour qu'une tache puisse s'exécuter. Parfois il est possible de morceler une tache pour qu'elle laisse l'illusion que plusieurs taches sont en même temps.


Concernant la programmation bas niveau en temps réel, il y a un seul concept de base qu'il faut bien intégrer. Lorsque l'on code une fonction, elle ne doit jamais attendre un évènement ! C'est à dire qu'il faut l'appeler régulièrement et tester si la condition est vrai plutôt que d'attendre que l'évènement se produise. Ensuite, il faut écrire des fonctions assez courtes en durée.

Ainsi, on peut par exemple toutes les x ms appler une fonction qui list le buffer d'un port série, une qui met a jours l'affichage de LED, une qui lis un clavier, etc... Chaque fonction teste si l'évènement s'est produit. Si ce n'est pas le cas, elle passe à la suivante, si c'est le cas elle déroule le code correspondant.

Donc appelant en boucle ces fonctions qui chacune font un test, on a fait un genre de temps réel.

Bien entendu, le concept se complexifie lorsque l'on commence à ajouter des gestion dynamique de temps, des gestion de priorités, etc.
Il y a plusieurs articles sur le site dans la base de donnée qui traitent du sujet...

Cordialement
Stéphane

Posté le : 01/02/2010 12:11
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Concept multi-tâches sur une µC [Forums - Mes premières expériences]