ide driver error

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

ide driver error

Beitrag von dietmarw »

Code: Alles auswählen

powerpc-tuxbox-linux-gnu-gcc -D__KERNEL__ -DMODULE -I../include -I../dvb/include -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -Werror -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -mcpu=860 -I../dvb/drivers/media/dvb  -DKBUILD_BASENAME=dbox2_fp_mouse  -c -o dbox2_fp_mouse.o dbox2_fp_mouse.c
powerpc-tuxbox-linux-gnu-ld -r -o dbox2_fp_input.o dbox2_fp_input_core.o dbox2_fp_rc.o dbox2_fp_keyboard.o dbox2_fp_button.o dbox2_fp_mouse.o
make[3]: Leaving directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/driver/fp'
make -C i2c modules
make[3]: Entering directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/driver/i2c'
powerpc-tuxbox-linux-gnu-gcc -D__KERNEL__ -DMODULE -I../include -I../dvb/include -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -Werror -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -mcpu=860   -DKBUILD_BASENAME=dbox2_i2c  -c -o dbox2_i2c.o dbox2_i2c.c
make[3]: Leaving directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/driver/i2c'
make -C ide modules
make[3]: Entering directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/driver/ide'
powerpc-tuxbox-linux-gnu-gcc -D__KERNEL__ -DMODULE -I../include -I../dvb/include -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -Werror -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -mcpu=860   -DKBUILD_BASENAME=main  -c -o main.o main.c
main.c: In function `dbox_ide_exit':
main.c:737: warning: implicit declaration of function `ide_unregister'
make[3]: *** [main.o] Fehler 1
make[3]: Leaving directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/driver/ide'
make[2]: *** [_modsubdir_ide] Fehler 2
make[2]: Leaving directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/driver'
make[1]: *** [driver] Fehler 2
make[1]: Leaving directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk'
make: *** [/home/dietmarw/tux_test/20060811/dbox2/cdkflash/root-cramfs] Fehler 2
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Beitrag von JtG-Riker »

Falsche Kernel-Config, musst die neue nehmen, oder in Driver/Makefile IDE abstellen.
Carjay
Developer
Beiträge: 122
Registriert: Sonntag 23. April 2006, 12:37

Beitrag von Carjay »

Moin,

das sollte keinesfalls dazu dienen, newmake abzuschießen, ich hatte nur a) dann doch keine Zeit gehabt, das so anzupassen, daß man das IDE-Feature abschalten kann und b) hatte ich erst am Ende an newmake gedacht.

Das wird nicht so bleiben.

Falls das einigen sehr überstürzt vorkommt, richtig, wir wollten diesmal vermeiden, daß sich wieder einige glühende GPL-Verfechter zu Worte melden und auf Herausgabe des IDE-Treibers drängen.

Mir fehlt allerdings auch noch das Interface, um das alles testen zu können.
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Re: ide driver error

Beitrag von Barf »

dietmarw hat geschrieben:

Code: Alles auswählen

