飛凌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口去了。。完事大吉

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM