您的位置:首页 > 移动开发 > Android开发

Android4.4.2下 RTL8732BU 驱动移植

2017-07-13 14:43 162 查看

Android4.4.2下 RTL8732BU 驱动移植

由于在Android4.4.2版本系统下移植RTL8723BU驱动,花了不少时间,走了不少弯路,所以特意写个博客记下移植过程和遇到的问题:

平台:sabresd_6dq,android4.4.2, linux3.0.35

参考:https://community.nxp.com/thread/322825

然后主要的驱动移植修改移植后的文件:

http://download.csdn.net/download/hao1xiao1zi2/9897607

http://download.csdn.net/download/hao1xiao1zi2/9897612

主要需要修改的文件(可以参考RTL8723BU压缩包中的的移植文档):

device/fsl/sabresd_6dq/BoardConfig.mk(加入驱动声明)

device/fsl/imx6/sabresd_6dq.mk(一些权限文件添加与移除)

device/fsl/sabresd_6dq/required_hardware.xml(同上)

修改init.rc或者init.freescale.rc文件

这里要**注意**init.rc与init.freescale.rc文件的区别。

首先是device/fsl/imx6/etc/init.rc这个文件修改的结果就是修改了输出文件out/target/product/sabresd_6dq/root/init.rc

修改device/fsl/sabresd_6dq/init.rc就是修改out/target/product/sabresd_6dq/root/init.freescale.rc

还有修改wpa_supplicant适配层,即wifi_realtek.c文件

开始移植:

首先是Linux驱动的移植,我这里没有采用编译进内核方式,采用编译模块方式,.ko模块

其实可以直接按照RTL8723BU提供的文档Quick_Start_Guide_for_Driver_Compilation_and_Installation.pdf

直接移植。

主要需要注意的问题就是

先要编译kernel_imx内核产生cfg80211.ko和mac80211.ko,然后再单独编译rtl8723bu驱动模块,因为rtl8723bu驱动需要依赖于cfg80211,否则即使驱动编译成功,不注意顺序的话,加载rtl8723bu驱动的时候会报出与cfg80211有关的错误。

我修改rtl8723bu驱动生成的模块名为wlan0.ko,

然后把生成的三个驱动cfg80211.ko,mac80211.ko以及wlan0.ko放到out/target/product/sabresd_6dq/system/lib/modules/文件下。

为了开机自动加载模块,所以我在开机自运行脚本上分别自动加载cfg80211.ko,mac80211.ko和wlan0.ko

注意,这里我遇到一个问题就是在后续加载启动后,终端上使用netcfg wlan0 up提示出错。有可能是权限问题,我没有弄明白,反正能用就可以。

加载使用device/fsl/imx6/etc/init.rc加载cfg80211.ko,mac80211.ko

使用device/fsl/sabresd_6dq/init.rc加载wlan0.ko

有关wpa_supplicant与setting相关的移植

参考RTL8723BU压缩包中关于android4.4的移植文档说明。

修改的地方有在device/fsl/imx6/etc/init.rc中添加,主要就是添加权限和相关文件处理

mkdir /system/etc/wifi 0777 wifi wifi

chmod 0777 /system/etc/wifi

chmod 0777 /system/etc/wifi/wpa_supplicant.conf

chown wifi wifi /system/etc/wifi/

chown wifi wifi /system/etc/wifi/wpa_supplicant.conf

#wpa_supplicant control socket for android wifi.c(android private socket)

mkdir /data/misc/wifi 0777 wifi wifi

mkdir /data/misc/wifi/sockets 0777 wifi wifi

chmod 0777 /data/misc/wifi

chown wifi wifi /data/misc/wifi

chmod 0777 /data/misc/wifi/sockets

chown wifi wifi /data/misc/wifi/sockets

chmod 0777 /data/misc/wifi/wpa_supplicant.conf

chown wifi wifi /data/misc/wifi/wpa_supplicant.conf

setprop wifi.interface wlan0

setprop wlan.driver.status “ok”

这里不再创建/data/system/wpa_supplicant文件夹,好像有一些版本的驱动需要创建,具体参考wifi_realtek.c或者wifi.c文件

#and also remove this lines

#mkdir /data/system/wpa_supplicant 0777 wifi wifi

#chmod 0777 /data/system/wpa_supplicant

#chown wifi wifi /data/system/wpa_supplicant

#symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant

在device/fsl/sabresd_6dq/init.rc中添加rtw_suppl服务,注意这个文字应该和wifi.c或者wifi_realtek.c文件中的对应文字一样,否则不起作用

service rtw_suppl /system/bin/wpa_supplicant \

-Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -B \

-O/data/misc/wifi/sockets \

-e/data/misc/wifi/entropy.bin \

-g@android:wpa_wlan0

class main

socket wpa_wlan0 dgram 660 wifi wifi

disabled

oneshot

这里的-g参数和socket wpa_wlan0的创建很重要,否则不可以与wpa_supplicant成功通信。

因为一知不解,都不知道自己怎么弄好的,是个android新手,所以实在是浪费了不少时间,弄好驱动后,也是不知道原理。本来也就不是从事这一块,所以弄好wifi就不想深究原因。还是赶快去干点别的正事。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 移植