由于公司产品之前用的wifi芯片太贵,成本太高,最近选购了海华的wifi芯片,厂家提供了驱动源码以及固件、nvram等等资源。师父将本次wifi驱动移植任务交给我,本文简单记录下wifi驱动移植的过程。

1、驱动源码以及固件下载

编译android wifi驱动 安卓固件wifi驱动替换_固件


第一个txt为wifi模组,第二个是运行wifi芯片内程序所需要的固件,第三个可能是测试用的吧,不太清楚。。第四个是驱动源码。

2、配置文件

2.1、将驱动源码放入内核驱动中

解压驱动源码,本次命名为cywdhd,将cywdhd文件放入/driver/net/wireless目录下。

2.2、修改配置文件

修改wireless目录下的Kconfig,添加下面一行:

source "drivers/net/wireless/cywdhd/Kconfig"

修改wireless目录下面的Makefile,添加下面一行:

obj-$(CONFIG_CYWDHD)    +=cywdhd/

在driver目录的上一级目录,执行make menuconfig,出现图形化配置界面

依次选择Device Driver -> Network device support -> Wireless LAN -> Cypress FullMAC wireless cards support,按下空格选择为M,代表编译为模块,编译完成后会后ko文件产生。

编译android wifi驱动 安卓固件wifi驱动替换_编译android wifi驱动_02

图中Cypress FullMAC wireless cards support,是cywdhd下面内的Kconfig文件中的内容。
图中bin文件和txt文件就是上面网盘中的,我只是改了个名字。

2.3、指定固件以及nvram的路径

开始我是在config文件内配置固件(固件就是上面那个bin文件)的路径,但是编译出来的包不好使。最后是在驱动源码下面的dhd_linux.c中将固件的路径写死了,编译出来功能完成。
其中固件路径有好几个:firmware_path、fw_bak_path、还有个结构体里面有fw_path,看着好像都是固件的路径,我就都给写死了。

3、将ko拿到开发板

insmod ***.ko即可加载wifi驱动,可以使用ifconfig命令看看有没有wlan0出现。

4、附加

本次是在全志r329中加的wifi驱动,相关的配置文件可查看目录/329 下面的README.md,里面会有一些内核配置文件的路径、设备树的路径、等等。