Estou há dias tentando e montando o módulo para o meu dispositivo sem fio USB.
É um Edimax EW-7811UN
Eu encontrei vários recursos na construção de módulos para o Debian, mas nenhum para o Arch. Atualmente, estou tentando fazer uma compilação cruzada usando o ToolChain encontrado no Raspberry Pi GitHub . Estas são as etapas que eu tomei:
- Baixou as fontes de driver no site da Edimax .
- Baixou as fontes do kernel do GitHub .
- Criou uma regra de make específica (conforme a documentação do Edimax) no MakeFile do 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
é o diretório que contém as fontes do kernel.MODDESTDIR
é o diretório que você deseja que o módulo termine.CROSS_COMPILE
é minha cadeia de ferramentas (que foi adicionada aPATH
)
A primeira tentativa de make
fornecer esse erro:
fatal error: linux/smp_lock.h: No such file or directory
Descobri que este é um cabeçalho desatualizado e o link simbólico para ele smp.h
deve corrigir o problema. No entanto, a construção ainda falha com erros de origem, que se parecem com isso:
error: field 'recv_tasklet' has incomplete type
Eu fiz a compilação suficiente para saber que isso parece que a compilação não suporta a versão mais recente do kernel, mas se é assim, então como foi criada para o Debian?
Informação extra:
- A saída completa aqui .
Respostas:
Instruções para compilação cruzada
Baixou as fontes de driver no site da Edimax .
Clone as fontes do kernel do GitHub .
cd
em sua fonte de kernel ecd
eminclude/linux
. Correunzip
o download do Edimax etar -xzf
o pacote do driver.cd
nodriver/rtl...
subdiretório.Edite
include/rtw_xmit.h
e adicione#include <linux/interrupt.h>
sob as outras inclusões.Edite
os_dep/osdep_service.c
e adicionesob o outro inclui.
Edite a
Makefile
adiçãoem seções semelhantes.
arm-bcm2708-linux-gnueabi-{gcc|ld}
está no seu caminho, corramake CONFIG_PLATFORM_PI=y modules
.O módulo agora deve ser compilado.
fonte
MODDESTDIR
então?/lib/modules/3.1.9-30-ARCH+/build
diretório às fontes do kernel.Tente copiar o config.gz de /proc/config.gz no seu RPi. Em seguida, descompacte e renomeie para .config e faça como acima.
fonte