|
| Demande d'aide Funfoo - Firmware / ByteCode du lapin | |
|
+4wizz.cc funfoo RedoX PlaneteDomo 8 participants | |
Auteur | Message |
---|
PlaneteDomo Lapin nain
Localisation : Clermont fd Nbr de messages : 24 Carottes : 4914
| Sujet: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 21: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 - 22:51, édité 1 fois | |
| | | RedoX Platinum Nabz
Localisation : France Nbr de messages : 1287 Carottes : 6689
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 21: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 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 22: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 : 1287 Carottes : 6689
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 22: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 Carottes : 5666
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 22: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 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 23: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 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Sam 30 Juil 2011 - 23: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 Nabaztag : Wizz.cc Nbr de messages : 735 Carottes : 5664
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Dim 31 Juil 2011 - 14: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 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 10: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 - 23:28, édité 2 fois | |
| | | juherr Lapin nain
Age : 40 Localisation : Strasbourg Nbr de messages : 9 Carottes : 4879
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 13: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 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 13: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 Carottes : 5666
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Lun 1 Aoû 2011 - 21: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 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mar 2 Aoû 2011 - 19: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 : 12 Carottes : 6537
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mar 2 Aoû 2011 - 20: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 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mar 2 Aoû 2011 - 21: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 - 23:27, édité 1 fois | |
| | | totol Lapin nain
Localisation : Paris Nbr de messages : 21 Carottes : 4884
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 22:40 | |
| Vous parlez tous de Windows. Pour ma par je préfère Linux Je ne sais pas si j'ai eu de la chance mais sur mon serveur fraichement installé, ça a fonctionné du premier coup. Pour information, je suis sur une arch (flemme de me compiler une gentoo ^^) à jour de cette aprèm. Voici la démarche suivie. On va dire que je suis l'utilisateur "foo" (sert dans les chemins de dossiers) 1) Récupérer les sources Pour le moment, rien de plus simple, tout est sur le site des sources : , onglet "sources" Donc, dans le répertoire personnel : - Code:
-
svn checkout <idem, mettre la bonne url> nabaztag-source-code-read-only 2) Compilation du compilateur Metal Se déplacer dans le répertoire - Code:
-
/home/foo/nabaztag-source-code-read-only/Sources/Hardware/compilateur/trunk/mtl_linux et compiler le compilateur metal grâce à la commande - Code:
-
make Il y a pas mal de Warning mais au final le fichier mtl_comp (le compilateur metal) est présent
3) Générer le nominal.mtl final et le compiler en bytecode, le fameu bootc Le fichier nominal.mtl est en fait un regroupement de pas mal de fichiers ".mtl" Se déplacer dans le répertoire - Code:
-
/home/foo/nabaztag-source-code-read-only/Sources/Hardware/bytecode/branches/bc-nominal/nominal_splitted modifier le fichier "test_compile.sh" en remplacant la ligne - Code:
-
COMPILER="$HOME/work/compilateur/trunk/mtl_linux/mtl_comp" par - Code:
-
COMPILER="$HOME/nabaztag-source-code-read-only/Sources/Hardware/compilateur/trunk/mtl_linux/mtl_comp" et la ligne - Code:
-
"$COMPILER" -s "../nominal.mtl" "/var/www/bytecode" par - Code:
-
"$COMPILER" -s "../nominal.mtl" "../bytecode" enfin, générer le fichier bytecode grâce à la commande - Code:
-
sh test_compile.sh Le fichier bytecode (le bootc) est disponible dans le dossier - Code:
-
/home/foo/nabaztag-source-code-read-only/Sources/Hardware/bytecode/branches/bc-nominal
Il ne reste plus qu'à le déplacer (par exemple pour OpenJabNab) dans le dossier "server" du serveur NabazTag et de le renommer en "bootc"
Je ne sais pas si ce genre de tuto existe quelque part mais ça lui donne le mérite d'exister ici
Par contre, je crois qu'on s'écarte du sujet, à la base c'était pour le firmware du lapin.
| |
| | | juherr Lapin nain
Age : 40 Localisation : Strasbourg Nbr de messages : 9 Carottes : 4879
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 22:45 | |
| Ton Arch est une 32 ou 64bits ? Quelle est la version de gcc utilisée ? | |
| | | funfoo Special Nabz
Localisation : Paris Nbr de messages : 89 Carottes : 5666
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 22:48 | |
| @totol : je n'ai pas pu essayer la version linux ; y a-t-il un simulateur avec (X11 ou Qt) ? S'il n'y en a pas, ça sera vraiment dur de bosser avec. | |
| | | PlaneteDomo Lapin nain
Localisation : Clermont fd Nbr de messages : 24 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 22:53 | |
| - totol a écrit:
Par contre, je crois qu'on s'écarte du sujet, à la base c'était pour le firmware du lapin.
Merci a toi pour ce tuto Tu ne t'ecarte pas du tout du sujet. A la base, je voulais en fait pouvoir modifier le bytecode nominal, mais par erreur de terminologie, j'ai parlé de firmware.... J'ai corrigé le sujet du post ! A+ | |
| | | totol Lapin nain
Localisation : Paris Nbr de messages : 21 Carottes : 4884
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 22:54 | |
| - juherr a écrit:
- Ton Arch est une 32 ou 64bits ?
Quelle est la version de gcc utilisée ? 32 bits Réponse du "gcc -v" : - Code:
-
Utilisation des specs internes. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-linux-gnu/4.6.1/lto-wrapper Target: i686-pc-linux-gnu Configuré avec: /build/src/gcc-4.6.1/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --enable-gnu-unique-object --enable-linker-build-id --with-ppl --enable-cloog-backend=isl --enable-lto --enable-gold --enable-ld=default --enable-plugin --with-plugin-ld=ld.gold --disable-multilib --disable-libstdcxx-pch --enable-checking=release Modèle de thread: posix gcc version 4.6.1 (GCC) - funfoo a écrit:
- @totol : je n'ai pas pu essayer la version linux ; y a-t-il un simulateur avec (X11 ou Qt) ?
S'il n'y en a pas, ça sera vraiment dur de bosser avec. Je n'ai pas encore testé. le simulateur permet aussi de déboguer ? car sinon, la différence ( si j'ai bien compris ) est seulement le temps de démarrage du lapin. | |
| | | juherr Lapin nain
Age : 40 Localisation : Strasbourg Nbr de messages : 9 Carottes : 4879
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 23:05 | |
| - totol a écrit:
- 32 bits
Merci. Ça confirme ce que je pensais. Impossible que ça fonctionne tel quel sur 64bits à cause de cast barbare d'un pointeur en int. | |
| | | funfoo Special Nabz
Localisation : Paris Nbr de messages : 89 Carottes : 5666
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 23:07 | |
| Avec le simulateur, tu as une sortie console de type printf (Secho, Iecho, ... dans le langage métal). Ca aide ; et le temps de démarrage est quand même un point important. Mon expérience de l'embarqué, c'est qu'il faut réduire au maximum le temps de boucle des itérations de dev : compilation, lancement, visualisation du résultat. Sinon, on perd beaucoup de temps, et on perd en concentration. | |
| | | totol Lapin nain
Localisation : Paris Nbr de messages : 21 Carottes : 4884
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 23:10 | |
| - funfoo a écrit:
- @totol : je n'ai pas pu essayer la version linux ; y a-t-il un simulateur avec (X11 ou Qt) ?
S'il n'y en a pas, ça sera vraiment dur de bosser avec. Je viens de regarder, en fait avec le "mtl_comp" (compilateur Metal), un exécutable se nommant "mtl_simu" s'est également créé. Il faut par contre ramener a la main le "nominal.mtl" généré. Quand on le lance ( rien n'est graphique , tout est en console ) : 1) il compile le nominal.tml, on voit les logs de compile. je ne met pas ici car c'est long et ca ne servirait à rien 2) il démarre. Et là, il me lance les logs suivant jusqu'à s’arrêter car configuré pour aller sur les serveurs violet. - Code:
-
[vm] #GC : sp=1486 hp=39460 used=19% [vm] b:80bf820 bc:80bf820 st:38f4 op:ffffffff
[vm] 00.13.d3.84.95.8b. [vm] :started [vm] 00000000 72 2e 6e 61 62 61 7a 74 61 67 2e 63 6f 6d 2f 76 r.nabaztag.com/v [vm] 00000010 6c 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d l.-------------- [vm] 00000020 2d 2d 2d 2d 2d 2d 2d 2d 2d 01 00 00 00 00 ff ff ---------.....▒▒ [vm] 00000030 ff 00 00 00 00 00 00 00 00 00 00 2d 2d 2d 2d 2d ▒..........----- [vm] 00000040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- [vm] 00000050 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 00 2d 2d 2d ----------...--- [vm] 00000060 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- [vm] 00000070 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- [vm] 00000080 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- [vm] 00000090 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 00 00 00 00 ------------.... [vm] 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2d ...............- [vm] 000000b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- [vm] 000000c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 47 ---------------G [vm] [dhcp] startdhcp [vm] [dhcp] really do startdhcp [vm] >uff.ff.ff.ff.ff.ff. [simunet] xxxx netSend [vm] :done [vm] ## DUMPSCAN >>>> [vm] wifi state=1 [vm] 00.13.d3.84.95.8b. [vm] ## DUMPSCAN >>>> [vm] ## SCAN [vm] mac:78.79.7a.78.79.7a. [vm] bssid:37.36.35.34.33.32. [vm] rssi:-10 [vm] channel:11 [vm] rateset:1 [vm] encryption:0 [vm] ## SCAN a"a<a'a a\a [vm] mac:78.79.7a.78.79.7a. [vm] bssid:37.36.35.34.33.32. [vm] rssi:-10 [vm] channel:11 [vm] rateset:1 [vm] encryption:3 [vm] ## SCAN foo [vm] mac:78.79.7a.78.79.7a. [vm] bssid:37.36.35.34.33.32. [vm] rssi:-20 [vm] channel:11 [vm] rateset:1 [vm] encryption:0 [vm] ## SCAN zzz [vm] mac:78.79.7a.78.79.7a. [vm] bssid:37.36.35.34.33.32. [vm] rssi:-10 [vm] channel:11 [vm] rateset:1 [vm] encryption:0 [vm] 0 [vm] 0 [vm] 0 [simunet] xxxx netAuth 11 1 0 0 [vm] :-------------gostation [vm] r.nabaztag.com/vl/locate.jsp?sn=0013d384958b&h=4&v=18673 [vm] HTTPREQUEST url=r.nabaztag.com/vl/locate.jsp?sn=0013d384958b&h=4&v=18673 [vm] [dns] dnsreq( [vm] r.nabaztag.com) [vm] 00000000 00 01 01 00 00 01 00 00 00 00 00 00 01 72 08 6e .............r.n [vm] 00000010 61 62 61 7a 74 61 67 03 63 6f 6d 00 00 01 00 01 abaztag.com..... [vm] [dns] on fait une requete dns pour le domaine r.nabaztag.com [simunet] xxxx netSend [vm] wifi state=4 [vm] -------------dhcp [vm] [dhcp] startdhcp [simunet] xxxx netSend [simunet] xxxx netSend [simunet] xxxx netSend [vm] [dhcp] startdhcp [simunet] xxxx netSend [simunet] xxxx netSend [simunet] xxxx netSend [simunet] xxxx netSend [vm] [dhcp] startdhcp [simunet] xxxx netSend [simunet] xxxx netSend [simunet] xxxx netSend [vm] ##timeout on configwait [vm] r.nabaztag.com/vl/locate.jsp?sn=0013d384958b&h=4&v=18673 [vm] HTTPREQUEST url=r.nabaztag.com/vl/locate.jsp?sn=0013d384958b&h=4&v=18673 [vm] [dns] dnsreq( [vm] r.nabaztag.com) [vm] 00000000 00 02 01 00 00 01 00 00 00 00 00 00 01 72 08 6e .............r.n [vm] 00000010 61 62 61 7a 74 61 67 03 63 6f 6d 00 00 01 00 01 abaztag.com..... [vm] [dns] on fait une requete dns pour le domaine r.nabaztag.com [simunet] xxxx netSend [simunet] xxxx netSend [vm] [dhcp] startdhcp [simunet] xxxx netSend [simunet] xxxx netSend [simunet] xxxx netSend
[simunet] xxxx netSend [vm] [dns] dnstime, timeout pour la requete d'id 2 [vm] found ip=NIL [vm] call to locate.jsp failed, rebooting [vm] reboot 407fe58.13fb6754 REBOOT NOW.....
Voila Voila. Sous Windows ça donne quoi ? Une IHM (tu parlais de X11) ? Des lignes de débug ? | |
| | | rtp Lapin nain
Localisation : paris Nbr de messages : 12 Carottes : 6537
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 23:12 | |
| - funfoo a écrit:
- @totol : je n'ai pas pu essayer la version linux ; y a-t-il un simulateur avec (X11 ou Qt) ?
S'il n'y en a pas, ça sera vraiment dur de bosser avec. ben, dans les target du Makefile, y a un simulateur appele mtl_simu. J'arrive a le lancer mais ca va pas loin car des fonctions reseaux (netSend) sont pas simulees. Les precedentes versions de nominal.mtl semblent utiliser tcpOpen mais pas la derniere version qui utilise que netSend visiblement... qui est reduit a un "return -1;" (vnet.c). En plus, tout ne semble pas implemente dans ce simulateur (genre les leds) et, non, ca utilise pas X11/gtk/efl/qt. Si quelqu'un arrive a faire fonctionner le mtl_simu avec la derniere version, je suis interesse | |
| | | PlaneteDomo Lapin nain
Localisation : Clermont fd Nbr de messages : 24 Carottes : 4914
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin Mer 3 Aoû 2011 - 23:26 | |
| Pour utiliser le simulateur, il faut enlever le commentaire de la ligne 26 (// #define SIMU) Ca permet de gerer le reseau correctement entre autre. Sous windows, ça donne ça : La console pour les printf et le lapin avec Oreilles, Led, Bouton, simu RFID .... A++ | |
| | | Contenu sponsorisé
| Sujet: Re: Demande d'aide Funfoo - Firmware / ByteCode du lapin | |
| |
| | | | 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
| |
| |
| |