Pages: 1 2 3 [4] 5 6 ... 9   Go Down
Author Topic: WR703N + VinciDuino  (Read 21304 times)
0 Members and 1 Guest are viewing this topic.
Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Y en a marre de tous ces pseudos langages, les vrais programmeurs écrivent en C ou en Shell  smiley-mr-green
Les vrai programmeurs codent en assembleur, faut savoir parler directement avec la machine smiley-cool
Sérieusement, tout langages à ses avantages et ses inconvénients, il n'y as pas de "pseudo langages" smiley-wink

Je blague smiley, j'ai arrêté de compter vers les 20 (après, je n'ai plus assez de doigts et d'orteils) ! Non, ce qui est embêtant, c'est que sur une plateforme embarquée comme ici, on ne peut pas se permettre d'avoir du compilé C/C++, du Shell, du Lua, du Python, du Perl, du Ruby, du Tcl, du JavaScript, etc.

Surtout que vu la complexité du script Perl en question, c'est tout à fait possible de faire la même chose en Shell !

Oui, mais cela a l'air d'être le standard sur OpenWRT pour la configuration par interface Web  smiley-slim
Sérieux ?
Moi j'arrête pas de voir du lighttpd ou du nginx sur mes routeurs/switchs, ce serait bien d'avoir un comparatif des différents serveur web et de leur empreinte mémoire.
Je crois que Luci peut tourner sur lighttpd aussi. Le problème, c'est que c'est difficile pour pas mal d'utilisateurs qui ne veulent pas toucher aux fichiers de config en direct de se passer de Luci, à moins de re-écrire l'équivalent, mais là c'est une autre histoire...
« Last Edit: August 16, 2012, 11:09:50 am by Squonk42 » Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, mais cela a l'air d'être le standard sur OpenWRT pour la configuration par interface Web  smiley-slim
Sérieux ?
Moi j'arrête pas de voir du lighttpd ou du nginx sur mes routeurs/switchs, ce serait bien d'avoir un comparatif des différents serveur web et de leur empreinte mémoire.

Ici : http://wiki.openwrt.org/doc/howto/http.overview

La question que je me pose c'est : Le but étant de créer un équipement dédié connecté (station météo, contrôleur domotique à-la BlyssBox etc...), associée à une (ou plusieurs Arduino) qu'est-ce qui est le plus simple/efficace ?
1) Utiliser un serveur light comme ceux déjà listés + cgi-bin
2) Faire un environnement (bibliothèque) tel que celles utilisées sur l'Arduino (Ethernet.server) et intégrer dans un seul exe le serveur Web, la communication avec la/les Arduino et la gestion d'ensemble de l'application.

Notamment ce qui me gène dans le cas 1, c'est l'intégration globale.
Je vois 3 composantes majeures :
- les interactions de l'utilisateur avec le navigateur web et donc avec le serveur Web : complètement asynchrone avec le déroulement de l'application
- les communications entre WR703 et Arduino: peut être synchrone (question/réponses) ou asynchrone (évènement extérieur, utilisateur qui presse un bouton hard / telco Blyss, ...)
- la gestion du contexte

Le cgi-bin est entièrement lié aux requètes web. Donc la gestion de contexte et tout ce qui est indépendant de l'interaction utilisateur ne peuvent pas s'y trouver. Il faut donc une application globale qui tourne en permanence.

De la même façon que cette appli va gérer les communication avec les Arduino (serial), elle va devoir aussi communiquer avec l'utilisateur Web donc avec les cgi-bin (ou plutot ce sont les cgi-bin qui vont communiquer avec elle). Des sockets (ou des pipes ?) semble la solution la plus simple à utiliser mais cela crée une lourdeur supplémentaire car il y a un protocole de plus a gérer.

L'avantage c'est que ca peut migrer facilement sur une plateforme plus grosse ensuite en utilisant Apache+PHP par exemple.


Le cas 2 peut être suffisant pour gérer de petites applications. C'est déjà ce que l'on fait sur une Arduino Ethernet. Donc finalement pourquoi ne pas reproduire la même structure en dual-core (WR + Arduino) ?
A partir d'une certaine "taille" il est sur que ce n'est plus la bonne solution mais par exemple si on reste sur une petite application qui a 2 ou 3 pages a présenter (station météo, contrôle de porte de garage ... comme certains on envisagé) ca me semble encore une solution acceptable.

Qu'en pensez-vous ?
« Last Edit: August 19, 2012, 05:37:58 pm by barbudor » Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas aussi léger que ce que je pensai nginx ... en faite le plus léger / adéquat pour un site à faible traffic c'est mini-httpd d'aprés ce tableau.

