linux下wifi移植,首先要保证硬件gpio相关配置正确,第二步是才是软件相关的配置
一、硬件篇
硬件模块选的是正基ap6745的三合一模块(wifi、bt、fm),wifi通讯用sdio模式传输数据,sdio_vsl决定sdio工作电压是1.8v还是3.3v,同时配置两个gpio,wl_reg控制wifi上电,wl_host_wake给cpu一个中断信号,即wifi以中断方式给cpu传递数据,如果没有配置也可以用poll轮询方式工作。还有xtal的时钟需要,这个时钟可以是cpu输出提供,也可以通过外部晶振自动产生。SDIO就是标准的sdio总线。
硬件分析完就需要在dts中配置了
sdio硬件采用sd1,所以需要配置sd1总线
cd-gpio 管脚是sd的cd检测pin,如果没有配置会导致sd卡驱动加载失败。
在config文件中配置宏开关以及固件的路径,至于固件安置在yocto上跟其他平台不一致,后面会单独说明。
做完这些配置,并将bcmdhd驱动文件放置到/driver/net/wireless/目录,并配置好Makefile以及Kconfig文件,同时在驱动文件中药做一下gpio的适配工作,包括上电以及中断脚的配置。
如果编译没有报错,驱动正常加载,可以系统起来之后进入/sys/class/bus/mmc/节点下看是否有mmc0设备(mmc0是我们对应的sdio1驱动对应模块)。一切正常就可以验证wifi功能了。
第二步、wifi软件配置
执行ifup wlan0 //wlan0使我们对应的wifi设备名称
这时从串口的log中会看到wifi上电信息以及固件加载的信息:
如果信息中没有报错,可以在执行ifconfig 查看当前的设备信息:
这时看到wlan0没有ip地址分配,可以手动配置ifconfig wlan0 192.168.1.100,根据当前局域网环境配置一个ip地址即可,或是启动自动分配地址命令,需要将设备联网,用wpa的模式。
执行之前需要配置wpa_supplicant.conf 文件,文件一般路径在/etc/目录
可以连接成有秘钥或是无秘钥方式,秘钥模式也有几种秘钥明文模式。
#wpa_supplicant -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf -d&
执行完上述命令就可以并看到相关信息之后,就可以执行ping通命令以及dhcp自动分配ip地址
dhcpc -i wlan0
执行自动分配ip之后查看ifconfig,可以看到当前以及分配到192.168.0.104地址,再执行ping 192.168.0.8或是ping www.baidu.com 看看网络通信是否正常。
wifi配置基本就是这些,其他的后期再补充。
参考链接:https://blog.csdn.net/sy373466062/article/details/50374683