capthookb Δημοσ. 15 Απριλίου 2006 Δημοσ. 15 Απριλίου 2006 Κατέβασα τον GPL κώδικα για το router μου, (WAG354G). Αυτό είναι βασισμένο στην πλατφόρμα της Texas Instruments AR7, και σύμφωνα και με την Linksys πρέπει να κάνω compile τον κώδικα για mipsel. Ψάχνοντας βρήκα ένα script που αναλαμβάνει να κάνει compile το gcc και τα σχετικά για κάθε πλατφόρμα που θες. Επειδή ουσιαστικά δεν έχω καταλάβει τι κάνω, αν θα μπορούσε κάποιος να μου ξεκαθαρίσει ένα δυο πράγματα. Μετά το script έχω gcc για 2 πλατφόρμες στο pc μου, σωστά; Μια για i386 που βρίσκεται στο /usr/bin και μια για mipsel στο φάκελο που έφτιαξε το crosstool script στο /opt/crosstool/mipsel-unknown-linux-uclibc/gcc-3.3.3-uClibc-0.9.23/bin Μάλιστα στον τελευταίο φάκελο βρίσκονται τα εκτελέσιμα με ονοματα όπως mipsel-unknown-linux-uclibc-gcc κτλ. Το θέμα είναι τώρα πως να κάνω make τον κώδικα του router. Έχω τις εξής απορίες: Πως θα χρησιμοποιήσω το gcc για την πλατφόρμα mipsel και όχι για ι386; Γίνεται αυτόματα κάτι τέτοιο εάν υπάρχουν στο $PATH και οι δυο παραπάνω κατάλογοι; Αν γίνεται κάτι τέτοιο, θα πρέπει να μετονομάσω το mipsel-unknown-linux-uclibc-gcc σε σκέτο gcc; Αλλιώς τι πρέπει να κάνω; Να βγάλω από το $PATH το /usr/bin; Να απεγκαταστήσω το gcc-i386;
apoikos Δημοσ. 15 Απριλίου 2006 Δημοσ. 15 Απριλίου 2006 Πως θα χρησιμοποιήσω το gcc για την πλατφόρμα mipsel και όχι για ι386; Γίνεται αυτόματα κάτι τέτοιο εάν υπάρχουν στο $PATH και οι δυο παραπάνω κατάλογοι; Γενικά δίνεις ./configure --target=mipsel και το configure θα κοιτάξει για crosscompiler κλπ' date=' αρκεί αυτά να είναι στο path σου. [*]Αν γίνεται κάτι τέτοιο, θα πρέπει να μετονομάσω το mipsel-unknown-linux-uclibc-gcc σε σκέτο gcc; Όχι, σε καμία περίπτωση [*]Αλλιώς τι πρέπει να κάνω; Να βγάλω από το $PATH το /usr/bin; Να απεγκαταστήσω το gcc-i386; Όχι, βλέπε παραπάνω. Γενικά πάντως, για να σου κάνει τη ζωή πιο εύκολη, και αφού θα πας σε uClibc περιβάλλον, δοκίμασε το buildroot. Για ό,τι άλλο χρειαστείς, εδώ είμαστε (πάντα, για τόσο ενδιαφέροντα θέματα )
capthookb Δημοσ. 15 Απριλίου 2006 Μέλος Δημοσ. 15 Απριλίου 2006 Το θέμα είναι πως δεν υπάρχουν καθόλου configure scripts στον κώδικα.:neutral: Στο readme αναφέρει πως τρέχω το make.sh που περιέχει τα εξής. > cd router make linux-clean make linux-dep make linux make clean make make linux-modules make install make rom make upgrade cd .. Επίσης λέει πως τα εργαλεία που χρειάζομαι για να κάνω compile είναι: 1)Montavista Linux Preview [αυτό τι κάνει; εξομοίωση της πλατφόρμας;] Δεν το έχω, αλλά διάβασα κάπου οτι δεν είναι απαραίτητο. 2)GNU binutils με target mipsel-linux 3)uClibc 4)GNU MP Library και το compile να έχει γίνει για mipsel. Θα κοιτάξω και το Buildroot. Άσχετο: Ένα σωρό errors βγάζει σε μερικά αρχεία κώδικα. Ήθελα να 'ξερα αν αυτό είναι που έχουν κάνει πραγματικά compile.... Ευκαιρία να φρεσκάρω τη C++
apoikos Δημοσ. 16 Απριλίου 2006 Δημοσ. 16 Απριλίου 2006 Για αρχή δοκίμασε να κάνεις export CC=path-to-mipsel-gcc και δες τι γίνεται. Φοβάμαι πολύ ότι θα σκαλώσει στα binutils μετά... Btw, μήπως το Makefile έχει πουθενά μεταβλητές για τον compiler και τα binutils που μπορείς να πειράξεις;
NullScan Δημοσ. 16 Απριλίου 2006 Δημοσ. 16 Απριλίου 2006 Τι errors σου βγαίνουν από το compile? Κάνε post κανα δυο.
capthookb Δημοσ. 16 Απριλίου 2006 Μέλος Δημοσ. 16 Απριλίου 2006 Nullscan δοκιμάζω το buildroot προς το παρόν. Μόλις ξαναδοκιμάσω compile θα γράψω τα errors. Απ'ότι θυμάμαι χτες μου έβγαζε λάθη συντακτικά π.χ η συνάρτηση ήταν > ret = websWrite(wp," <td width=150><font face=Arial size=2> %s </font> </td>\n <td width=70><input type=checkbox name=sum%d value=1 ></td>\n </tr>\n",time_buf, i+1); και έπρεπε να γίνει > ret = websWrite(wp," \ <td width=150><font face=Arial size=2> %s </font> </td>\n\ <td width=70><input type=checkbox name=sum%d value=1 ></td>\n\ </tr>\n",time_buf, i+1); για να συνεχίσει το compile. Στο buildroot είδα οτι στις επιλογές είχε μια σειρά από kernels, ενώ στον κώδικα του router χρησιμοποιούν (linux-2.4.17-mvl21). Δε θα έπρεπε να χρησιμοποιήσω την ίδια έκδοση; Επίσης, οι εκδόσεις των εργαλείων, gcc, binutils, κτλ μπορεί να είναι οποιεςδήποτε; π.χ οι τελευταίες;
capthookb Δημοσ. 16 Απριλίου 2006 Μέλος Δημοσ. 16 Απριλίου 2006 Βρήκα και το Makefile που έχει μεταβλητές για Cross-compiling. Παραθέτω τις default ρυθμίσεις: > [b]...[/b] # # Paths # # Source bases export PLATFORM LINUXDIR LIBDIR USRLIBDIR export TOP := $(shell pwd) export SRCBASE := $(shell (cd $(TOP)/.. && pwd -P)) # # Cross-compile environment variables # # Build platform export BUILD := i386-pc-linux-gnu export HOSTCC := gcc # uClibc wrapper ifeq ($(CONFIG_UCLIBC),y) export PLATFORM := $(PLATFORM)-uclibc endif ifeq ($(PLATFORM),mipsel) #export CROSS_COMPILE := mipsel-linux- export CROSS_COMPILE := mips_fp_le- export CONFIGURE := ./configure mipsel-linux --build=$(BUILD) export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/../mipsel-linux && pwd -P) endif ifeq ($(PLATFORM),mipsel-uclibc) export CROSS_COMPILE := mipsel-uclibc- export CONFIGURE := ./configure mipsel-linux --build=$(BUILD) export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/.. && pwd -P) endif export CC := $(CROSS_COMPILE)gcc export AR := $(CROSS_COMPILE)ar export AS := $(CROSS_COMPILE)as export LD := $(CROSS_COMPILE)ld export NM := $(CROSS_COMPILE)nm export RANLIB := $(CROSS_COMPILE)ranlib export STRIP := $(CROSS_COMPILE)strip export SIZE := $(CROSS_COMPILE)size # # Install and target directories # export PLATFORMDIR := $(TOP)/$(PLATFORM) export INSTALLDIR := $(PLATFORMDIR)/install export TARGETDIR := $(PLATFORMDIR)/target # # Configuration # [b]...[/b]
NullScan Δημοσ. 16 Απριλίου 2006 Δημοσ. 16 Απριλίου 2006 Όσον αφορά τις εκδόσεις των εργαλείων που θα χρησιμοποιήσεις για το cross compiling, εάν οι developers δεν λένε να χρησιμοποιήσεις κάποια συγκεκριμένη version λόγω π.χ. incompatibilities ή πιθανής αστάθειας, μπορείς να χρησιμοποιήσεις όποια version θέλεις, ούτως ή άλλως ο compiler λίγη σχέση έχει με το αν θα γίνει σωστά η διαδικασία. Αλλά για να είσαι και σίγουρος κάνε compile με gcc 3.x που είναι τεσταρισμένος χρόνια τώρα και αποδεδειγμένα σταθερός. Το ίδιο και με τα άλλα tools, κυνήγα να χρησιμοποιήσεις σταθερές και δοκιμασμένες εκδόσεις.
capthookb Δημοσ. 16 Απριλίου 2006 Μέλος Δημοσ. 16 Απριλίου 2006 errors: >../shared/ping_config.c:39: warning: no semicolon at end of struct or union ../shared/ping_config.c:53: error: conflicting types for `ping_start_flag' ../shared/broadcom.h:60: error: previous declaration of `ping_start_flag' > buildroot/build_mipsel/staging_dir/bin-ccache/../lib/gcc/mipsel-linux-uclibc/3.4.2/../../../../mipsel-linux-uclibc/bin/ld: ../ti_ap/wireless.o: Relocations in generic ELF (EM: 3) ../ti_ap/wireless.o: could not read symbols: File in wrong format collect2: ld returned 1 exit status make[1]: *** [httpd] Error 1 Το τελευταίο είναι θέμα ρυθμίσεων;
capthookb Δημοσ. 16 Απριλίου 2006 Μέλος Δημοσ. 16 Απριλίου 2006 Ουφ, δε μπορώ άλλο, τα παρατάω (για σήμερα). Δοκίμασα ότι μπορούσα να φανταστώ αλλά δεν έβγαλα άκρη. Τα συντακτικά λάθη τα διόρθωσα. Το τελευταίο με τίποτα. Με έπιασε πονοκέφαλος..... Τελικά το Montavista Preview Kit, γνωρίζει κανείς τι ακριβώς είναι και αν το χρειάζομαι; (Κανένα howto για να φτιάξω καλώδιο για serial console για το router ξέρετε
apoikos Δημοσ. 17 Απριλίου 2006 Δημοσ. 17 Απριλίου 2006 Με τι compiler τα κάνει compile το buildroot; Κάτι μου λέει ότι είναι gcc-4, o οποίος είναι πιο αυστηρός όσον αφορά τη σύνταξη. Κοίτα, δεν ξέρω κατά πόσον είναι κατάλληλο το buildroot για το router σου. Αν έχει κάποιο proprietary part (βλ. broadcom chip) ενδεχομένως δε θα μπορείς να ελέγξεις το ράδιό του. Επίσης μπορεί να απαιτεί όντως Montavista Linux, το οποίο νομίζω ότι έχει κάποια real-time enhancements. Δες καλά το documentation τι λέει. Όσο για serial console, χρειάζεσαι απλά ένα null-modem cable και το minicom
capthookb Δημοσ. 17 Απριλίου 2006 Μέλος Δημοσ. 17 Απριλίου 2006 Όχι, gcc έχω 3.3.6 στο slackware και το buildroot κατέβασε και έκανε compile την 3.4.2 για mipsel.
capthookb Δημοσ. 17 Απριλίου 2006 Μέλος Δημοσ. 17 Απριλίου 2006 Θα με κάψεις με το null modem:-D Most OpenWrt compatible devices have one or two serial ports on the router's PCB (printed circuit board.) The problem is they operate on 3.3v' date=' which means [b']they will get fried if you connect them to your computer's serial port[/b], which operates at 12v. Luckily, this is more common a thing than you would think, and as such, Maxim (no, not the magazine) has made a few handy little ICs for us to use. The best (IMHO) is the MAX233, or more specifically, the MAX233a, which has a higher speed capacity and uses less power. This guide will tell you how to solder everything together to get a pc-compatible serial port on your OpenWrt router. Και όντως τόσο είναι, το μέτρησα γύρω στα 3.28Volt http://wiki.openwrt.org/OpenWrtDocs/Customizing#head-4c28a2c6c9a7bb30e81e2e13a9740542ae64cf8d
apoikos Δημοσ. 17 Απριλίου 2006 Δημοσ. 17 Απριλίου 2006 Θα με κάψεις με το null modem:-D Και όντως τόσο είναι' date=' το μέτρησα γύρω στα 3.28Volt[/quote'] Ε, καλά, αυτός ο router δε θα είχε σειριακή έτοιμη για να βάλεις null-modem πάνω :-P.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.