La question que je me pose c'est : Le but étant de créer un équipement dédié connecté (station météo, contrôleur domotique à-la BlyssBox etc...), associée à une (ou plusieurs Arduino) qu'est-ce qui est le plus simple/efficace ?
1) Utiliser un serveur light comme ceux déjà listés + cgi-bin
2) Faire un environnement (bibliothèque) tel que celles utilisées sur l'Arduino (Ethernet.server) et intégrer dans un seul exe le serveur Web, la communication avec la/les Arduino et la gestion d'ensemble de l'application.

Notamment ce qui me gène dans le cas 1, c'est l'intégration globale.
Je vois 3 composantes majeures :
- les interactions de l'utilisateur avec le navigateur web et donc avec le serveur Web : complètement asynchrone avec le déroulement de l'application
- les communications entre WR703 et Arduino: peut être synchrone (question/réponses) ou asynchrone (évènement extérieur, utilisateur qui presse un bouton hard / telco Blyss, ...)
- la gestion du contexte

Le cgi-bin est entièrement lié aux requètes web. Donc la gestion de contexte et tout ce qui est indépendant de l'interaction utilisateur ne peuvent pas s'y trouver. Il faut donc une application globale qui tourne en permanence.

De la même façon que cette appli va gérer les communication avec les Arduino (serial), elle va devoir aussi communiquer avec l'utilisateur Web donc avec les cgi-bin (ou plutot ce sont les cgi-bin qui vont communiquer avec elle). Des sockets (ou des pipes ?) semble la solution la plus simple à utiliser mais cela crée une lourdeur supplémentaire car il y a un protocole de plus a gérer.

L'avantage c'est que ca peut migrer facilement sur une plateforme plus grosse ensuite en utilisant Apache+PHP par exemple.


Le cas 2 peut être suffisant pour gérer de petites applications. C'est déjà ce que l'on fait sur une Arduino Ethernet. Donc finalement pourquoi ne pas reproduire la même structure en dual-core (WR + Arduino) ?
A partir d'une certaine "taille" il est sur que ce n'est plus la bonne solution mais par exemple si on reste sur une petite application qui a 2 ou 3 pages a présenter (station météo, contrôle de porte de garage ... comme certains on envisagé) ca me semble encore une solution acceptable.

Qu'en pensez-vous ?
En gros tu veut faire un deamon avec serveur web et gestionnaire de communication intégré ?
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En gros tu veut faire un deamon avec serveur web et gestionnaire de communication intégré ?

En gros comme sur Arduino :  seul exécutable qui gère l'interface Web, la comm. avec les périphériques (Arduino sur Serial ou autres GPIO) et l'application elle même.
Tout se qui serait "gros web" pourrait être déchargé d'ailleurs sur un hébergement externe full-LAMP.

Ca resterait une appli de type loop() qui est un noeud d'échange entre les différents modules.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quelques précisions: l'UART console du WR703N est en LVTTL (3.3 V) et pas en 2.7 V

Ayant quitté l'Ile de Beauté et mes montagnes savoyardes, de retour dans la gridsille francilienne (on sent bien le désapointement hein ?), je ressort mon WR703N, mon multimètre.
Je persiste et persiffle : je mesure bien un TXD (TP_OUT) à 2,7V ainsi que le VCC sur la résistance de pull-up R82 a coté de RXD (TP_IN).

Mon modèle est indiqué "Ver:1.6" sur l'étiquette derrière le boitier et "Rev:1.1" sur le PCB smiley-wink

Je viens de télécharger le Image Generator d'OpenWRT (version stable 10.03.1) mais je suis pas sur que ce soit ce qu'il faut car ce package est daté de décembre 2011.

Pouvez vous me confirmer ce qu'il faut prendre ?

1ère étape pour moi : apprendre à configurer OpenWRT pour réduire au minimum a ce qui m'interesse.
En effet l'intérêt d'OpenWRT pour moi est d'avoir une distri Linux toute prête qui support la plateforme mais je n'ai pas besoin de toute la partie WRT (Wireless Router).
Ce que je veux obtenir dans un premier temps c'est :

- Linux
- Busybox, shell
- SSHd (dropbear)
- USB Mass Storage (pour mettre une clé USB ou un adaptateur de carte uSD)
- USB CDC Serial pour Arduino ou autres USB/TTL (CP21xx, FTDI, etc...)
- Ethernet
- Client Wifi (une configuration statique par fichier de config me convient très bien)

