Android wifi驱动的移植


一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去.
wifi驱动的移植, 以realtek的8188etv为例 到官网下载相应的驱动, 解压后可以看到其中有很多的文档, 应用工具和不同android版本的驱动源代码.
根据自己的android版本选择对应的驱动, 我的是4.0的用的是android_reference_codes_ICS_nl80211目录下的驱动 这个目录下还有一个文档, 跟移植相关的, 一定要好好看啦, 很重要的 进入驱动源代码的根目录, 打开Makefile文件, 修改并添加一下代码
CONFIG_PLATFORM_I386_PC = n #修改的CONFIG_PLATFORM_ARM_S5PV210 = y #添加的


ifeq ($(CONFIG_PLATFORM_ARM_S5PV210), y)EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGEEXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 #这个很重要的, 不添加的话android下的wpa_supplicant_8不能与驱动正常沟通啦, 也可以在autoconf_rtl8188e_usb_linux.h中修改, 我的是usb接口的wifi模块, sdio接口的是autoconf_rtl8189e_sdio_linux.hARCH ?= armCROSS_COMPILE ?= /opt/s210x/arm-2009q3/bin/arm-none-linux-gnueabi- #交叉编译工具KVER:= 3.0.8 #内核版本KSRC ?= /opt/x210_ics_rtm_v12/kernel/ #内核根目录MODULE_NAME := wlan #模块名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.mkdevice.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中添加一下代码

#Add for wifiBOARD_WIFI_VENDOR := realtekifeq ($(BOARD_WIFI_VENDOR), ti)    WPA_SUPPLICANT_VERSION := VER_0_8_X    #BOARD_WPA_SUPPLICANT_DRIVER := WEXT #    BOARD_WPA_SUPPLICANT_DRIVER := NL80211 #wifi驱动使用的是NL80211, 这里当然就是NL80211而不是WEXT    BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl    BOARD_HOSTAPD_DRIVER        := NL80211 <span style="font-family: Arial, Helvetica, sans-serif;">#wifi驱动使用的是NL80211, 这里当然就是NL80211而不是WEXT</span>    BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_rtl    BOARD_WLAN_DEVICE := rtl8192cu    #BOARD_WLAN_DEVICE := rtl8192du    #BOARD_WLAN_DEVICE := rtl8192ce    #BOARD_WLAN_DEVICE := rtl8192de    #BOARD_WLAN_DEVICE := rtl8723as    #BOARD_WLAN_DEVICE := rtl8723au    #BOARD_WLAN_DEVICE := rtl8188es    WIFI_DRIVER_MODULE_NAME   := wlan    WIFI_DRIVER_MODULE_PATH   := "/system/lib/modules/wlan.ko"    WIFI_DRIVER_MODULE_ARG    := ""    WIFI_FIRMWARE_LOADER      := ""    WIFI_DRIVER_FW_PATH_STA   := ""    WIFI_DRIVER_FW_PATH_AP    := ""    WIFI_DRIVER_FW_PATH_P2P   := ""    WIFI_DRIVER_FW_PATH_PARAM := ""endif

在init.xxx.rc中添加一下代码

on post-fs-data    # we will remap this as /mnt/sdcard with the sdcard fuse tool    mkdir /data/media 0775 media_rw media_rw    chown media_rw media_rw /data/media    setprop vold.post_fs_data_done 1    mkdir /data/misc/dhcp 0770 dhcp dhcp    chown dhcp dhcp /data/misc/dhcp    mkdir /data/misc/wifi/sockets 0770 wifi wifiservice wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf #wifi驱动中是nl80211,这里也一样是nl80211    socket wpa_wlan0 dgram 660 wifi wifi # android private socket     group wifi inet     disabled     oneshot service dhcpcd_wlan0 /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan0    group system dhcp    disabled    oneshot       service dhcpcd /system/bin/dhcpcd -d -f /system/etc/dhcpcd/dhcpcd.conf wlan0    group system dhcp    disabled    oneshot


到这里就移植结束啦

可一make源代码并烧写看看结果吧


关于wireless_tools的移植

很简单的, 将wireless_tools.xx.gz解压到android源代码的external目录中

然后 终端下 build/envsetup.sh && makeiwconfig iwlist iwpriv #就好啦






更多相关文章

  1. 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速
  2. Android应用程序框架层和系统运行库层日志系统源代码分析
  3. ORB_SLAM2移植到Android,完整配置+填各种自己遇到的坑
  4. 网页源代码查看器
  5. android source code下载源代码时出错
  6. 火爆新东西,仿QQ版本的ResideMenuItem框架(最新QQ版本的)
  7. cocos2d-x 移植安卓错误解决
  8. Android(安卓)Google应用移植时包依赖关系
  9. 在Eclipse 中关联android sdk 源代码

随机推荐

  1. Android(安卓)官方文档:(二)应用清单 —— 2
  2. Android(安卓)Studio使用总结
  3. Android(安卓)uses-permission大全
  4. android 制作输入法
  5. Android(安卓)ProgressDialog的使用
  6. Android事件分发机制——ViewGroup(二)
  7. android targetSdkVersion 改成28以后出
  8. Android高手进阶教程(十)之----Android(
  9. Android手电筒案例
  10. Android保存图片到本地或者数据库,并通知