使用的硬件环境是我们的 Spider 方案 G9X 板子,软件版本是 PTG4.9。
一、确认原理图与驱动
1. NF3205 是一颗 BT 和 WiFi 模块芯片,其中 WiFi 使用 pcie 接口。查看原理图,WL_EN 脚 是 WiFi 的使能脚,高电平有效,数据接口确认到使用的是 pcie1 接口。
2. 把 WL_EN 脚拉高,查看原理图确认到 WL_EN 是由 GPIO_D13 控制的,我们只需要在 SDConfigTool 里面把 GPIOD13 拉高就好。
3. WiFi 的驱动是 Semidrive 的 Kernel 自带的,所以只需要在 dts 把 pcie1 设备设为 okay 即可。
二、WiFi 主模式
1. 接下来使用 WiFi 的 host 功能,我们需要 hostapd 这个工具来打开 WiFi 热点,yocto 里面有这个包,可以直接编译放到板端。
启动 hostapd 前需要我们写好 hostapd 的配置文件,因为 hostapd 起来前会解析这个文件来进行相关的设定,如果使用 yocto 的包,hostapd.conf 是已经默认写好了,直接在命令行输入 # hostapd /etc/hostapd.conf -B,运行结果如下:
2. 然后使用 udhcpd 来为连接的设备分配 ip 地址,在 /etc/udhcpd.conf 中输入如下配置:
start 192.168.175.2
end 192.168.175.254
interface wlan0
max_leases 234
opt router 192.168.175.1
然后先配置 wlan0 的 ip 地址,再在后台运行 udhcpd
# ifconfig wlan0 192.168.175.1
# udhcpd /etc/udhcpd.conf &
这时候就可以在手机上连接 WiFi 了,WiFi 的名字是 test,是一个没有密码的 WiFi,这个名字和密码都可以在 hostapd.conf 中修改。
三、 WiFi 从模式
如果要使用 WiFi 的从模式连接其他热点,那么可以使用 wpa_supplicant 和 wpa_cli 工具,其中 wpa_supplicant 程序作为服务端在后台运行,服务 wpa_cli 客户端的请求,从而实现 WiFi 的配置连接。先运行 wpa_supplicant:
# wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
然后扫描周边热点:
# wpa_cli -i wlan0 scan
查看扫描结果:
# wpa_cli -i wlan0 scan_result
增加一个网络 id :
# wpa_cli -i wlan0 add_network
该命令会返回一个编号,后续会用到:
配置 WiFi 热点的名称 ssid :
# wpa_cli -i wlan0 set_network 1 ssid '"Mi 11"'
这个 1 就是刚才返回的网络编号
配置 WiFi 热点的密码 psk:
# wpa_cli -i wlan0 set_network 1 psk '"12345678"'
选择刚才配置的 net_work 进行连接:
# wpa_cli -i wlan0 select_network 1
使用 udhcpc 获取 ip 地址:
# udhcpc -i wlan0 -q
然后尝试连接外网,ping 一下百度:
看来已经是成功连接到 WiFi 热点了。
至此,Wi-Fi 模块的驱动移植已经完成。
评论