2012-09-06 3 views
3

Je travaille sur l'exécution d'un programme Hello World sur le Linksys WRT54G-V4 exécutant dd-wrt ou OpenWRT.Comment écrire Hello World pour OpenWRT et/ou dd-wrt

En ce moment, ce routeur exécute dd-wrt pour des raisons que j'expliquerai ci-dessous. Je voudrais passer ce routeur à OpenWRT, parce que je n'ai pas été capable de construire dd-wrt ou sa chaîne d'outils. Je suppose que la chaîne d'outils OpenWRT devrait produire des binaires exécutables qui seront également exécutés sur dd-wrt. OpenWRT était assez simple à construire, car il a un système de fabrication de menus. À l'aide de cet outil pratique, j'ai construit une chaîne d'outils qui compilera entre ma boîte Ubuntu x86 et une cible MIPS. En suivant les instructions, j'ai pu créer OpenWRT et produire des images pour brcm47xx et brcm63xx.

Par exemple, voici une compilation réussie de mon petit Bonjour programme mondial:

[email protected]:~/Desktop/tests$ cat helloC.c 
#include <stdio.h> 
int main (int argc, char **argv) 
{ 
    printf("Hello World\n"); 
    return 0; 
} 
[email protected]:~/Desktop/tests$ 
[email protected]:~/Desktop/tests$ mipsel-openwrt-linux-gcc -o HelloWorld helloC.c 
[email protected]:~/Desktop/tests$ 
[email protected]:~/Desktop/tests$ file HelloWorld 
HelloWorld: ELF 32-bit LSB executable, MIPS, MIPS32 version 1, dynamically linked (uses shared libs), with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x3040000, not stripped 
[email protected]:~/Desktop/tests$ 

Malheureusement, lorsque je tente de courir HelloWorld sur ma course WRT54G-V4 DD-WRT je reçois une erreur de SEG.

En regardant Wikipedia, je vois que ce routeur utilise le Broadcom BCM5352. Lorsque je lance make menuconfig dans le répertoire OpenWRT/trunk, je ne vois pas d'option pour le BCM5352, ce qui explique pourquoi je suis réticent à faire clignoter mon routeur avec l'une des images que j'ai créées dans le brcm47xx ou répertoires brcm63xx. Je ne veux pas deviner faux et brique le routeur.

Question 1 - Quelle configuration Broadcom dois-je sélectionner en utilisant make menuconfig pour cibler mon WRT54G-V4 avec son chipset BCM5352?

Question 2 - Si mon fichier exécutable « HelloWorld » j'ai produit ci-dessus courent directement à partir de la ligne de commande sur le 54G, ou dois-je faire un paquet par http://www.gargoyle-router.com/wiki/doku.php?id=openwrt_coding?

TIA

+0

Je ne suis pas du tout sûr que vous ayez correctement installé votre toolchain sur Ubuntu :(Regardez ici: http://wiki.openwrt.org/doc/devel/crosscompile – paulsm4

+3

J'ai réussi à le faire fonctionner, Je n'ai pas eu la bonne version de open-wrt Je reviendrai et répondrai à ma question sur ce que j'ai fait en dernier –

+0

Cool - merci pour le suivi :) – paulsm4

Répondre

1

Vous pouvez suivre le guide pratique officiel (de: http://www.dd-wrt.com/forum/viewtopic.php?p=21499&sid=de90601a8d51747d1c8ccec29284127d)

1. The helloworld.c source 
Code: 
#include <stdio.h> 

int main (void) { 
     printf("Hello world!\n"); 
} 

2. Get and unpack the toolchain in your homedir 
Code: 
cd ~ 
wget ftp://ftp.dd-wrt.com/sourcecode/toolchains.x86.debian.sp1.tar.bz2 
tar -jxf toolchains.x86.debian.sp1.tar.bz2 

3. Add the path to your cross-compiler executable to your path environment variable and compile helloworld.c 
Code: 
PATH=~/toolchains/4.1.0-uclibc-0.9.28/bin:$PATH mipsel-linux-uclibc-gcc helloworld.c -o helloworld 

4. Check if its correctly compiled with the cross-compiler 
Code: 
file helloworld 
helloworld: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), not stripped 

5. Finally, transfer the helloworld binary file to your router, set the executable bit and run it. 

testé avec Ubuntu 6.06.1 LTS.