Fragen zur Media Hardware

Elfine

Neuer User
Mitglied seit
17 Jan 2008
Beiträge
77
Punkte für Reaktionen
0
Punkte
0
Hallo,
da bin ich schon wieder. Wenn ich das richtig mitbekommen habe dann werkelt in der Media ein ARM926t Prozessor. Nun habe ich den Crosscompiler eingerichtet mit ARM (das lief nach viel Arbeit auch komplett durch), starte ich jedoch das makefile von den AVM Files dann fragt es nach dem Mipsel GCC. Ist der Coprozessor ein Mipsel oder ist das ein Fehler im Makefile?

Irgendwie stehe ich mit dem Crosscompiler noch auf Kriegsfuss. Mipsel bekomme ich nicht eingerichtet. Irgendwo bricht das immer ab.

Auch gibt es im Sourcenstand der Media so viele Bugs dass man zum Teil den GCC per Hand ändern muss und noch einiges mehr.

Mich würde daher mal interessieren ob jemand mehr Informationen zum Thema hat.
 
Alle Angeben ohne Gewähr, denn der Experte bin ich da auch nicht.

In der FritzMedia arbeitet meines Wissens ein Chip aus der DaVinci Reihe von Texas Instruments. Das ist also ein ARM mit DSP kombiniert.

Auf den FritzBoxen arbeitet der AR7 (oder evtl. UR8), ebenfalls von Texas Instruments. Das ist ein Chip mit Mips Kern + DSP.

Jetzt stellt sich die Frage, experimentierst du evtl. mit dem Quellcode für die FritzBoxen anstatt für die FritzMedia?
 
Da bin ich aber beruhigt. Ich dachte schon ich wäre komplett verrückt.

Ich benutze die Sourcen mit der Bezeichnung fritz_media-source-files-55.04.tar.bz2

arm926 und Fritz_Box_Davinci sagen mir eigentlich dass es sich nur um die Media handeln kann. Ich werde einfach das Makefile editieren und es dann noch mal versuchen.

Leider muss ich zuerst noch ein paar Stunden weiter arbeiten. (Ein Arbeitsplatz mit PC und Internet ist schon was feines ;) )

Das Makefile sieht so aus:

Code:
################################################################################
#    vim: noexpandtab                                                          #
################################################################################

################################################################################
#                                                                              #
#   How to build the Fritz Box Kernel including gcc, busybox, uClibc and       #
#   lots of usefull tools                                                      #
#                                                                              #
#   You have alredy unpacked this archive ....                                 #
#                                                                              #
#   What do you need ?                                                         #
#   ==================                                                         #
#   1) a relativly new debian (32-Bit or 64-Bit)                               #
#   2) gcc 3.4 or higher                                                       #
#   3) package 'realpath'                                                      #
#   4) a few hours time ....                                                   #
#                                                                              #
#   What do you have to do ?                                                   #
#   ========================                                                   #
#   just type  'make 2>&1 | tee compile.log'                                   #
#                                                                              #
#   Notice:                                                                    #
#   =======                                                                    #
#                                                                              #
#   You will notice quite a few error messages - just ignore them              #
#                                                                              #
################################################################################

################################################################################
#                                                                              #
#   Version info: product       Fritz_Box_Davinci                      
#                 firmware:     04.74-mpommerenke-build_4949-8290M                       
#                 sub-version:                         
#                 svn-revision: 04.74-mpommerenke-build_4949-8290M                       
#                                                                              #
################################################################################

################################################################################
#                                                                              #
#   VERSION variables                                                          #
#                                                                              #
################################################################################
ifeq ("$(MAKELEVEL)","0") 
export KERNEL_LAYOUT := arm926
export GPL_DIR := $(shell pwd)
export CROSS_PATH := $(GPL_DIR)/base_$(KERNEL_LAYOUT)_build/toolchain/build_mipsel_nofpu/staging_dir/bin
export CROSS_COMPILE := $(CROSS_PATH)/mipsel-linux-uclibc-
export DOWNLOAD := $(GPL_DIR)/download
export PATH := $(CROSS_PATH):$(PATH)

