zoukankan      html  css  js  c++  java
  • 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  
    复制代码
  • 相关阅读:
    4 决策树
    Seaborn中几种作图方式的比较
    centso7设置防火墙
    让普通用户拥有
    TensorFlow 训练只用cpu
    loss训练技巧
    Ubuntu 16.04安装sublime text3
    GPU运行Tensorflow的几点建议
    挂载共享文件夹
    ubuntu 用管理员身份进入系统
  • 原文地址:https://www.cnblogs.com/muhuacat/p/5708555.html
Copyright © 2011-2022 走看看