
其中,“调试过程”章节可能有点意思(记录了我踩过的坑),其他章节无关紧要。

对照原理图找到如下 3 个关键点:
PCIe 接口的 WiFi 基本就有两种:贴在板子上模块及M2接口(这里方案正是),但它们关键点是一样的:
VBAT/VCC3V3:总的3.3V电源,一般是长供电;
WIFIREGON:芯片的复位/使能管脚,开机保持高电平;
PCIE PERST L/PERSTO:芯片PCIe部分的复位管脚,DTS对应的PCIE节点下务必配置正确。


将 WiFi 模组厂商提供的驱动源码aic8800_fdrv拷贝至./external/rkwifibt/drivers/目录进行编译。具体步骤如下:
(1)驱动 SDK 源码放置/external/rkwifibt/drivers/目录下;
(2)添加驱动固件至/external/rkwifibt/firmware/aic8800 目录下。
(3)修改device/rockchip/common/scripts/post-wifibt.sh脚本内容,具体如下。

调试过程(1)WiFi 模组(AIC8800)通过 PCIe 接口连接到主机,这个接口负责传输数据和控制信号。
(2)PCIe 接口的初始化是由主机的 PCIe 控制器完成的。模组上电后,主机通过 PCIe 配置空间识别设备,这个就是通过 lspci 看到设备的原因。
(3)WiFi驱动程序的作用是初始化模组并提供接口给操作系统,以及通过PCIE接口将固件(固件用来控制硬件行为)传输到模组内部的存储器中。
该 WiFi 模块为 PCIe 接口,首先确认 PCIe 接口是否能正常识别到 WiFi 模块(旧系统)。
当 AIC8800D80P 上电时 lspci会侦测到Bus 003 Device 007:ID a69c:8d80

要先确认 fw 文件已拷贝至/lib/firmware。

【问题描述】:无法 insmod 加载驱动,log 打印如下。

【问题分析】:从报错分析,显然是 PCIE 的 Memory 空间不够,导致驱动加载失败。

【问题解决】:修改 PCIe 的 Memory 地址大小。


驱动加载成功,生成wlP4p65s0 节点。

查看 ifconfig 节点

扫描周围可见的无线网络
iw dev wlP4p65s0 scan | grep SSID

配置并启动 Wi-Fi 连接 。
可看到已成功连接至无线网络,并能正常ping通外网。wpa_passphrase Chen-2.4G-0 123456987 > /etc/wpa_supplicant.confwpa_supplicant -B -i wlP4p65s0 -c /etc/wpa_supplicant.conf
iw devping www.baidu.com -I wlP4p65s0

(完)
本人专注 Linux 驱动 & Linux/Android BSP 开发调试,可接外包项目/技术支持/问题定位。有需求或交个朋友可加微信:【Chen_WeChat2025】。
全部0条评论
快来发表一下你的评论吧 !