WIFI驅動的移植 realtek 8188


一般我們拿到的android源代碼中wifi應用層部分是好的, 主要是wifi芯片的驅動要移植並添加進去.


wifi驅動的移植, 以realtek的8188etv為例
到官網下載相應的驅動, 解壓后可以看到其中有很多的文檔, 應用工具和不同android版本的驅動源代碼.


根據自己的android版本選擇對應的驅動, 我的是4.0的用的是android_reference_codes_ICS_nl80211目錄下的驅動
這個目錄下還有一個文檔, 跟移植相關的, 一定要好好看啦, 很重要的
進入驅動源代碼的根目錄, 打開Makefile文件, 修改並添加一下代碼
  1. CONFIG_PLATFORM_I386_PC = n #修改的  
  2. CONFIG_PLATFORM_ARM_S5PV210 = y #添加的  
復制代碼
  1. ifeq ($(CONFIG_PLATFORM_ARM_S5PV210), y)  
  2. EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE  
  3. EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 #這個很重要的, 不添加的話android下的wpa_supplicant_8不能與驅動正常溝通啦, 也可以在autoconf_rtl8188e_usb_linux.h中修改, 我的是usb接口的wifi模塊, sdio接口的是autoconf_rtl8189e_sdio_linux.h  
  4. ARCH ?= arm  
  5. CROSS_COMPILE ?= /opt/s210x/arm-2009q3/bin/arm-none-linux-gnueabi- #交叉編譯工具  
  6. KVER:= 3.0.8 #內核版本  
  7. KSRC ?= /opt/x210_ics_rtm_v12/kernel/ #內核根目錄  
  8. MODULE_NAME := wlan #模塊名  
  9. endif  
復制代碼
現在就可以make啦


wifi應用層的移植, xxx為你的硬件平台

將make得到的wlan.ko靠到android源代碼根目錄下的vendor/xxx/lib/modules 目錄下.

看看android源代碼根目錄下的device/samsung/xxx目錄和其子目錄下有沒有wlan.ko, 有的話就刪除它, 並在相應的device.mk文件中刪除相應的語句. (其實把移植的wlan.ko放在這里也行的啦)

下面的移植只關心c/c++代碼和配置文件部分, 和java相關的不改

external目錄下的wpa_supplicant_8是與驅動溝通的工具, android就是通過它來與wifi通信的, 我們只移植與wifi驅動包中不同的文件到這個目錄下,

可以使用Meld(linux下的gui化文件比較工具)比較兩個目錄. hardware 和 system目錄的移植方法也一樣.

device/samsung/xxx目錄是平台相關的目錄, 這里主要修改BoardConfig.mk device.mk 和 init.xxx.rc(根據device中的PRODUCT_COPY_FILES 確定) 三個配置文件

在device.mk中的PRODUCT_COPY_FILES條目中添加一下代碼

frameworks/base/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \

frameworks/base/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml 

PRODUCT_PROPERTY_OVERRIDES := \
wifi.interface=wlan0 


在BoardConfig.mk中添加一下代碼

  1. #Add for wifi  
  2. BOARD_WIFI_VENDOR := realtek  
  3. ifeq ($(BOARD_WIFI_VENDOR), ti)  
  4.     WPA_SUPPLICANT_VERSION := VER_0_8_X  
  5.     #BOARD_WPA_SUPPLICANT_DRIVER := WEXT #  
  6.     BOARD_WPA_SUPPLICANT_DRIVER := NL80211 #wifi驅動使用的是NL80211, 這里當然就是NL80211而不是WEXT  
  7.     BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl  
  8.     BOARD_HOSTAPD_DRIVER        := NL80211 <span style="font-family: Arial, Helvetica, sans-serif;">#wifi驅動使用的是NL80211, 這里當然就是NL80211而不是WEXT</span>  
  9.   
  10.     BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_rtl  
  11.   
  12.     BOARD_WLAN_DEVICE := rtl8192cu  
  13.     #BOARD_WLAN_DEVICE := rtl8192du  
  14.     #BOARD_WLAN_DEVICE := rtl8192ce  
  15.     #BOARD_WLAN_DEVICE := rtl8192de  
  16.     #BOARD_WLAN_DEVICE := rtl8723as  
  17.     #BOARD_WLAN_DEVICE := rtl8723au  
  18.     #BOARD_WLAN_DEVICE := rtl8188es  
  19.   
  20.     WIFI_DRIVER_MODULE_NAME   := wlan  
  21.     WIFI_DRIVER_MODULE_PATH   := "/system/lib/modules/wlan.ko"  
  22.   
  23.     WIFI_DRIVER_MODULE_ARG    := ""  
  24.     WIFI_FIRMWARE_LOADER      := ""  
  25.     WIFI_DRIVER_FW_PATH_STA   := ""  
  26.     WIFI_DRIVER_FW_PATH_AP    := ""  
  27.     WIFI_DRIVER_FW_PATH_P2P   := ""  
  28.     WIFI_DRIVER_FW_PATH_PARAM := ""  
  29. endif
復制代碼
在init.xxx.rc中添加一下代碼
  1. on post-fs-data  
  2.     # we will remap this as /mnt/sdcard with the sdcard fuse tool  
  3.     mkdir /data/media 0775 media_rw media_rw  
  4.     chown media_rw media_rw /data/media  
  5.     setprop vold.post_fs_data_done 1  
  6.     mkdir /data/misc/dhcp 0770 dhcp dhcp  
  7.     chown dhcp dhcp /data/misc/dhcp  
  8.     mkdir /data/misc/wifi/sockets 0770 wifi wifi  
  9.   
  10. service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf #wifi驅動中是nl80211,這里也一樣是nl80211  
  11.     socket wpa_wlan0 dgram 660 wifi wifi # android private socket   
  12.     group wifi inet   
  13.     disabled   
  14.     oneshot   
  15.   
  16. service dhcpcd_wlan0 /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan0  
  17.     group system dhcp  
  18.     disabled  
  19.     oneshot     
  20.       
  21. service dhcpcd /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan0  
  22.     group system dhcp  
  23.     disabled  
  24.     oneshot  
復制代碼


免責聲明!

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



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