...
make[3]: Entering directory `/home/dietmarw/tux_test/20060811/tuxbox-cvs/driver/ide'
powerpc-tuxbox-linux-gnu-gcc -D__KERNEL__ -DMODULE -I../include -I../dvb/include -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -Werror -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -I/home/dietmarw/tux_test/20060811/tuxbox-cvs/cdk/linux/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -mcpu=860   -DKBUILD_BASENAME=main  -c -o main.o main.c
main.c: In function `dbox_ide_exit':
main.c:737: warning: implicit declaration of function `ide_unregister'
make[3]: *** [main.o] Fehler 1
...
Folgendes ist passiert: Ein Kernelmodul (ide) ist zugefügt worden. Dieses ist so geschrieben, dass es nur kompiliert falls gewisse Kerneloptionen gesetzt sind. Falls nicht, ist die Funktion ide_unregister nicht definiert, und die Kompilierung bricht mit einem Fehler ab.

Ich behaupte nicht, dass Treiberprogrammierung unter Linux zu meiner Kompetenzbereiche gehört. Es scheint mir aber unschön und unnötig, dass ein Modul nur kompiliert falls gewisse Kerneloptionen gesetzt sind. Falls mann .../driver/ide/main.c wie folgt:

Code: Alles auswählen

diff -u -r1.1 main.c
--- driver/ide/main.c   9 Aug 2006 20:02:12 -0000       1.1
+++ driver/ide/main.c   11 Aug 2006 17:30:26 -0000
@@ -394,6 +394,7 @@
 }
 
 extern void ide_probe_module(int);
+extern int ide_unregister(unsigned int);
 
 static void dboxide_register(void)
 {
patcht, kompiliert alles. Carjay und dBoxbaer, eure Meinung?
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich hatte das selbe beim normalen make.
ein
rm .deps/linuxdir
rm .deps/linuxkernel
rm .deps/driver

und neubau hat geholfen :)
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Gebe barf da recht, eine alternative wäre ein weitere Flashrule für das ganze.

Was ist denn mit busybox-flash-ide2? sollte die nicht auch genommen werden?
Die Swap Option bietet sich ja nicht nur für Festplatten an sondern auch für mmc.

makefile.am im cdk:

Code: Alles auswählen

$(DEPDIR)/busybox: bootstrap @DEPENDS_busybox@
	@PREPARE_busybox@
if TARGETRULESET_FLASH
	cat Patches/busybox-flash-ide2.config > @DIR_busybox@/.config
else
	cat Patches/busybox.config > @DIR_busybox@/.config
endif
Carjay
Developer
Beiträge: 122
Registriert: Sonntag 23. April 2006, 12:37

Re: ide driver error

Beitrag von Carjay »

Barf hat geschrieben:Es scheint mir aber unschön und unnötig, dass ein Modul nur kompiliert falls gewisse Kerneloptionen gesetzt sind.
Die Aussage verstehe ich nicht ganz, das ist vollkommen normal und funktioniert auch gar nicht anders, weil z.B. ein Kernel ohne CONFIG_IDE die entsprechenden Symbole nicht exportiert.

Kernelprogrammierung ist etwas anders als Userspace, es wird stärker getrickst und man arbeitet hart an der Grenze des vom Compiler zulässigen. Also genau meine Welt. ;)

Dein Vorschlag würde sicherlich funktionieren, wäre aber trotzdem eine ganz schlechte Lösung. Im Kernel sind eine Menge Funktionen als Makros ausgeführt (weil einige Funktionen direkt auf Assembler-Mnemonics abgebildet werden können) und man erkennt diese nicht wie sonst üblich an der Großschreibung (weil es Architekturen geben kann wo man dann doch eine Funktion braucht).

Das führt dann später zu Linkerfehlern. Beim 2.6er wird dies übrigens schon beim Kompilieren geprüft.

Die Lösung ist wie man sieht auch ganz einfach, mir fehlte nur neulich die Zeit, nach der richtigen CONFIG-Definition zu suchen und ich hatte dboxbärs Patche einfach nur eingebaut.

Fürs CDK lasse ich die IDE-Config an, die frißt kein Brot, für die Flash-Configs bin ich nicht zuständig, da ich selber keine Images baue.
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Re: ide driver error

Beitrag von Barf »

Carjay hat geschrieben:... das ist vollkommen normal und funktioniert auch gar nicht anders, weil z.B. ein Kernel ohne CONFIG_IDE die entsprechenden Symbole nicht exportiert.
Ok, ich gebe mir zufrieden mit diesem Erklärung.
Die Lösung ist wie man sieht auch ganz einfach
:gruebel: Welche Lösung? Dass der User Makefiles editieren muss, um seine erwünschte Treibers zu bausen?

Vielleicht könnte mann etwas wie

Code: Alles auswählen

ifeq ($(CONFIG_BLK_DEV_IDE),m)
# Treiber builden 
....
else
# Treiber nicht builden
....
endif
in driver/Makefile machen?
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Beitrag von JtG-Riker »

Wie wär es denn eine ./configure option zu machen --enable-ide ?

Da ich mit dem Kram nicht so bewandert bin müsst ich mir das erstmal angucken, aber ich denke das wär sicher nicht so schwierig könnte man das nicht einfach z.B. mit targetruleset=flashide machen ?

Riker
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

jep Riker genau das wärs doch
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Beitrag von DBoxBaer »

JtG-Riker hat geschrieben:Wie wär es denn eine ./configure option zu machen --enable-ide ?

Da ich mit dem Kram nicht so bewandert bin müsst ich mir das erstmal angucken, aber ich denke das wär sicher nicht so schwierig könnte man das nicht einfach z.B. mit targetruleset=flashide machen ?

Riker
Eher nicht, ich denke die Lösung von carjay ist da schon richtig: Wenn
der Kernel mit IDE configured wurde, compiled es ja auch. Und ohne
hat der Treiber keinen Sinn: Spätestens beim insmod knallts dann.

Ist aber müssig: Sieht so aus, als hätte carjay das schon im Makefile
"gefixt".

Ciao,

DboxBaer
... und der Rest ist dann Software (TM)
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

JtG-Riker hat geschrieben:Wie wär es denn eine ./configure option zu machen --enable-ide ?
Gibt es seit gestern in newmake. Aus offensichtliche Grunde nicht getestet. Ist eigentlich keine weltbewegende Sachen: der Kernel wird entsprechend konfiguriert (ide-support als Module), Treibers werden da automatisch mitkompiliert durch den carjay-fix (die ich endlich verstanden habe).
Da ich mit dem Kram nicht so bewandert bin müsst ich mir das erstmal angucken, aber ich denke das wär sicher nicht so schwierig könnte man das nicht einfach z.B. mit targetruleset=flashide machen ?
Ein "Image" mit Rootfilesystem auf der Platte ist eigenlich etwas recht anderes. Nicht unmöglich; der erste Schritt ist aber ein Flashimage/ein Yadd mit IDE-Unterstützung.