export ECHO := echo -e
export ECHO_ROT := [31m
export ECHO_GRUEN := [32m
export ECHO_BOLD_GRUEN := [47m[32m
export ECHO_GELB := [33m
export ECHO_BLAU := [34m
export ECHO_BOLD_BLAU := [47m[34m
export ECHO_LILA := [35m
export ECHO_TUERKIS := [36m
export ECHO_HELL_GRAU := [37m
export ECHO_END := [0m
endif
################################################################################
#                                                                              #
#   download gcc, binutils and gdb (for optional build)                        #
#                                                                              #
################################################################################
all:
	############################################################################
	#                                                                          #
	#   configure kernel for wanted kernel_layout                              #
	#                                                                          #
	############################################################################
	-make -C kernel_arm926_debug_build CROSS_COMPILE=$(CROSS_COMPILE) SWITCH_KERNEL=`pwd`/arch/kernel_switch_subproject KERNEL_SWITCH_PARAM=init autoconf.h

	############################################################################
	#                                                                          #
	#   build kernel                                                           #
	#                                                                          #
	############################################################################
	make -C kernel_arm926_debug_build CROSS_COMPILE=$(CROSS_COMPILE) SWITCH_KERNEL=`pwd`/arch/kernel_switch_subproject  KERNEL_SWITCH_PARAM=init all


Edit:

Nach dem Ändern läuft das Script durch stoppt aber hier:

Code:
make[2]: Entering directory `/home/slightly/GPL/kernel_arm926_debug_build/kernel/linux-2.6.19.2'
  CHK     include/linux/version.h
  SYMLINK include/asm-arm/arch -> include/asm-arm/arch-davinci
make[3]: »include/asm-arm/mach-types.h« ist bereits aktualisiert.
  CHK     include/linux/utsrelease.h
  CHK     include/linux/compile.h
  GEN     .version
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
arch/arm/mach-davinci/built-in.o:(.initcall4.init+0x0): undefined reference to `find_key'
make[2]: *** [.tmp_vmlinux1] Fehler 1
make[2]: Leaving directory `/home/slightly/GPL/kernel_arm926_debug_build/kernel/linux-2.6.19.2'
make[1]: *** [all] Fehler 2
make[1]: Leaving directory `/home/slightly/GPL/kernel_arm926_debug_build'
make: *** [all] Fehler 2
slightly@StinkyLinux:~/GPL$

Vielleicht hat ja noch jemand eine Idee
 
Zuletzt bearbeitet:
Da grabe ich doch schnell mal meinen alten Thread wieder aus.

Ich habe leider immer nur wenig Zeit aber ich hoffe dass sich das in der nächsten Woche ein wenig ändern wird.

Ich versuche immer noch einen Kernel für ARM zu kompilieren. Ich benutze dazu die Sourcen der Fritzmedia, wie oben schon beschrieben. Ich habe nun schon zwei unterschiedliche Crosscompiler gebaut aber bei jedem bleibt es mit dem Fehler

Code:
 LD      .tmp_vmlinux1
arch/arm/mach-davinci/built-in.o:(.initcall4.init+0x0): undefined reference to `find_key'
make[2]: *** [.tmp_vmlinux1] Fehler 1
make[2]: Leaving directory `/home/slightly/GPL/kernel_arm926_debug_build/kernel/linux-2.6.19.2'
make[1]: *** [all] Fehler 2
make[1]: Leaving directory `/home/slightly/GPL/kernel_arm926_debug_build'
make: *** [all] Fehler 2

stehen.

Leider ist mein Wissen nicht so gross und ich weiss nicht so ganz was da eigentlich passiert. Wofür wird das "Find_Key" benötigt?

Hat jemand anderes schon den Kernel erfolgreich compiliert? Ich würde mal so gerne sehen ob der Bootloader ein unverschlüsseltes Image bootet.
 
Vielen Dank für den Tip, ich werde das auch mal ausprobieren. Mal sehen ob hier auch der fehler kommt.
 
Hi Elfine,

ich kann dir zwar nicht sagen, was find_key ist oder wo es steckt, aber ich kann ja mal versuchen, das Problem zu erklären.

Der Fehler wird beim Linken erzeugt. Linken bedeutet, dass die ganzen Einzelteile des/der Programme zu einem grossen ganzen zusammengefügt werden.
Der Compiler übersetzt erstmal den Sourcecode (z.B. sonstwas.c, irgendwas.c, ..) in Objectcode (sonstwas.o, irgendwas.o, ..).
Der Linker macht dann aus den *.o's (und ggf. anderen "Libraries") das eigentliche Programm (executable).
Wenn jetzt in der sonstwas.o eine Funktion aus irgendwas.o aufgerufen wird, muss der Linker dafür sorgen, dass diese Funktion gefunden wird.

Wir nehmen mal an, dass irgendwas.o die Funktion "find_key" benötigt, die es aber selbst nicht enhält, sondern die liegt halt woanders, bzw. ist in einem anderen Objectfile definiert. Der Linker bekommt normalerweise beim Aufruf alle zusammengehörigen Objectfiles und ggf. Libraries übergeben und verstrickt dann die Funktionsaufrufe mit den Positionen/Adressen der Funktionen.

In deinem Fall findet der Linker aber "find_key" nicht. Jetzt muss man die Ursache finden. Es könnte z.B. sein, dass find_key in einem Programmteil/Library definiert ist, den der Linker nicht als Aufrufparameter bekommen hat.

Jetzt zur Suche:
Mache ein "grep find_key *" auf alle Sourcen in allen Unterverzeichnissen, dann suchst du die Definition von find_key. Wenn du die Datei gefunden hast, suche nach dem gleichen Dateinamen mit der Endung .o
und/oder: gehe die Objectfiles durch und mache ein "nm -a dateiname", dann siehst du die ganzen Definitionen. Sieh dir dazu bitte die manpage von "nm" an, da du hier sowohl Aufrufe, als auch Definitionen siehst! Ich glaube "nm dateiname" gibt dir nur die Definitionen. Aber ich bin kein Experte für nm.

Wenn du das Objectfile gefunden hast, in dem find_key definiert ist, prüfe als nächstes, ob im Aufruf des Linkers (das Makefile müsste ./GPL/kernel_arm926_debug_build/kernel/linux-2.6.19.2/Makefile sein) dieses Objectfile mit angegeben ist.

Leider muss ich jetzt ganz dringend weg.
Ich werde mir das aber nacher nochmal in Ruhe anschauen und auch mal gucken, ob ich den Crosscompiler zusammen kriege

Greetz
Ameise
 
Ich habe jetzt alles durchsucht aber find_key wird nirgends gefunden. Mittlerweile ist auch mein System so "verwüstet" dass ich nichts mehr wieder finde :( Ich denke heute wird das nichts mehr. Ich werde immer frustrierter. Nicht einmal einen Kernel von Kernel.org kann ich fehlerfrei für ARM compilieren. Mittlerweile frage ich mich ob ich das richtige Hobby habe.

Edit: Der aktuelle 2.6er Kernel ist nach einigem Editieren nun doch fehlerfrei durchgelaufen. Die Fritzmedia sourcen wollen leider immer noch nicht.
 
Zuletzt bearbeitet:
Der DaVinci-Code ...

scheint eine Entwicklung von AVM zu sein.

Unter http://lxr.free-electrons.com/source/arch/arm/?a=arm;v=2.6.19 finde ich keinen Hinweis auf mach-davinci. Das ist erst ab 2.6.22 der Fall ... und dann sieht der Code auch etwas anders aus...mtd.c existiert dort nicht....

find_key finde ich allerdings auch nirgendwo definiert.
Die Referenz auf find_key ist allerdings in der mtd.c, was für mich so aussieht, als wäre genau da der Schlüssel zu finden, der uns den Spass verdirbt.

Mal sehen, ob die Sourcen vom neuen Update auch auf dem Server von AVM zu finden sind...und was dort mit find_key passiert ist.

Gruss
Ameise
 
Neue Sourcen wird man da nicht finden. Einzig allein findet man dort die alten Sourcen. Es gab schon einige Updates nach den letzten Sourcen.

Auch mit den herausgegebenen Sourcen musste man schon viel editieren um überhaupt so weit zu kommen. Mal fehlt eine Verlinkung, mal eine headerdatei. So allmählich denke ich eher die haben die Sourcen herausgegeben um sich über uns lustig zu machen :(

Bei find_key habe ich mir auch schon soetwas gedacht weil das erst ganz am Schluss des Compilierens auftaucht.

Ich bin ja schon froh dass ich bei diesem ganzen Zeugs nicht ganz alleine da stehe. Vielen Dank ;)
 
Naja, wenn man drauf drängt, werden sie die Sourcen (zumindest für den Kernel) schon rausrücken. Dazu gibt's die GPL. :rolleyes:

Für die Arbeit an einem neuen/erweiterten OS gehen mir aber nach dem gestrigen Update langsam die Argumente aus....
Jetzt habe ich auch noch Streaming per "ushare" von meiner Linux-Dose hinbekommen.....was will ich mehr?

Bis auf die Tatsache, dass der Start des Mediacenters lahm ist (ist da Java drin?), und die Unterstützung für JPEG noch nicht richtig funzt (kommt lt. 1&1 noch)....bin ich eigentlich ganz zufrieden.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.