飞凌OK6410开发板SDIO无线8189WIFI模块驱动移植

为什么要移植?开发板不是已经提供了无线驱动吗?

貌似是这样的。。本来是好用的。加入自己第三方驱动后发现WIFI用不了。。。最后发现飞凌提供的内核里面没有8189芯片的代码。。。问售后他们说那边是好的。这么到我这里就不行了呢?妈蛋。。。郁闷了。。。智能自己动手,把驱动移植进去。。。

1  找8189es芯片的原厂驱动代码:这里我找了N久,传到网盘里。。。

http://pan.baidu.com/s/1bn7Gz6n

2 解压拷贝

tar jxvf rtl8288EUS_rtl8189ES_linux_v4.1.8_9499.20131104.tar.tgz

修改文件夹名字:8189ES

拷贝:cp  -rf 8189ES   /opt/linux-3.0.1/driver/net/wireless/

3 修改配置,打包进内核。

  代码默认是USB接口的。。。必须改成SDIO

  修改文件:8189ES/Makefile

CONFIG_USB_HCI = n

CONFIG_SDIO_HCI = y

CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_S3C6K4 = y

ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-none-linux-gnueabi-
KVER  := 3.0.1
KSRC ?= /opt/linux-3.0.1
endif

修改8189ES/Kconfig ,为了能打包进kernel

config SDIO_HCI
        tristate "sdio hci default y"
        depends on USB
        ---help---
          Help message of sdio hci

在/opt/linux-3.0.1/driver/net/wireless/Kconfig插入代码

source "drivers/net/wireless/8189ES/Kconfig"

在/opt/linux-3.0.1/driver/net/wireless/Makefile插入代码

obj-$(CONFIG_SDIO_HCI)        += 8189ES/

4 修改驱动部分代码:

4.修改内核驱动文件,./drivers/net/wireless/rtl8189es/include/autoconf.h        
4.1)去掉usb相关配置        
把        
#define CONFIG_USB_HCI        
改成:        
//#define CONFIG_USB_HCI          
4.2)去掉usb发送接收相关配置        
把        
#ifndef CONFIG_MINIMAL_MEMORY_USAGE        
    #define CONFIG_USB_TX_AGGREGATION    
    #define CONFIG_USB_RX_AGGREGATION    
#endif        
改成:        
/*#ifndef CONFIG_MINIMAL_MEMORY_USAGE        
    #define CONFIG_USB_TX_AGGREGATION    
    #define CONFIG_USB_RX_AGGREGATION    
#endif*/        
4.3)去掉wifi关断检测相关配置        
把        
#define SUPPORT_HW_RFOFF_DETECTED        
改成:        
//    #define SUPPORT_HW_RFOFF_DETECTED    
5.修改内核驱动文件,添加头文件包含:
5.1)修改./drivers/net/wireless/rtl8189es/hal/rtl8188e/sdio/rtl8189es_xmit.c文件,添加:
#include <rtw_xmit.h> 
5.2)修改,./drivers/net/wireless/rtl8189es/include/rtw_xmit.h文件,添加:
#include <autoconf.h>
6.修改内核驱动文件,添加数组定义./drivers/net/wireless/rtl8189es/os_dep/linux/sdio_intf.c文件
添加:
int ui_pid[3] = {0, 0, 0};

 6 cp 8189ES/autoconf_rtl8189e_sdio_linux.h    /opt/linux-3.0.1

  7编译后wifi正常工作。。。

但只要操作IO口,WIFI启动就会失败。。

最后看原理图发现SDIO与GPIO都用了GPP10,GP11

把 这2口去了。。完事大吉

  

原文地址:https://www.cnblogs.com/sankye/p/4912234.html