由于公司产品之前用的wifi芯片太贵,成本太高,最近选购了海华的wifi芯片,厂家提供了驱动源码以及固件、nvram等等资源。师父将本次wifi驱动移植任务交给我,本文简单记录下wifi驱动移植的过程。
1、驱动源码以及固件下载
第一个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文件产生。
图中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,里面会有一些内核配置文件的路径、设备树的路径、等等。