Eumex Treiber kompilieren

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
mase76
Beiträge: 1353
Registriert: 19.06.2004 08:57:32

Eumex Treiber kompilieren

Beitrag von mase76 » 01.02.2007 21:37:55

Hallo!
Ein Kollege von mir möchte gerne auf Debian umsteigen.
Da er auf dem Land wohnt, gibt es für ihn kein DSL, nur ISDN.
Er hat eine Eumex PC504.
Ich habe einen Linux Treiber finden können, aber der lässt sich
nicht kompilieren. Weder unter dem Etch Kernel 2.6.18, noch unter
2.6.19.2.
Auch die CVS Version des Treibers kompiliert nicht.

Code: Alles auswählen

make[5]: Entering directory `/usr/src/linux-2.6.19.2'
  CC [M]  /usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_usb.o
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_usb.c:25:26: Fehler: linux/config.h: Datei oder Verzeichnis nicht gefunden
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_usb.c: In Funktion »init_urb«:
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_usb.c:588: Warnung: Übergabe des Arguments 6 von »usb_fill_bulk_urb« von inkompatiblem Zeigertyp
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_usb.c:615: Warnung: Übergabe des Arguments 6 von »usb_fill_bulk_urb« von inkompatiblem Zeigertyp
make[6]: *** [/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_usb.o] Fehler 1
make[5]: *** [_module_/usr/src/Eumex/kernel/usb/kernel2.6/eumex] Fehler 2
make[5]: Leaving directory `/usr/src/linux-2.6.19.2'
make[4]: *** [all] Fehler 2
make[4]: Leaving directory `/usr/src/Eumex/kernel/usb/kernel2.6'
make[3]: *** [all-recursive] Fehler 1
make[3]: Leaving directory `/usr/src/Eumex/kernel/usb'
make[2]: *** [all-recursive] Fehler 1
make[2]: Leaving directory `/usr/src/Eumex/kernel'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/usr/src/Eumex'
make: *** [all] Fehler 2
Danach hab ich überall, wo dieser Fehler auftrat, config.h durch autoconf.h ersetzt.
Nun scheitert er an

Code: Alles auswählen

make[5]: Entering directory `/usr/src/linux-2.6.19.2'
  CC [M]  /usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_user.o
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_user.c:32:35: Fehler: linux/devfs_fs_kernel.h: Datei oder Verzeichnis nicht gefunden
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_user.c: In Funktion »emx_user_register«:
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_user.c:334: Warnung: Implizite Deklaration der Funktion »devfs_mk_cdev«
/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_user.c:344: Warnung: Implizite Deklaration der Funktion »devfs_remove«
make[6]: *** [/usr/src/Eumex/kernel/usb/kernel2.6/eumex/emx_user.o] Fehler 1
make[5]: *** [_module_/usr/src/Eumex/kernel/usb/kernel2.6/eumex] Fehler 2
make[5]: Leaving directory `/usr/src/linux-2.6.19.2'
make[4]: *** [all] Fehler 2
make[4]: Leaving directory `/usr/src/Eumex/kernel/usb/kernel2.6'
make[3]: *** [all-recursive] Fehler 1
make[3]: Leaving directory `/usr/src/Eumex/kernel/usb'
make[2]: *** [all-recursive] Fehler 1
make[2]: Leaving directory `/usr/src/Eumex/kernel'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/usr/src/Eumex'
make: *** [all] Fehler 2
Was kann ich da machen? Devfs ist doch nicht mehr im Kernel.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 01.02.2007 22:38:57

hi,

da kannst du eigentlich nur einen aelteren Kernel verwenden,
am besten genau den, der im README (oder so) erwaehnt wird.

Ein Link zu deiner Quelle waere auch nicht schlecht, vielleicht
gibt's da einen nuetzlichen Hinweis.
Beware of programmers who carry screwdrivers.

mase76
Beiträge: 1353
Registriert: 19.06.2004 08:57:32

Beitrag von mase76 » 02.02.2007 15:23:41

Sorry, hab ich ganz vergessen.
Der Treiber stammt von
http://eumex.sourceforge.net/

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 02.02.2007 18:20:20

Auch wenn's da um was anderes geht, ganz am Ende steht ein
Mini-Patch gegen die CVS-Version und damit geht's mit Kernel
2.6.16. Also sollte das fehlende devfs kein Hindernis mehr sein.

Ich wuerde aber bei 2.6.18 bleiben, weil von .18 auf .19 eher viel
geaendert wurde und weil das der offizielle Etch-Kernel ist.
Poste doch mal die Fehlermeldungen, wenn du die CVS-Version
mit dem 2.6.18 uebersetzt.
Beware of programmers who carry screwdrivers.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.02.2007 23:01:18

mase-FAQ hat geschrieben: Danach hab ich überall, wo dieser Fehler auftrat, config.h durch autoconf.h ersetzt.
Ist zwar grundsätzlich richtig, aber es gibt eine einfachere Lösung:
nachdem diese Datei beim 2.6er eigentlich nicht mehr verwendet wird, gibt es diese "config.h" jetzt im Paket "linux-kernel-headers":

Code: Alles auswählen

#ifndef _LINUX_CONFIG_H
#define _LINUX_CONFIG_H
/* This file is no longer in use and kept only for backward compatibility.
 * autoconf.h is now included via -imacros on the commandline
 */
#include <linux/autoconf.h>

#endif
Du kannst diese Datei aber auch im Unterverzeichnis include/linux der Kernelsourcen erzeugen.

Die Structure "usb_driver" hat beim 2.6er keinen ".owner" mehr, die Zeile mit dem ".owner = THIS_MODULE" gehört daher entfernt. Dieses wird von dem Patch erledigt, der von @cosmac gefunden wurde.

beim 2.6.16er war devfs zwar schon deaktiviert, aber noch in den Sourcen vorhanden. Entweder hat der besagte User das "devfs" wieder aktiviert ( unwahrscheinlich ) , oder es müssten diese dummy-Funktionen aufgerufen worden sein.

Code: Alles auswählen

static inline int devfs_mk_cdev(dev_t dev, umode_t mode, const char *fmt, ...)
{
        return 0;
}
static inline void devfs_remove(const char *fmt, ...)
{
}
wenn du diese Funktionen vor der Definition von " emx_user_register" einfügst ( in emx_user.c Zeile 286 ) müßte sich diese Objectdatei (emx_user.o) erzeugen lassen


Gruß
gms

Antworten