修改config文件成如下这样:
CONFIG_RTL8711 = n
CONFIG_RTL8712 = y
CONFIG_USB_HCI = y
CONFIG_SDIO_HCI = n
CONFIG_MP_INCLUDED = y
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C = y
CONFIG_PLATFORM_ARM_PXA = n
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTK_DMP = n
CONFIG_PLATFORM_MIPS_PLM = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MSTAR389 = n
CONFIG_MLME_EXT = n
CONFIG_DRVEXT_MODULE = n
修改Makefile文件如下几个地方:
CONFIG_RTL8711 = n
CONFIG_RTL8712 = y
CONFIG_USB_HCI = y
CONFIG_SDIO_HCI = n
CONFIG_MP_INCLUDED = y
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C = y
CONFIG_PLATFORM_ARM_PXA = n
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTK_DMP = n
CONFIG_PLATFORM_MIPS_PLM = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MSTAR389 = n
CONFIG_PLATFORM_ARM_TCC8900 = n
CONFIG_MLME_EXT = n
CONFIG_DRVEXT_MODULE = n
ifeq ($(CONFIG_PLATFORM_ARM_S3C), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /opt/marvelltools/cross/bin/arm-mv5sft-linux-gnueabi-
KVER := 2.6.24.7_$(ARCH)
KSRC := /opt/marvell/linux-feroceon_5_1_3_KW_build
endif
编译过程中遇到的一些问题:
make[1]: Entering directory `/opt/marvell/linux-feroceon_5_1_3_KW_build'
CC [M] /opt/rtl8191su/cmd/rtl871x_cmd.o
In file included from drivers/net/wireless/rtl8191/include/drv_types.h:75,
from /opt/rtl8191su/cmd/rtl871x_cmd.c:24:
drivers/net/wireless/rtl8191/include/rtl871x_security.h:47:1: warning: "CONFIG_LITTLE_ENDIAN" redefined
<command-line>: warning: this is the location of the previous definition
/opt/rtl8191su/cmd/rtl871x_cmd.c: In function 'set_chplan_cmd':
/opt/rtl8191su/cmd/rtl871x_cmd.c:609: error: implicit declaration of function 'rtw_is_channel_plan_valid'
/opt/rtl8191su/cmd/rtl871x_cmd.c:620: error: invalid application of 'sizeof' to incomplete type 'struct SetChannelPlan_param'
/opt/rtl8191su/cmd/rtl871x_cmd.c:627: error: '_SetChannelPlan_CMD_' undeclared (first use in this function)
/opt/rtl8191su/cmd/rtl871x_cmd.c:627: error: (Each undeclared identifier is reported only once
/opt/rtl8191su/cmd/rtl871x_cmd.c:627: error: for each function it appears in.)
/opt/rtl8191su/cmd/rtl871x_cmd.c:627: error: dereferencing pointer to incomplete type
/opt/rtl8191su/cmd/rtl871x_cmd.c:632: error: dereferencing pointer to incomplete type
/opt/rtl8191su/cmd/rtl871x_cmd.c: In function 'disconnectCtrlEx_cmd':
/opt/rtl8191su/cmd/rtl871x_cmd.c:2039: error: invalid application of 'sizeof' to incomplete type 'struct DisconnectCtrlEx_param'
/opt/rtl8191su/cmd/rtl871x_cmd.c:2046: error: invalid application of 'sizeof' to incomplete type 'struct DisconnectCtrlEx_param'
/opt/rtl8191su/cmd/rtl871x_cmd.c:2048: error: dereferencing pointer to incomplete type
/opt/rtl8191su/cmd/rtl871x_cmd.c:2049: error: dereferencing pointer to incomplete type
/opt/rtl8191su/cmd/rtl871x_cmd.c:2050: error: dereferencing pointer to incomplete type
/opt/rtl8191su/cmd/rtl871x_cmd.c:2051: error: dereferencing pointer to incomplete type
/opt/rtl8191su/cmd/rtl871x_cmd.c:2053: error: '_DisconnectCtrlEx_CMD_' undeclared (first use in this function)
/opt/rtl8191su/cmd/rtl871x_cmd.c:2053: error: dereferencing pointer to incomplete type
make[2]: *** [/opt/rtl8191su/cmd/rtl871x_cmd.o] Error 1
make[1]: *** [_module_/opt/rtl8191su] Error 2
make[1]: Leaving directory `/opt/marvell/linux-feroceon_5_1_3_KW_build'
make: *** [modules] Error 2
根据上面红色的这句话判断出头文件使用的是位于内核中的drv_types.h头文件,因为在之前我已经移植过一个rtl8191的驱动源代码到内核中去了,所以导致了内核存在这个头文件,而这个头文件是一个老版本的,新版本的8191驱动drv_types.h头文件做了修改,解决办法是先移除内核中老的rtl8191驱动源码。
问题二:
/opt/rtl8191su/os_dep/linux/recv_linux.c: In function 'handle_tkip_mic_err':
/opt/rtl8191su/os_dep/linux/recv_linux.c:149: error: too many arguments to function 'cfg80211_michael_mic_failure'
make[2]: *** [/opt/rtl8191su/os_dep/linux/recv_linux.o] Error 1
make[1]: *** [_module_/opt/rtl8191su] Error 2
make[1]: Leaving directory `/opt/marvell/linux-feroceon_5_1_3_KW_build'
make: *** [modules] Error 2
在最新的内核版本中cfg80211_michael_mic_failure函数的定义是参数变成了六个,老的内核版本是5个参数,新内核在5个参数的后面增加了一个 gfp_t gfp形参(值可以为GFP_ATOMIC等等),解决这个问题的办法是,删除recv_linux.c文件中cfg80211_michael_mic_failure函数所带参数GFP_ATOMIC即可。