He estado intentando encender y apagar durante días para construir el módulo para mi dispositivo inalámbrico USB.
Es un Edimax EW-7811UN
He encontrado varios recursos en la construcción de módulos para Debian, pero ninguno para Arch. Actualmente estoy intentando realizar una compilación cruzada utilizando ToolChain que se encuentra en Raspberry Pi GitHub . Estos son los pasos que he tomado:
- Descargado las fuentes del controlador del sitio web de Edimax .
- Descargado las fuentes del núcleo de GitHub .
- Creó una regla de creación específica (según la documentación de Edimax) en el MakeFile de 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
es el directorio que contiene las fuentes del núcleo.MODDESTDIR
es el directorio donde desea que termine el módulo.CROSS_COMPILE
es mi cadena de herramientas (que se ha agregado aPATH
)
El primer intento de make
da este error:
fatal error: linux/smp_lock.h: No such file or directory
Encontré que este es un encabezado desactualizado, y simularlo smp.h
debería solucionar el problema. Sin embargo, la compilación todavía falla con errores de origen, que se ven así:
error: field 'recv_tasklet' has incomplete type
He compilado lo suficiente como para saber que esto parece que la compilación no es compatible con la última versión del kernel, pero si es así, ¿cómo se ha creado para Debian?
Información extra:
- La salida completa aquí .
Respuestas:
Instrucciones para la compilación cruzada
Descargado las fuentes del controlador del sitio web de Edimax .
Clone las fuentes del núcleo de GitHub .
cd
en su fuente de kernel ycd
eninclude/linux
. correrunzip
la descarga de Edimax ytar -xzf
el paquete del controlador.cd
en eldriver/rtl...
subdirectorio.Editar
include/rtw_xmit.h
y agregar#include <linux/interrupt.h>
debajo de los otros incluye.Editar
os_dep/osdep_service.c
y agregarbajo el otro incluye.
Edite la
Makefile
sumabajo secciones similares.
arm-bcm2708-linux-gnueabi-{gcc|ld}
está en tu camino, corremake CONFIG_PLATFORM_PI=y modules
.El módulo ahora debería estar compilado.
fuente
MODDESTDIR
entonces?/lib/modules/3.1.9-30-ARCH+/build
directorio a las fuentes del núcleo.Intente copiar el config.gz de /proc/config.gz en su RPi. Luego, descomprímalo y cámbiele el nombre a .config y realice como se indicó anteriormente.
fuente