Développement du noyau applicatif

4 views
Skip to first unread message

Olivier Grunder

unread,
Feb 28, 2008, 10:29:19 AM2/28/08
to Développement et utilisation de NxOS
> > 2. Production d'un binaire NxOS + noyau applicatif. Dans ce cas le
> > transfert du prog à exécuter devra se faire ultérieurement par USB ou
> > bluetooth. Le noyau applicatif stocke le programme a exécuter en mémoire
> > dans une structure de données, et l'exécute.
> >
> > La 2ème solution est plus intéressante, plus souple mais nécessite de
> > mettre en place, préalablement, la partie transfert du prog Lego du PC
> > vers le NXT. Qu'en penses-tu ?
>
> Je pense que cette solution est la meilleure a plein de niveaux. D'une
> part, c'est le seul moyen d'arriver, à terme, à totalement émuler le
> firmware lego du point de vue du PC. D'autre part, un noyau qui peut
> charger des programmes arbitraire est bien plus flexible au niveau de
> l'utilisateur final, et ne nécessite pas de recompiler/reflasher le
> firmware pour chaque changement. Vu que le format binaire Lego, les
> instructions de la VM et le protocole USB/bluetooth lego sont
> documentés, c'est à mon avis déjà beaucoup de problèmes qui sont
> résolus et qu'il ne reste "plus qu'a" implémenter.
>

Pour le développement du noyau applicatif, nous avons décidé de partir
sur la deuxième solution qui semble être d'une part la plus souple,
mais
également la plus facilement réalisable.

Les actions qui ont été envisagés pour l'instant sont les suivantes :

1. Produire un noyau permettant la récupération d'un binaire à
interpréter. Le binaire sera stocké en mémoire, le système de fichier
n'étant pas encore disponible.

2. Ecrire un programme pour PC permettant de "désassembler" un binaire
pour le NXT.

Par la suite, il faudra rajouter la lecture et l'affichage des
différents OPCODES. A partir de là, on pourra petit à petit commencer
à implémenter les OPCODES les plus importants et faire des tests avec
des programmes très simples, style "helloworld".

Cordialement,

Olivier

David Anderson

unread,
Feb 28, 2008, 11:07:19 AM2/28/08
to nxos-di...@googlegroups.com

Idéalement, cette étape comprendrait le développement du support
Phantom (protocole de communication entre l'IDE Lego et la brique)
comme module utilitaire (facultatif) dans le Baseplate coté brique, et
dans pynxt coté PC. Mais un protocole perso plus simple est acceptable
dans un premier temps, histoire de commencer sur la VM au plus vite.

> 2. Ecrire un programme pour PC permettant de "désassembler" un binaire
> pour le NXT.

Très important, en effet. À voir si quelqu'un ne l'a pas déjà fait, le
format binaire étant documenté.

> Par la suite, il faudra rajouter la lecture et l'affichage des
> différents OPCODES. A partir de là, on pourra petit à petit commencer
> à implémenter les OPCODES les plus importants et faire des tests avec
> des programmes très simples, style "helloworld".

Ca me semble bien. Une fois qu'un hello world fonctionnera, on sera
déjà bien avancé vers le support complet de la VM Lego.

Bon, ben plus qu'a attendre que les étudiants viennent se présenter,
pour qu'on règle les questions d'accès au code!

- Dave

Message has been deleted

Alexandre Haffner

unread,
Feb 28, 2008, 7:40:45 PM2/28/08
to Développement et utilisation de NxOS
J'entamme les hostilités alors.

Je m'appel Alexandre Haffner, je vais travailler sur cette TX avec un
autre étudiant qui devrait se présenter sous peu je suppose.

J'ai lu le premier rapport concernant l'implémentation du premiernoyau
et tenté de faire tourner la bête. Le tout marche plutot bien et assez
facilement mais j'ai eu un premier problème en voulant envoyer des
commandes par l'USB en utilisant le système de tests via le script
usb_console. J'ai réussi une première
fois à l'éxécuter et j'ai malencontreusement :) entré une commande non
reconnue et depuis impossible d'acceder à nouveau à cette interface.
Voici l'erreur que j'obtient :

Traceback (most recent call last):
File "./usb_console.py", line 10, in <module>
from nxt.lowlevel import get_device
ImportError: No module named nxt.lowlevel

Notez quand meme que la brique vient juste d'être démarrée avec le
système de tests et qu'elle se trouve lors de mes tentatives à
l'invite : En attente de commandes...

Question quand même, apres avoir entré une commande non reconnue ma
console unix m'a signalée une exception (dont je n'ai pu le souvenir
malheureusement...). Est-ce le résultat de la ligne de code suivante ?
(j'en doute)

nx_usb_write((U8 *)USB_UNKNOWN, sizeof(USB_UNKNOWN)-1);

Et dernière question concernant les conventions de nommage des
fichiers. Que signifie
le underscore devant les noms de fichiers ?

J'espère qu'on va bien s'amuser et produire quelque chose qui vous
servira :)

Merci d'avance pour vos réponses, et merci pour votre boulot sur
NxOS !

Alex

On 28 fév, 17:07, "David Anderson" <d...@natulte.net> wrote:
Reply all
Reply to author
Forward
0 new messages