为Edimax无线USB构建无线驱动程序:EW-7811UN


33

数天来我一直在尝试为我的USB无线设备构建模块。

它是一台Edimax EW-7811UN

我已经找到了一些关于为Debian构建模块的资源,但是没有关于Arch的资源。目前,我正在尝试使用Raspberry Pi GitHub上的ToolChain进行交叉编译。这些是我已采取的步骤:

  • Edimax网站下载了驱动程序源。
  • 从GitHub下载了内核资源。
  • 在Edimax MakeFile中创建了一个特定的制作规则(根据Edimax文档):

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 是包含内核源代码的目录。
  • MODDESTDIR 是您希望模块结束的目录。
  • CROSS_COMPILE是我的工具链(已添加到中PATH

第一次尝试make会出现此错误:

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

我发现这是一个过时的标头,对其进行符号链接可以smp.h解决该问题。但是,构建仍然失败,并显示源错误,如下所示:

error: field 'recv_tasklet' has incomplete type

我已经进行了足够的编译,以了解该构建似乎不支持最新的内核版本,但是如果是这样,那么如何为Debian构建它呢?


额外的信息:


我有相同的适配器,尽管还没有尝试一下!
Shane Hudson

请让我知道您如何处理它,并在以后添加您的经验,即使它是负面的。
Jivings 2012年

@Tomas,更多赏金!确保Alex这次没有得到它:)
Jivings 2012年

Answers:


12

交叉编译说明

  1. Edimax网站下载了驱动程序源。

  2. 从GitHub克隆内核源代码。

  3. cd进入您的内核源代码并cd进入include/linux。跑

    ln -s smp.h smp_lock.h`.
    
  4. unzipEdimax下载和tar -xzf驱动程序包。cd进入driver/rtl...子目录。

  5. 编辑include/rtw_xmit.h并添加#include <linux/interrupt.h>其他包含项。

  6. 编辑os_dep/osdep_service.c并添加

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

    根据其他包括。

  7. 编辑Makefile添加

    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
    

在类似的章节下。

  1. 假设arm-bcm2708-linux-gnueabi-{gcc|ld}您已经走了,请运行make CONFIG_PLATFORM_PI=y modules

现在应该编译该模块。


构建成功!但是模块在哪里构建?所以我可以将其复制到Pi上。
吉文斯

我认为驱动程序包的根目录。
亚历克斯·张伯伦

1
嗯,似乎在那里。奇怪的。那有什么意义MODDESTDIR呢?
吉文斯

不知道!!!!!!!!!
亚历克斯·张伯伦

为了在Raspberry Pi上构建它,我还不得不将该/lib/modules/3.1.9-30-ARCH+/build目录符号链接到内核​​源代码。
吉文斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.