Cela fait des jours que j'essaye de construire le module pour mon périphérique USB sans fil.
C'est un Edimax EW-7811UN
J'ai trouvé plusieurs ressources sur la construction de modules pour Debian, mais aucune pour Arch. Actuellement, je tente de compiler de manière croisée à l'aide de la ToolChain disponible sur le Raspberry Pi GitHub . Ce sont les mesures que j'ai prises:
- Téléchargé les sources de pilotes depuis le site Web Edimax .
- Téléchargé les sources du noyau depuis GitHub .
- Création d'une règle de création spécifique (selon la documentation Edimax) dans le fichier 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
est le répertoire contenant les sources du noyau.MODDESTDIR
est le répertoire dans lequel vous souhaitez que le module se termine.CROSS_COMPILE
est mon toolchain (qui a été ajouté àPATH
)
La première tentative make
donne cette erreur:
fatal error: linux/smp_lock.h: No such file or directory
J'ai trouvé qu'il s'agit d'un en-tête obsolète, et le fait de le lier par un lien smp.h
devrait résoudre le problème. Cependant, la construction échoue toujours avec des erreurs de source, qui ressemblent à ceci:
error: field 'recv_tasklet' has incomplete type
J'ai assez compilé pour savoir que la compilation ne prend pas en charge la dernière version du noyau, mais si c'est le cas, comment a-t-elle été construite pour Debian?
Informations supplémentaires:
- La sortie complète ici .
Réponses:
Instructions pour la compilation croisée
Téléchargé les sources de pilotes depuis le site Web Edimax .
Clonez les sources du noyau depuis GitHub .
cd
dans votre source de noyau etcd
dansinclude/linux
. Courirunzip
le téléchargement Edimax ettar -xzf
le package de pilotes.cd
dans ledriver/rtl...
sous - répertoire.modifier
include/rtw_xmit.h
et ajouter#include <linux/interrupt.h>
sous les autres inclus.modifier
os_dep/osdep_service.c
et ajoutersous l'autre comprend.
Modifier l'
Makefile
ajoutsous des sections similaires.
arm-bcm2708-linux-gnueabi-{gcc|ld}
est sur votre chemin, exécutezmake CONFIG_PLATFORM_PI=y modules
.Le module devrait maintenant être compilé.
la source
MODDESTDIR
alors?/lib/modules/3.1.9-30-ARCH+/build
répertoire et les sources du noyau.Essayez de copier le fichier config.gz à partir de /proc/config.gz sur votre RPi. Puis gunzip et renommez-le .config et faites comme ci-dessus.
la source