Je compte le faire d'abord avec Image Generator sans recompiler
Puis ensuite installation de OpenWRT BuildRoot, pas tant pour recompiler OpenWRT lui-même que pour faire ma propre appli qui va discuter avec l'Arduino.

A+
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

BOn
Ca commence bien :
- Le WR703N (et le MR3020) ne sont pas supportés dans la backfire 10.03.1 mais uniquement dans le trunk
- je viens de récupérer le snapshit du jour et ca ne génère pas :

Quote
Building package index...
(cd /home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64/packages; /home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64/scripts/ipkg-make-index.sh . > Packages && \
      gzip -9c Packages > Packages.gz \
   ) >/dev/null 2>/dev/null
make[2]: *** [package_index] Error 126
make[2]: Leaving directory `/home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64'
make[1]: *** [_call_image] Error 2
make[1]: Leaving directory `/home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64'
make: *** [image] Erreur 2

problème qui ne vient pas de moi apparemment : https://dev.openwrt.org/ticket/11943

Donc apparemment il va falloir que je me mette à Buildroot plus tôt que prévu  smiley-cry

Vous n'avez pas eu de problème particulier ?
Il suffit de suivre les indications ?

PS: Je suis partit sur un host en Xubuntu (simple, facile pour un non Linuxien comme moué). Mais apparemment la team OpenWRT est plutôt Arch linux qui me semble un peu trop "streamline" pour moi smiley-wink
Vous utilisez quoi de votre coté ?
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je persiste et persiffle : je mesure bien un TXD (TP_OUT) à 2,7V ainsi que le VCC sur la résistance de pull-up R82 a coté de RXD (TP_IN).

Mon modèle est indiqué "Ver:1.6" sur l'étiquette derrière le boitier et "Rev:1.1" sur le PCB smiley-wink
Il n'y a eu a priori que 2 versions de PCB: 1.0 (peu répandue) et 1.1, donc ce n'est pas un problème de version. J'ai d'ailleurs détaillé le PCB 1.1 composant par composant dans le Wiki OpenWRT, et d'après les points de tests dûment étiquetés, il y a du 3,3 V, du 2,5 V, du 2,0 V et du 1,2 V, toutes ces tensions ayant une utilité identifiée.

C'est peut-être tout simplement un problème d'alimentation ? Ou alors ton multimètre qui a une résistance d'entrée trop faible ? j'ai déjà eu le cas avec un multimètre chinois à 10 euros... J'ai plus tendance à croire un scope avec une sonde calibrée 1 Mohms /20 pF, d'abord parce que c'est calibré et ensuite parce que je peux voir le résultat !

Mais après tout, qu'importe ? Mon WR703N tourne avec une adaptateur LVTTL (3,3 V) / USB depuis 6 mois sans soucis  smiley-mr-green

Je viens de télécharger le Image Generator d'OpenWRT (version stable 10.03.1) mais je suis pas sur que ce soit ce qu'il faut car ce package est daté de décembre 2011.

Pouvez vous me confirmer ce qu'il faut prendre ?

1ère étape pour moi : apprendre à configurer OpenWRT pour réduire au minimum a ce qui m'interesse.
En effet l'intérêt d'OpenWRT pour moi est d'avoir une distri Linux toute prête qui support la plateforme mais je n'ai pas besoin de toute la partie WRT (Wireless Router).
Ce que je veux obtenir dans un premier temps c'est :

- Linux
- Busybox, shell
- SSHd (dropbear)
- USB Mass Storage (pour mettre une clé USB ou un adaptateur de carte uSD)
- USB CDC Serial pour Arduino ou autres USB/TTL (CP21xx, FTDI, etc...)
- Ethernet
- Client Wifi (une configuration statique par fichier de config me convient très bien)

Je compte le faire d'abord avec Image Generator sans recompiler
Le "Image Generator" est plutôt fait pour rajouter des packages que pour en enlever. Le système de base est assez interdépendant au niveau des packages installés, et la seule façon d'enlever des choses va passer par une configuration des options de ces packages et une recompilation smiley-sweat

Et de toutes façons, il faut absolument partir du "trunk" avec Subversion ou un "snapshot" (vaut mieux le SVN !), car le WR703N n'est pas encore supporté dans les versions stables.

Après, il suffit de suivre à la lettre le Wiki OpenWRT (installation et utilisation).
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vous n'avez pas eu de problème particulier ?
Il suffit de suivre les indications ?
Ouaip,

