Site ELEC344/ELEC381

Partie interactive du site pédagogique ELEC344/ELEC381 de Télécom ParisTech (occurrence 2010).

Catégories

PuLSE, j-5

Aujourd’hui nous avons trouvé le problème qui survenait lorsque nos deux grandes tâches (le serveur http et la tâche de gestion des fichiers) étaient connectées. Nous avons donc pu lire des playlist codées en dur dans la page web.
Ce soir je me suis mis à la page web définitive. Après quelques heures de débugage voici le résultat (presque terminé) :

On pourra y mettre des répertoires complets, ou bien des fichiers. La liste des fichiers sera générée dynamiquement, et a priori ca sera la seule partie générée automatiquement. Du coté du serveur, Etienne et Thibaut ont fait pas mal de débugage (y compris sur la carte SD et sur l’utilisation des outils python pour génerer les requetes) et ont implémenté le PUT.

Demain, j’essaierai d’apporter de quoi faire une vidéo (Samuel en avait pris une avant les vacances mais je ne l’ai jamais revue d’ailleurs)

PuLSE, j-6

Actuellement on a une page web qui offre la possibilité d’envoyer une playlist, et quelques modes de fonctionnement (diaporama, lecture en continu, éventuellement lecture aléatoire de fichiers sur la carte). On a un serveur http qui n’est pas encore compatible avec le protocole http, on préfère dans un premier temps mettre notre protocole basé sur des requêtes http (get, put, post, delete) et le rendre conforme au protocole http ensuite (notemment dans le cas des gestions d’erreurs, en s’appuyant sur le serveur de Microchip). En particulier, en définissant à la main les contenus des requêtes on est arrivé à avoir des requêtes plus concises que celles générées dans les formulaires de firefox). Actuellement le protocole lit la playlist envoyée. A cause d’un bug dans le chargement des fichiers on n’a pas pu faire de test avec le laser, mais on y était presque.

Un petit apreçu de la page web (elle est un peu à revoir au niveau du style maisce n’est pas la priorité pour le moment)

carte SD, c’est pas encore ca

Je suis reparti ce soir de la version 3.1 de la bibliothèque ST pour cartes SD. J’ai pu revenir à peu près à l’état où on était avant de passer sur cette version, c’est à dire que j’arrive à lire des blocs. Thibaut et Etienne ont aussi essayé cet après midi et n’ont pas eu plus de résultats.

Je me suis basé sur le code d’un projet fourni dans la bibliothèque ST, et bien que je ne fasse que des opérations simples j’ai pas mal de problèmes. En particulier la carte SD refuse (ne répond jamais) la commande qui la fait passer en mode 4 bits, et j’ai à la première lecture de bloc un CRC fail, qui disparait magiquement si je refais une lecture de ce même bloc. J’ai regardé le projet circle qu’Alexis nous a donné, et je n’ai pas noté de différence entre leur séquence d’initialisation des horloges et la notre.

Bref,pas de changements notables depuis le passage à la version supérieure.

La suite plus tard dans la matinée…

Twitter

Alors j’avance lentement mais surement sur le programme en python.

Ca marche même si tous les widgets ne sont pas exactement disposés là ou je le voudrais… Il me reste à mettre le code derrière en place (requète HTTP, les file dialogs, …).

Sinon on a fait un test grandeur nature cette après-midi avec le laser: l’affichage du texte se déroule bien même si l’inertie des galvanomètres altèrent quand meme pas mal le rendu.

Twitter

Alors après la correction de quelques bugs ce matin sur l’ILDA, je suis passé à Twitter et au programme qui aura pour mission de piloter le laser en fait.

Pour l’instant j’arrive à checker toutes les 10 secondes par exemple Twitter pour savoir si quelqu’un a envoyé un tweet à rose_pulse et le cas échéant l’afficher sur la ligne de commande.

J’ai aussi commencé à réaliser l’interface graphique du programme et à me remettre dans la programmation orienté objet :)

Pulse, état d’avancement actuel

Actuellement le serveur web (http://137.194.66.145) est à peu près opérationnel. Il reste un problème de fuite de mémoire à résoudre (sachant que j’ai trouvé les objets qui génèrent la fuite de mémoire). Il délivre pour le moment une page html simple avec un petit formulaire en GET. J’ai adapté aujourd’hui un parseur de requêtes HTTP qui marche depuis le début d’après midi. J’ai passé le reste du temps à tester le serveur et à essayer de comprendre les résultats sortis par l’ensemble (parseur + serveur web + protocole HTTP (sur lequel je ne suis encore pas au point (désolé Samuel, mais je comprends pas les choses du premier coup, il faut un peu de temps pour que ca se mette en place (j’aime faire des parenthèses imbriquées)))). Pendant les vacances j’avais commencé à faire la page web de configuration, je la continuerai cette semaine quand le serveur sera plus fiable.

Du coté de la carte SD on a été assez décu ce matin puisqu’après un formattage, la carte ne répondait plus. Cet après midi, après un retour en arrière sur le code, ca a remarché avec les erreurs qu’on avait avant. On arrive à lire dans un fichier, mais pas encore à y écrire. Etienne et Thibaut s’y mettent ce soir et demain sur la base du boulot de Thibaut. C’est clairement le point critique du projet, puisque sans carte SD, pas de vidéo.

Etienne a commencé à se plonger dans un algorithme de détection de beat en se basant sur ce que j’avais fait avec les ADC pendant les vacances.

Je n’ai pas autant suivi le travail de Romain (en particulier son avancement cet après midi), donc je vais poster une version un peu en retard. Le script qui génère un fichier ILDA contenant du texte marche. Il affiche une cinquantaine de caractères dans une image, sur plusieurs lignes. Il reste à gérer le défilement et les espacements. Il a commencé le programme de configuration qui permettra entre autre de twitter. Pour plus de précisions, il faut se référer à ses posts :)

ILDA : l’alphabet

Alors aujourd’hui je me suis remis à la tache d’avoir un alphabet correct pour pouvoir écrire un texte à ‘aide de notre laser.

J’ai fini le parseur svg vers ilda qui permet de prendre une lettre au format svg et de la transformer en un fichier ilda. J’ai ainsi pu obtenir un alphabet qui ne comportait pas trop de points par lettre (entre 10 et 30).
Ainsi on peut afficher une petite cinquantaine de lettres sur l’écran sans dépasser la limite des 1000 caractères.

Il me reste une ou deux corrections à apporter au parseur, aisni qu’à ma bibliothèque ilda pour pouvoir faire défiler  un texte par exemple.

En tout cas rien de bien méchant!

Je m’attaque donc demain au programme qui tournera sur une machine et qui permettra de piloter le laser ainsi que de récupérer les tweets et de les afficher.

http://pulse

aujourd’hui, avec Etienne on a passé la matinée à chercher d’où venait notre problème de fermeture de connexion dans le serveur http. Dans l’après midi en moulant sur internet je sui tombé sur des forums où ils parlaient de problèmes similaires. Après le cours de droit j’ai testé plusieurs des solutions proposées, et miracle, ca a bien marché :) .
Du coté de la carte SD, on a fait quelques avancées. On arrive à lire et écrire dans des fichiers. Thibaut pourra expliquer ca beaucoup mieux que moi.

Dans la suite du programme, on va lire une image, puis une vidéo stockée sur la carte SD. Il y aura donc la partie de Thibaut, celle de Romain et la mienne à connecter. Il y aura aussi toute l’interface http (le serveur et la page web) à coder, maintenant que les paquets arrivent et que la carte envoie une page simple pour n’importe quelle requête GET. On pense qu’entre Etienne, Thibaut et moi, l’un de nous passera sur le micro dans les jours qui viennent.

carte SD en grève

aujourd’hui je me suis joint à Thibaut pour travailler sur la carte SD. On était partis pour essayer de lire et d’écrire en mode polling, ce qui est une mauvaise solution car trop gourmande en CPU. Samuel nous a aidé à mettre en place la lecture en mode DMA. Après nous avons passé le reste de l’après midi à comprendre pourquoi la carte ne voulait pas écrire, alors que la procédure (du moins les fonctions de la bibliothèque ST) pour écrire est très proche de celle pour lire.
Cependant nous nous sommes heurtés à des erreurs de validité du CRC sur les données émises. Nous avons cherché à désactiver la vérification du CRC sur les cartes (au moins histoire de voir si on pouvait réellement écrire), et d’après les datasheets, ca n’est pas possible. Ca m’étonnerait que les polynomes utilisés pour le CRC soient différents, car ils fonctionnent en lecture. Ce n’est pas non plus un problème d’horloge (la datasheet demande une horloge AHB égale à FCLK/2, mais les commentaires de la bibliothèque ST disent le contraire (FCLK), nous avons essayé les deux).
Après quelques recherches sur internet, les seules réponses que nous avons vues sur des problèmes similaires sont du type « ta carte est foutue, jette la et prends en une autre ». Ca m’étonnerait aussi qu’il faille faire calculer nous mêmes le CRC, car le module est interne au controleur SDIO, et on n’a pas du tout la main dessus.

A noter que sur une autre carte nous avons eu un problème de délai dépassé pour l’écriture des données, qui du coup a du masquer le problème d’erreur de CRC.

Au final, on s’est cassé les dents. A la rentrée, il faudra qu’on règle ce problème rapidement, ou bien on devra envisager d’autre moyens de faire passer des données vers la carte par ethernet (en streaming par exemple, ce qui avait été écarté jusqu’à présent)

Bonnes vacances à tous !

PuLSE, on s’enfonce dans les couches du réseau

Aujourd’hui, avec Etienne on s’est attaqué aux tests de lwip sur la carte. On est tombé sur plusieurs problèmes et on n’a pas beaucoup avancé. On a trouvé 2 bugs dans notre code (en fait un « vrai » bug et un oubli d’un define qui faisait tout planter). De toute évidence il en reste car
- On n’arrive pas à recevoir les paquets en continu, probablement un buffer qui ne se vide pas. Actuellement on ne recoit qu’une quarantaine de paquets.
- On n’arrive pas à lire correctement les entêtes IP d’un paquet, actuellement on serait en train de faire de l’ipV0…

Personellement je trouve qu’on patauge. Est-ce que demain on pourra montrer notre implémentation à Alexis ou Samuel si on en est au même point ?