Go Down

Topic: Chargement partiel d'un code compilé (Read 792 times) previous topic - next topic

fdufnews

#5
Nov 04, 2012, 01:50 pm Last Edit: Nov 04, 2012, 01:52 pm by fdufnews Reason: 1
Quote
Sinon coté interpreté, j'ai vue passer sur HackADay recemment un article a propos d'une machine java pour micro 8 bit

Oui enfin si les scénarios c'est du genre exécuter telle fonction et puis et puis telle autre, attendre tant de temps, faire changer telle sortie, on reste dans des trucs assez simple. Pour autant que la taille des dits scénarios ne soit pas trop importante. Et encore s'il sont volumineux on peut toujours imaginer de les stocker dans une EEPROM ou une carte SD

Gromain59

merci pour les réponses.

Un interpréteur serait sans doute la plus simple des solutions.

Quand je parles de scénarios, c'est pour accéder à l'état des différentes instances de mes classes, et faire du combinatoire avec.

Ex: si j'ai l'état "on" du bouton 1, géré par l'instance 1 de ma classe "switch", ET que j'ai l'état "off" du bouton 2 (instance 2 de la classe "switch"), alors j'appelle la méthode "toggle" de l'instance 3 de la classe "lighting" qui gère la lampe 3.
Toutes ces instances de classes sont créées dynamiquement en fonction de paramètres en eeprom (ou carte SD)

Bon, le vocabulaire utilisé est sans doute pas le bon, veuillez m'en excuser...

Gromain
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

skywodd

Bonjour,

L'idée de l'interpréteur est bien plus simple et est faisable sans trop de problème (stockage en EEPROM, ...).

J'ai utilisé ce principe pour mon générateur de chiptune, ça peut servir de base de réflexion :
https://github.com/skywodd/generic_chiptune_generator/blob/master/tracker.c
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Gromain59

#8
Nov 14, 2012, 03:04 pm Last Edit: Nov 14, 2012, 03:05 pm by Gromain59 Reason: 1
Salut,

j'ai abandonné l'idée du chargement partiel d'un code, même si c'est techniquement possible, je suis donc parti sur la voie de l'interpréteur.
J'ai donc codé un moteur de scenario basé sur des classes.
Chaque "boite" est une instance d'une classe, créé dynamiquement au démarrage du soft, par lecture des paramètres stockés en eeprom, et l'utilisation de malloc() et des pointeurs (merci osaka pour son tuto sur les pointeurs)
Ca me permet d'obtenir facilement ce genre d'équation:

Code: [Select]
*             _____        _____        ______
* [ pin 2 ]-O| AND |------|     |------| S    |-----[ pin 13 ]
* [ pin 3 ]--|_____|      | OR  |      |      |
*             _____       |     |      |  SR  |
* [ pin 4 ]--| XOR |------|_____|      |      |
* [ pin 5 ]--|_____|                   |      |
* [ pin 6 ]----------------------------| R    |
*                                      |______|


Le fonctionnement est simple, chaque boite est évaluée dans un ordre précis (dans l'exemple ce sera: AND, XOR, puis OR, et enfin SR)
Lors de l'évaluation d'une boite, on lit l'état des entrées car elle connait la source à interroger(codé dans les attributs de la classe lors de l'initialisation de l'instance).
Ainsi, la boite AND "sait" qu'elle doit interroger l'état de la pin 2, et la boite OR l'état des boites AND et XOR.
Une fois les entrées de la boite lues, l'état de la boite est calculé et mémorisé pour la rendre disponible à la (aux) boite(s) où elle est connectée.

Bien sur, les classes peuvent être de tout type, pourvu qu'elle fournisse une information (cas des entrées), et/ou supporte des commandes (cas des sorties)

Le GROS point maintenant, pour que tout ceci est un sens, est le développement d'une interface graphique qui permette la génération d'une table de paramètre reprenant les paramètres de chaque boite, et l'ordre d'évaluation.

Un exemple est disponible sur le dépôt software du projet.

Gromain

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

bricofoy

ça me fait penser au principe de la couche HAL du système de commande numérique linuxCNC,. Peut-être pourrais tu t'inspirer de celui-ci ? En plus pour linuxCNC, il existe un plugin eagle pour générer les fichier HAL de manière graphique.

http://www.linuxcnc.org/docs/HAL_User_Manual_fr.pdf
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'instal

Go Up