Code:
cd ~
svn co svn://svn.openwrt.org/openwrt/trunk/ openwrt
cd openwrt
./script/feeds update -a
./script/feeds install -a
make menuconfig
# --> tu fait ta config comme tu l'entend
make -Jx (remplace x par le nombre de cœur de ton cpu)
# --> tu patiente entre 10 minutes (i7 8 coeurs) et 4 heures (celeron dual core)
# Ton firmware et son rootfs se trouve dans le dossier "bin/lenomducpu"
# Ta toolchain pour la compilation se trouve dans le dossier "staging_dir"

Si tu veut je peut te faire un screencast smiley-wink
(mais avec la ngw100 comme cible pour la compilation)

PS: Je suis partit sur un host en Xubuntu (simple, facile pour un non Linuxien comme moué). Mais apparemment la team OpenWRT est plutôt Arch linux qui me semble un peu trop "streamline" pour moi smiley-wink
Vous utilisez quoi de votre coté ?
MINT 13 avec plein de modif kernel / paquets custom de partout smiley-sweat
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Building package index...
(cd /home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64/packages; /home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64/scripts/ipkg-make-index.sh . > Packages && \
      gzip -9c Packages > Packages.gz \
   ) >/dev/null 2>/dev/null
make[2]: *** [package_index] Error 126
make[2]: Leaving directory `/home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64'
make[1]: *** [_call_image] Error 2
make[1]: Leaving directory `/home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64'
make: *** [image] Erreur 2

problème qui ne vient pas de moi apparemment : https://dev.openwrt.org/ticket/11943

Donc apparemment il va falloir que je me mette à Buildroot plus tôt que prévu  smiley-cry

Vous n'avez pas eu de problème particulier ?
Il suffit de suivre les indications ?

PS: Je suis partit sur un host en Xubuntu (simple, facile pour un non Linuxien comme moué). Mais apparemment la team OpenWRT est plutôt Arch linux qui me semble un peu trop "streamline" pour moi smiley-wink
Vous utilisez quoi de votre coté ?

J'utilise Ubuntu 12.04 LTS, remis à jour périodiquement depuis au moins 2 ou 3 ans.

Un piège classique avec les xxxUbuntu est que ceux-ci remplacent le Shell "bash" par un Shell "dash" qui est sensé être plus rapide pour le boot (ça reste à prouver  smiley-confuse), mais qui casse les scripts shell de compilation...

Un moyen de vériefier est de taper :
Code:
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 août  11 19:25 /bin/sh -> bash

Si le tiens point sur "dash": bingo !

Il faut alors changer de shell en tapant:
Code:
sudo update-alternatives --install /bin/sh sh /bin/bash 100
Logged

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
make -Jx (remplace x par le nombre de cœur de ton cpu)
En fait, il faut faire :
Code:
make -j x (remplace x par le nombre de cœurs de ton cpu + 1)
Ou mieux, utiliser "ccache", mais c'est plutôt délicat à faire marcher comme il faut smiley-razz
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait, il faut faire :
Code:
make -j x (remplace x par le nombre de cœurs de ton cpu + 1)
J'ai jamais compris ce +1, puisse qu'au final tu as un nombre limité physiquement de threads ... +1 ou non ton cpu peut pas exécuter un nombre illimité de chose en parallèle ...
Du reste en regardant le man de make et les différentes doc sur le web tu trouve de tout, nb_threads, nb_threads + 1, ... smiley-zipper

Ps: en argument CLI unix que tu fasse -J8 ou -J 8 ça revient à la même chose.

