
Forum dédié aux karot:z, nabaztag:tag, mir:ror, dal:dal...
|
|
Demande d'aide Funfoo - Firmware / ByteCode du lapin
5
5
3
| | Demande d'aide Funfoo - Firmware / ByteCode du lapin | |
| |
| Auteur | Message |
|---|
PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 20:24 | |
| Salut à tous, salut Funfoo, Je m'adresse en particulier à Funfoo, qui si l'on en crois le whois de Nabizdead.net et les sources du Nabaztag connait particulièrement bien le lapin  Pourrais tu S'IL TE PLAIT nous filer un petit coup de main sur la manière de recompiler un firmware pour le lapin. Les questions sont les suivantes : * Le langage (VLisp / Metal ?), je trouve rien sur Metal sur google, aurais tu un ou deux liens permettant d'avoir quelques bases ? * Je suppose qu'il faut compiler d'abord le compilateur qui semble en C (sous windows avec VS par exemple) et il permet ensuite de compiler les fichiers mtl pour obtenir le firmware ? Je n'ai pas encore pu tester la compilation du Compiler, donc je parle un peu dans l'abstrait... Peux tu décrire rapidement comment a partir du compiler générer le firmware du lapin (ligne de commande par exemple) ? * La différence entre boot et nominal ? Boot correspond au bootloader et nominal au firmware à proprement parlé ? Les deux peuvent être chargé de manière dynamique par le lapin lors de la connexion au serveur ? * Eventuellement (même si j'en suis pas encore la), peux tu décrire la procédure d'échange avec le lapin pour qu'il récupère et install un nouveau firmware ? En gros, je te remercie énormément si tu pouvais nous expliquer une procédure qu'apparemment tu maitrises parfaitement. Pour finir, même si je comprendrais parfaitement une réponse négative, pense tu mettre le firmware que tu as développé pour Nabizdead en Open Source ? Merci d'avance Funfoo, et encore merci pour tout ton travail pour Nabizdead. Mickael
Dernière édition par PlaneteDomo le Mer 3 Aoû 2011 - 21:51, édité 1 fois |
|  | | RedoX Platinum Nabz


Localisation: France Nbr de messages: 1118 Points: 1927
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 20:48 | |
| Je ne suis pas funfoo, mais je vais te répondre à partir de ce que je sais ^^ | PlaneteDomo a écrit: | Les questions sont les suivantes : * Le langage (VLisp / Metal ?), je trouve rien sur Metal sur google, aurais tu un ou deux liens permettant d'avoir quelques bases ? |
Y'a une doc de référence sur le langage dans les sources de mindscape. D’après funfoo c'est proche du Caml. Y'a pas de tuto pour apprendre par contre...
| PlaneteDomo a écrit: | | * Je suppose qu'il faut compiler d'abord le compilateur qui semble en C (sous windows avec VS par exemple) et il permet ensuite de compiler les fichiers mtl pour obtenir le firmware ? Je n'ai pas encore pu tester la compilation du Compiler, donc je parle un peu dans l'abstrait... Peux tu décrire rapidement comment a partir du compiler générer le firmware du lapin (ligne de commande par exemple) ? | Avant de compiler, il faut un compilateur Donc compiler les sources C données par mindscape. Pixel en a parlé un peu dans un autre topic.
| PlaneteDomo a écrit: | | * La différence entre boot et nominal ? Boot correspond au bootloader et nominal au firmware à proprement parlé ? Les deux peuvent être chargé de manière dynamique par le lapin lors de la connexion au serveur ? |
Quand tu branches ton lapin, il tourne avec le bootcode nominal, stocké en flash. Ensuite, première action, il récupère le bytecode secondaire (via le /vl/bc.jsp) et oublie tout ce qu'il sait du bootcode nominal
| PlaneteDomo a écrit: | | * Eventuellement (même si j'en suis pas encore la), peux tu décrire la procédure d'échange avec le lapin pour qu'il récupère et install un nouveau firmware ? | C'est le bytecode nominal qui gère ça je pense...
| PlaneteDomo a écrit: | | Pour finir, même si je comprendrais parfaitement une réponse négative, pense tu mettre le firmware que tu as développé pour Nabizdead en Open Source ? | J'avais discuté un peu avec funfoo, il veut d'abord bien poser les bases de son projets avant de releaser quoi que ce soit sur un SVN. |
|  | | PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 21:14 | |
| | RedoX a écrit: | | Je ne suis pas funfoo, mais je vais te répondre à partir de ce que je sais ^^ |
Tout d'abord, merci pour ta réponse rapide. Toute aide est bonne à prendre !
| RedoX a écrit: | | PlaneteDomo a écrit: | Les questions sont les suivantes : * Le langage (VLisp / Metal ?), je trouve rien sur Metal sur google, aurais tu un ou deux liens permettant d'avoir quelques bases ? |
Y'a une doc de référence sur le langage dans les sources de mindscape. |
Effectivement, je suis passé un peu vite sur le répertoire Outils 
Il va falloir que je ressorte mes cours de compilation par contre ...
| RedoX a écrit: | | D’après funfoo c'est proche du Caml. Y'a pas de tuto pour apprendre par contre... |
Effectivement, j'avais vu cette remarque de funfoo. Mais si je me fie à la doc fourni, le Metal semble être un langage inventé par Sylvain spécialement pour le lapin ....
Dommage qu'il ai pas tout fait en C, ça m'aurait simplifié la vie !
| RedoX a écrit: | | PlaneteDomo a écrit: | | * Je suppose qu'il faut compiler d'abord le compilateur qui semble en C (sous windows avec VS par exemple) et il permet ensuite de compiler les fichiers mtl pour obtenir le firmware ? Je n'ai pas encore pu tester la compilation du Compiler, donc je parle un peu dans l'abstrait... Peux tu décrire rapidement comment a partir du compiler générer le firmware du lapin (ligne de commande par exemple) ? | Avant de compiler, il faut un compilateur Donc compiler les sources C données par mindscape. Pixel en a parlé un peu dans un autre topic. |
La aussi, j'ai lu le thread ouvert par Pixel, mais il a compilé sous une vieille version de linux en utilisant les scripts qui sont dans les sources.
Apparemment Funfoo travaille sous Windows avec VS (cf le même post), et vu que c'est ce que je connais le mieux aussi, je préférerais utiliser VS moi aussi...
| RedoX a écrit: | | PlaneteDomo a écrit: | | * La différence entre boot et nominal ? Boot correspond au bootloader et nominal au firmware à proprement parlé ? Les deux peuvent être chargé de manière dynamique par le lapin lors de la connexion au serveur ? |
Quand tu branches ton lapin, il tourne avec le bootcode nominal, stocké en flash. Ensuite, première action, il récupère le bytecode secondaire (via le /vl/bc.jsp) et oublie tout ce qu'il sait du bootcode nominal |
La, de ce que j'en comprends moi (mais j'aurais aimé confirmation de funfoo). On a un bootloader (le boot.0.0.0.x.mtl) qui est chargé sur le lapin. Je sait pas si ont peut le changer à distance, (risque de briquer les lapins !) mais apparemment oui puisque certains sont passé de 0.0.0.9 en 0.0.0.10 pour pouvoir utiliser Nabizdead...
D'ailleurs, en regardant les sources, ont retrouve bien les pages web de configuration du lapin. Donc ce bootloader permet je pense de configurer le lapin et de charger le firmware (compilé depuis nominal.mtl) en utilisant le /vl/bc.jsp
Petite remarque au passage, il y a un bootloader en version 0.0.0.12, alors que le dernier déployé semble être le 0.0.0.10
| RedoX a écrit: | | PlaneteDomo a écrit: | | * Eventuellement (même si j'en suis pas encore la), peux tu décrire la procédure d'échange avec le lapin pour qu'il récupère et install un nouveau firmware ? | C'est le bytecode nominal qui gère ça je pense... |
Non, je pense justement que c'est le boot.mtl qui gère ça et charge le firmware nominal pour le lancer ensuite.
Le chargement ce fait à partir du /vl/bc.jsp je pense (il me semble avoir lu des trucs la dessus, mais si Funfoo peut nous confirmer le principe, ça serait cool)
| RedoX a écrit: | | PlaneteDomo a écrit: | | Pour finir, même si je comprendrais parfaitement une réponse négative, pense tu mettre le firmware que tu as développé pour Nabizdead en Open Source ? | J'avais discuté un peu avec funfoo, il veut d'abord bien poser les bases de son projets avant de releaser quoi que ce soit sur un SVN. |
OK, pas de soucis, j'aimerais déjà pouvoir compiler un firmware, ensuite avoir le firmware de funfoo, c'est surtout pour voir certaines choses style la manière dont il a géré l'heure ...
|
|  | | RedoX Platinum Nabz


Localisation: France Nbr de messages: 1118 Points: 1927
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 21:33 | |
| C'est pas à proprement parler un bootloader: T'as le firmware en C qui fait tourner une machine virtuelle et qui execute le bytecode nominal (en Metal) avec tous les avantages d'une VM (ramasse miettes, confinement, et tout :p). Ensuite, ce bytecode est remplacé par le bytecode "normal" on va dire (qui fait tourner le lapin en fonctionnement normal) après la récupération via le /vl/bc.jsp.
enfin, c'est comme ça que j'ai compris le business ^^ |
|  | | funfoo Special Nabz

Localisation: Paris Nbr de messages: 89 Points: 1098
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 21:51 | |
| ça fait beaucoup de questions...
sur les dénominations : Métal est un langage que j'ai développé en janvier 2003, bien avant que je rejoigne Olivier pour co-fonder Violet. C'est un outil perso, c'est pourquoi il n'y a pas de doc. Ca ressemble pas mal au langage Scol que j'avais développé en 96, et Caml est une bonne introduction (Métal est un peu moins théorique).
Lorsque le développement du nab V2 a démarré en fév2006, j'avais besoin très rapidement d'une machine virtuelle plus évoluée que celle que j'avais réalisée pour la V1, et j'ai pensé à intégrer une version allégée de Métal, ce qui a effectivement permis de tenir les délais, puisque le soft était prêt dès septembre 2006. L'antériorité de ce langage n'autorisait évidemment pas Mindscape à en diffuser les sources sans mon accord ; mais on ne va pas tirer sur l'ambulance.
VLISP signifie Violet Lowcost IS Powerful ; une manière de dire qu'on peut faire beaucoup avec peu. C'est le nom de code du projet technique de la V2
Le projet Visual intègre le compilateur, l'interpréteur et le simulateur. Je ne connais rien de la version linux qui en dérive visiblement. Je ne sais pas si cette version linux intègre le simulateur ; si ce n'est pas le cas, je conseille vraiment la version visual.
Le firmware est constitué de l'interpréteur, des librairies "système" bas-niveau (dont le driver wifi réalisé par un étudiant exceptionnel, alors en maths spé, pendant qu'ils passait les concours!), et du bytecode de boot. Pour modifier le firmware, je pense qu'il faut nécessairement avoir les outils de dev IAR (compilo + sonde) ; en tout cas, c'est comme ça que je l'ai fait.
Le bytecode de boot est intégré dans le firmware sous la forme d'un tableau (fichier bc.c)
Le bytecode de boot contient la stack ip, le serveur de configuration, la série de tests usine, et le comportement initial (connexion puis téléchargement du bytecode nominal).
Je ne connais pas le bytecode nominal xmpp, celui-ci ayant été réalisé par l'équipe à laquelle j'avais cédé la main début 2007.
Je pense effectivement partager le travail que je réalise sur nabizdead, une fois qu'il sera stabilisé ; toutefois, je préférerais que les développeurs s'intéressent à développer leurs propres services à connecter sur nabizdead, au travers de l'api, encore embryonnaire, mais qui va s'étoffer notamment avec les "serveurs tiers" (ie, le fait que les lapins ping directement d'autres serveurs que le mien).
En ce début août, je ne pourrai pas fournir beaucoup de support : je consacre l'essentiel de mon temps à ma famille, et je dois surveiller et améliorer un peu le fonctionnement de nabizdead, même si ça tourne pas mal tout seul.
|
|  | | PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 22:18 | |
| | funfoo a écrit: | | ça fait beaucoup de questions... |
Et je te remercie très sincèrement d'avoir pris le temps d'y répondre.
| funfoo a écrit: | | je pense qu'il faut nécessairement avoir les outils de dev IAR (compilo + sonde) ; en tout cas, c'est comme ça que je l'ai fait. |
OK, par contre pour une modification du bytecode nominal, pas besoin de cette artillerie lourde ?
| funfoo a écrit: | | Je ne connais pas le bytecode nominal xmpp, celui-ci ayant été réalisé par l'équipe à laquelle j'avais cédé la main début 2007. |
Ok, je suis en train de regarder un peu, je commence à comprendre quelques trucs ...
| funfoo a écrit: | | Je pense effectivement partager le travail que je réalise sur nabizdead, une fois qu'il sera stabilisé ; toutefois, je préférerais que les développeurs s'intéressent à développer leurs propres services à connecter sur nabizdead, au travers de l'api, encore embryonnaire, mais qui va s'étoffer notamment avec les "serveurs tiers" (ie, le fait que les lapins ping directement d'autres serveurs que le mien). |
OK, merci la aussi. Je m'intéresse à la recompilation d'un bytecode nominal, d'abord par curiosité personnel et ensuite, parce que j'ai pas encore testé le tiens qui si ça se trouve fait déjà tout ce que je veux
Ce qui est surement super pour beaucoup, ne l'ai pas pour ce que je veux faire (le lapin qui parle seulement quand il détecte la présence), moi je voudrais pour une utilisation dans un système domotique, qu'il ping le serveur toutes les 5 sec par exemple et si le serveur lui renvoi un message, qu'il le dise que je sois à coté ou pas... de même, je voudrais pouvoir mettre dans les flux : * 1 lien vers un mp3 que le lapin lira * 1 position d'oreille => pour qu'il mette les oreilles dans une position donné * 1 palette de couleur pour les leds pour mettre les leds en couleur voulu. * 1 url que le lapin devra charger (sur le reseau local ou internet)
Quand on passe un tag RFID sur le lapin, je voudrais qu'il appelle une url avec le numéro du tag sur le serveur (par exemple : http://www.nabizdead.net/tagrfid.php?tag=12FE4543ADD
Et cette page renvoi alors un flux suivant l'idée d'avant (par exemple une page web à charger par le lapin) ...
| funfoo a écrit: | En ce début août, je ne pourrai pas fournir beaucoup de support : je consacre l'essentiel de mon temps à ma famille, et je dois surveiller et améliorer un peu le fonctionnement de nabizdead, même si ça tourne pas mal tout seul.
|
Je comprends parfaitement , et je te souhaite de bonnes vacances  Moi, je reprends lundi, et je n'aurais surement pas autant de temps que je voudrais à consacrer à tout ça
Encore merci,
A bientôt |
|  | | PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 22:49 | |
| Bon, ben je me répond à moi même Même pas besoin de Visual Studio Les sources de Mindscape sont données avec une version Précompilé du vlispemu.exe Je n'arrive pas à "compiler" le bootcode nominal.mtl, car il me dit que le mot clef "const" n'est pas reconnu... Par contre, j'arrive très bien à compiler le nominal-ping.mtl qui doit correspondre au dernier bytecode que tu avais fait, donc sans XMPP (que je ne souhaite de toute façon pas garder moi non plus) ! Ensuite, on voit le petit simulateur qui s'ouvre avec les led, les oreilles qui sont simulées Trop bon travail monsieur Sylvain !!!! PS: On obtient un foo.bin qui est le fichier que doit renvoyer le bc.jsp ? |
|  | | wizz.cc Special Nabz


Localisation: Paris - France Nom du Nabaztag: Wizz.cc Nbr de messages: 669 Points: 989
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Dim 31 Juil 2011 - 13:57 | |
| @funfoo merci pour toutes ces réponses. j'apprécie, comme tous ici, ton implication et ta réactivité... le "père" du système embarqué ne pouvait manifestement pas en faire moins  pour sauver tous ses rejetons ! comme bcp, j'attends avec impatience la mise à dispo d'un tuto complet/exemple sur les bases de la ré-écriture du bytecode nominal, ce qui pourra grandement aider pour le dév d'applications plus spécialisées dans des domaines tout aussi variés. En attendant, tu as raison, il faut nourrir les bestioles et donc se placer comme "fournisseurs de contenus". nous allons nous y employer. à ce titre il serait intéressant d'autoriser plusieurs flux publics et privés par compte (en attendant les serveurs tiers). cdt, wizz.cc |
|  | | PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 9:51 | |
| Salut à tous, Aller une petite pause ... dur dur la reprise  ! Bon, j'ai généré une version release du compilo/interpreteur/simulateur sans trop de problème. Voici l'exe compilé pour ceux qui n'ont pas les outils : http://dl.dropbox.com/u/1998902/nabaztag/vlispemu.zip Pour générer un bytecode nominal, il suffit maintenant de mettre cet exe dans le même répertoire qu'un fichier config.txt qui contiendra le nom du fichier mtl à compiler. (cf dans les sources, y'en a un qui traine) On lance vlispemu.exe, et roulez, l'exe compile le bytecode et génère un fichier foo.bin qui devra être renvoyé par bc.jsp pour mettre à jour le lapin. Je n'arrive pas à compiler le dernier nominal.mtl qui contient des mots clés "const". Je pense que le vlistemu fourni n'est pas le dernier en date...  Par contre, ça fonctionne très bien pour générer le nominal-ping.mtl qui doit être (j'espère) le dernier firmware avant xmpp. Cela est une très bonne nouvelle, car du coup il doit être compatible avec OpenNab ! Cela permettrait de monter facilement un nouveau serveur (en htttp, donc sur n'importe quel hébergement mutualisé) en quelques minutes. J'ai commencé à regarder un peu le code du nominal-ping.mtl, si j'ai le temps, j'essaye de faire un article dessus sur mon blog... A+
Dernière édition par PlaneteDomo le Mer 3 Aoû 2011 - 22:28, édité 2 fois |
|  | | juherr Lapin nain

Age: 28 Localisation: Strasbourg Nbr de messages: 9 Points: 311
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 12:19 | |
| Dans "mtl_linux\utils", tu as le script "correct_const.sh" qui semble convertir les "var" en "const".
On peut s'en doute en conclure que les versions suivantes au nominal-ping ont été produites via linux. |
|  | | PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 12:57 | |
| | juherr a écrit: | Dans "mtl_linux\utils", tu as le script "correct_const.sh" qui semble convertir les "var" en "const".
On peut s'en doute en conclure que les versions suivantes au nominal-ping ont été produites via linux. |
Effectivement, ça semble être le cas !
Vu que le bytecode xmpp ne m’intéresse pas trop, je vais rester sur le vlispemu windows... Si quelqu'un voit une grosse différence avec la version linux qu'il léve la main ... (enfin l'oreille )
A+ |
|  | | funfoo Special Nabz

Localisation: Paris Nbr de messages: 89 Points: 1098
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 20:45 | |
| effectivement, le const ne fait pas partie du métal original. Bizarre d'avoir ajouté ça. |
|  | | PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mar 2 Aoû 2011 - 18:52 | |
| @funfoo : Encore un petit coup de main please  ? Jusque la, j'avais fait beaucoup de théorique, et maintenant, je voudrais pouvoir charger mon nominal sur le lapin. J'ai mis en commentaire le tag "SIMU", j'ai généré le fichier foo.bin, et j'ai un bc.jsp sur le serveur qui renvoi le foo.bin. MAIS, ça ne fonctionne pas...  J'ai regardé le foo.bin d'un peu plus près, et il se trouve qu'il n'y a pas l'entête amberxxxxx, est ce normal ? Comment ajouter cette entête ? Merci beaucoup d'avance, Mickael |
|  | | rtp Lapin nain

Localisation: paris Nbr de messages: 10 Points: 1967
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mar 2 Aoû 2011 - 19:32 | |
| | PlaneteDomo a écrit: | @funfoo : Encore un petit coup de main please ?
Jusque la, j'avais fait beaucoup de théorique, et maintenant, je voudrais pouvoir charger mon nominal sur le lapin.
J'ai mis en commentaire le tag "SIMU", j'ai généré le fichier foo.bin, et j'ai un bc.jsp sur le serveur qui renvoi le foo.bin.
MAIS, ça ne fonctionne pas... 
J'ai regardé le foo.bin d'un peu plus près, et il se trouve qu'il n'y a pas l'entête amberxxxxx, est ce normal ? Comment ajouter cette entête ?
|
amber...mind signifie que le binaire est "signe". En ce qui concerne tester un binaire modifie, j'ai fait
| Code: | ./mtl_comp -s nominal.mtl bootc
|
et j'ai remplace le bootc d'ojn par ce bootc. Le "-s" fait toute la diff.
Ma modif etait de changer la couleur de respiration. C'est ce bout de code la:
| Code: | fun bottomled= if gSleepState == 0 then if !earDetecting then (let osc time_ms>>4 -> v in led LED_BASE v*0x10001); // pulse violet 0;;
| . J'ai mis 0x000101 a la place et ca a fonctionne. Apres, c'etait quand meme risque. J'ai aucune idee de ce qui pourrait arriver si on met un fichier tout pourri (genre utiliser une sonde JTAG ?) |
|  | | PlaneteDomo Lapin nain

Localisation: Clermont fd Nbr de messages: 24 Points: 346
 | Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mar 2 Aoû 2011 - 20:50 | |
| En fait, le projet VS (sous windows) semble ne pas signer le binaire en sorti !!!! J'ai donc utilisé le code de la version Linux pour modifier le bootstrap.c du projet windows, et maintenant ....... CA MARCHE ! J'ai modifié le vlispemu que j'avais compilé : http://dl.dropbox.com/u/1998902/nabaztag/vlispemu.zip Il génère maintenant le foo.bin (non signé) et un bc.bin signé J'ai fait un test sur mon serveur, et tout ce passe bien , le lapin récupère le nouveau bytecode nominal et l'exécute...  Bon, maintenant reste plus qu'à faire des trucs intelligents dans ce bytecode  !
Dernière édition par PlaneteDomo le Mer 3 Aoû 2011 - 22:27, édité 1 fois |
|  | | | | Demande d'aide Funfoo - Firmware / ByteCode du lapin | |
|
Sujets similaires |  |
|
| | Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|