BSP调试#06:WiFi-aic8800 (RK3588)

描述

 本合集的是我当初调试 RK3588 平台时的原始笔记——只保留了那些踩过坑的问题接口,没出过问题的内容全删掉了。文章框架如下:BSP

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

 硬件设计

BSP

对照原理图找到如下 3 个关键点:

PCIe 接口的 WiFi 基本就有两种:贴在板子上模块及M2接口(这里方案正是),但它们关键点是一样的:

VBAT/VCC3V3:总的3.3V电源,一般是长供电;

WIFIREGON:芯片的复位/使能管脚,开机保持高电平;

PCIE PERST L/PERSTO:芯片PCIe部分的复位管脚,DTS对应的PCIE节点下务必配置正确。

软件配置

dts 配置

BSPBSP

移植驱动

将 WiFi 模组厂商提供的驱动源码aic8800_fdrv拷贝至./external/rkwifibt/drivers/目录进行编译。具体步骤如下:

(1)驱动 SDK 源码放置/external/rkwifibt/drivers/目录下;

(2)添加驱动固件至/external/rkwifibt/firmware/aic8800 目录下。

(3)修改device/rockchip/common/scripts/post-wifibt.sh脚本内容,具体如下。

BSPBSP调试过程

PCIe WiFi 识别流程

(1)WiFi 模组(AIC8800)通过 PCIe 接口连接到主机,这个接口负责传输数据和控制信号。

(2)PCIe 接口的初始化是由主机的 PCIe 控制器完成的。模组上电后,主机通过 PCIe 配置空间识别设备,这个就是通过 lspci 看到设备的原因。

(3)WiFi驱动程序的作用是初始化模组并提供接口给操作系统,以及通过PCIE接口将固件(固件用来控制硬件行为)传输到模组内部的存储器中。

确认 PCIe 是否识别模块

该 WiFi 模块为 PCIe 接口,首先确认 PCIe 接口是否能正常识别到 WiFi 模块(旧系统)。

当 AIC8800D80P 上电时 lspci会侦测到Bus 003 Device 007:ID a69c:8d80

BSP

insmod 加载驱动

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

BSP

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

BSP

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

BSP

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

BSPBSP

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

BSP

功能验证

查看 ifconfig 节点

BSP

扫描周围可见的无线网络

  •  
iw dev wlP4p65s0 scan | grep SSID
BSP

配置并启动 Wi-Fi 连接 。

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

(完)


本人专注 Linux 驱动 & Linux/Android BSP 开发调试,可接外包项目/技术支持/问题定位。有需求或交个朋友可加微信:【Chen_WeChat2025】。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分