Ou mieux, utiliser "ccache", mais c'est plutôt délicat à faire marcher comme il faut smiley-razz
J'utilise ccache, mais c'est utile uniquement pour les recompilations incrémentielles, pas pour la premier compilation complète.
Mais c'est un gros bordel pour activer ccache dans menuconfig donc je préfére pas perdre barbudor avec.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait, il faut faire :
Code:
make -j x (remplace x par le nombre de cœurs de ton cpu + 1)
J'ai jamais compris ce +1, puisse qu'au final tu as un nombre limité physiquement de threads ... +1 ou non ton cpu peut pas exécuter un nombre illimité de chose en parallèle ...
Du reste en regardant le man de make et les différentes doc sur le web tu trouve de tout, nb_threads, nb_threads + 1, ... smiley-zipper
D'après ce que j'ai pu voir à droite et à gauche (j'ai du mal à me souvenir où  smiley-red), cela correspond effectivement au nombre de "jobs" (et donc de "threads"), mais il y a toujours un thread principal qui lui ne fait qu'attendre la fin des autres.

Ps: en argument CLI unix que tu fasse -J8 ou -J 8 ça revient à la même chose.
Oui, par contre, n'est ce pas "j" minuscule et pas "J" majuscule ?

Ou mieux, utiliser "ccache", mais c'est plutôt délicat à faire marcher comme il faut smiley-razz
J'utilise ccache, mais c'est utile uniquement pour les recompilations incrémentielles, pas pour la premier compilation complète.
Mais c'est un gros bordel pour activer ccache dans menuconfig donc je préfére pas perdre barbudor avec.
C'est vrai que c'est un peu brutal comme mise en bouche  smiley-mr-green
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

D'après ce que j'ai pu voir à droite et à gauche (j'ai du mal à me souvenir où  smiley-red), cela correspond effectivement au nombre de "jobs" (et donc de "threads"), mais il y a toujours un thread principal qui lui ne fait qu'attendre la fin des autres.
... ouai, faudrait que je regarde ça de plus prés.

Oui, par contre, n'est ce pas "j" minuscule et pas "J" majuscule ?
Oui c'est j et non J ... petit bug de l'interface chaise / clavier smiley-mr-green

C'est vrai que c'est un peu brutal comme mise en bouche  smiley-mr-green
Bon par contre quand la première compilation est finit les suivantes sont hyper rapide smiley-cool
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai réussi à générer un paquet "binutils-avr" qui tient la route (pour ceuce qui sont intéressés, les patches et le makefile OpenWRT), à placer dans le répertoire "feeds/packages/devel" du "trunk" d'OpenWRT, suivi d'un "./scripts/feeds update -i" pour ajouter le package et d'un "./scripts/feeds install -a" pour l'ajouter au menuconfig.

Mais pour le "gcc-avr" et l' "avr-libc", c'est une autre paire de manche...

En effet, il faut :
  • ...générer un compilateur sur une machine de travail linux-x86 (mon PC de travail)...
  • ... pour faire tourner sur une machine mips24kc (le WR703N)...
  • ... pour générer du code pour AVR (l'Arduino)

Ceci est compliqué par le problème dit "de la poule et de l'oeuf", à savoir qu'on a besoin à un moment donné de faire tourner le compilateur mips24kc => AVR pour générer un tas de chose (fichiers de démarrage, includes, etc.) qui ont eux-même besoin du compilateur pour être créés !

Cette configuration avec 3 architectures est connue en tant que "Canadian build", en référence au système politique Canadien qui comportait 3 partis politiques majeurs à l'époque où ce problème a été rencontré en premier.

En gros, on s'en tire en générant un compilateur intermédiaire linux-x86 => AVR pour générer ces fameux fichiers.

J'ai réussi à faire cette manip "à la mimine" à partir des sources et générer un gcc-avr+avr-libc qui tourne sur le WR703N, mais j'aimerai bien pouvoir le faire proprement en tant que package, et je me bats donc actuellement avec les makefiles OpenWRT smiley-sweat

Mon plus gros problème est de générer de manière conditionnelle des outils (qui vont dans le répertoire "tools" d'OpenWRT), à savoir ce fameux compilateur intermédiaire, lorsque l'utilisateur choisit de générer un compilateur AVR pour le WR703N.

Si quelqu'un a des idées sur le sujet, il est le bienvenu !

* buintils-avr.tar.gz (66.17 KB - downloaded 9 times.)
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un moyen de vériefier est de taper :
Code:
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 août  11 19:25 /bin/sh -> bash

Si le tiens point sur "dash": bingo !

Bingo !

Quote
Il faut alors changer de shell en tapant:
Code:
sudo update-alternatives --install /bin/sh sh /bin/bash 100

Fait mais ca ne change pas le problème smiley-sad
J'ai bien bash maintenant au lieu de dash mais l'erreur est toujours là

Quote
C'est vrai que c'est un peu brutal comme mise en bouche 

Mais dans quel tiroir ais-je donc rangé l'aspirine....

Bon, allé c'est partit pour installer BuildRoot!

Quote
J'ai réussi à générer un paquet "binutils-avr" ...
Mais pour le "gcc-avr" et l' "avr-libc", c'est une autre paire de manche...

perso, je me contenterais d'AVRdude afin de pouvoir reflasher l'Arduino en remote.
Recompiler les sketches sur le WR703 lui même me parait inutile (pour l'instant smiley-wink).
Bon courage!
« Last Edit: August 21, 2012, 03:03:02 pm by barbudor » Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Pages: 1 2 3 [4] 5 6 ... 9   Go Up
Jump to: