Erstellen von Wireless-Treibern für Edimax Wireless USB: EW-7811UN


33

Ich habe tagelang versucht, das Modul für mein drahtloses USB-Gerät zu bauen.

Es ist ein Edimax EW-7811UN

Ich habe mehrere Ressourcen zum Erstellen von Modulen für Debian gefunden, aber keine für Arch. Gegenwärtig versuche ich mit dem ToolChain des Raspberry Pi GitHub zu kompilieren . Dies sind die Schritte, die ich unternommen habe:


ifeq ($(CONFIG_PLATFORM_PI), y)
  EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
  ARCH := arm
  CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
  KVER  := 3.1.9-30-ARCH+
  KSRC := /pi-sources/lib/modules/3.1.9-30-ARCH+/build 
  MODDESTDIR := /pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
  INSTALL_PREFIX :=
endif
  • KSRC ist das Verzeichnis, das die Kernelquellen enthält.
  • MODDESTDIR ist das Verzeichnis, in das das Modul gelangen soll.
  • CROSS_COMPILEist meine Toolchain (die hinzugefügt wurde PATH)

Erster Versuch makegibt diesen Fehler:

fatal error: linux/smp_lock.h: No such file or directory

Ich fand, dass dies ein veralteter Header ist, und das Verknüpfen mit diesem smp.hsollte das Problem beheben. Der Build schlägt jedoch immer noch mit folgenden Quellfehlern fehl:

error: field 'recv_tasklet' has incomplete type

Ich habe genug kompiliert, um zu wissen, dass dies so aussieht, als ob der Build die neueste Kernel-Version nicht unterstützt, aber wenn dies so ist, wie wurde es dann für Debian erstellt?


Zusatzinformation:

  • Die volle Leistung hier .

Ich habe den gleichen Adapter, habe ihn aber noch nicht ausprobiert!
Shane Hudson

Bitte lassen Sie mich wissen, wie Sie damit umgehen, und fügen Sie anschließend Ihre Erfahrungen hinzu, auch wenn diese negativ sind.
Jivings

@Tomas, mehr Kopfgeld!
Stellen

Antworten:


12

Anleitung zum Cross-Compilieren

  1. Die Treiberquellen wurden von der Edimax-Website heruntergeladen .

  2. Klonen Sie die Kernelquellen von GitHub .

  3. cdin deine Kernelquelle und cdin include/linux. Lauf

    ln -s smp.h smp_lock.h`.
    
  4. unzipden Edimax-Download und tar -xzfdas Treiberpaket. cdin das driver/rtl...Unterverzeichnis.

  5. Bearbeiten include/rtw_xmit.hund #include <linux/interrupt.h>unter den anderen Includes hinzufügen .

  6. Bearbeiten os_dep/osdep_service.cund hinzufügen

    #include <linux/semaphore.h>
    #define init_MUTEX(sem)         sema_init(sem, 1)
    

    unter den anderen beinhaltet.

  7. Bearbeiten Sie das MakefileHinzufügen

    ifeq ($(CONFIG_PLATFORM_PI), y)
    EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
    ARCH := arm
    CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
    KVER  := 3.1.9-30-ARCH+
    KSRC := ~/pi-sources
    MODDESTDIR := ~/pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
    INSTALL_PREFIX :=
    endif
    

unter ähnlichen Abschnitten.

  1. Vorausgesetzt, es arm-bcm2708-linux-gnueabi-{gcc|ld}liegt auf Ihrem Weg, rennen Sie make CONFIG_PLATFORM_PI=y modules.

Das Modul sollte jetzt kompiliert sein.


Build ist erfolgreich! Aber wohin wird das Modul gebaut? Also kann ich es auf den Pi kopieren.
Jivings

Die Wurzel des Treiberpakets finde ich.
Alex Chamberlain

1
Hm, scheint da zu sein. Seltsam. Worum geht es MODDESTDIRdann?
Jivings

Keine Ahnung!!!!!!!!!
Alex Chamberlain

Damit dies auf dem Raspberry Pi aufbaut, musste ich auch das /lib/modules/3.1.9-30-ARCH+/buildVerzeichnis mit den Kernel-Quellen verknüpfen .
Jivings

-1

Versuchen Sie, die Datei config.gz von /proc/config.gz auf Ihr RPi zu kopieren. Dann gunzip es und benenne es in .config um und mach es wie oben.


3
Können Sie angeben, warum dies in Ihrer Antwort nützlich ist?
Jivings
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.