QCA639X是WiFi相关的芯片,搭配8250(也就是865)平台上使用的,首发应该是狗米10/10pro。
作为整个项目wlan这个模块的owner,表示wlan这块简直一言难尽,crash(也就是wlan子系统重启)伴随这整个产品生命周期,具体表现为研发时期各种wlan导致橙屏,上市之后各种WiFi自动断开连接,断网断流等等。即使到现在接近下架,用户反馈中依然是各种问题。
前面为吐槽,下面开始正文:
WLAN软件架构
直接先看架构图
如图具体分为以下几个模块:
CNSS platform driver and WLAN host driver 运行在kernel中(AP)
CNSS platform driver 使用Boot Host Interface extended (BHIe)协议下载 Secondary Bootloader (SBL);使用BHI protocol 下载(Primary Bootloader )PBL;BHI/BHIE使用的都是Modem Host Interface (MHI)
WLAN host platform and WLAN FW使用QMI协议交互
WLAN firmware (FW) runs on Q6处理器中(MP)
The WLAN FW 是 QMI server,而CNSS daemon(负责保存和加载calibration data file 到fw) 和 CNSS platform driver(负责和WLAN host driver沟通,下载BDF文件,以及传输WLAN Mode和configuration到FW)
另外下载bdf这块与wcn39xx不一致,qca639x是CNSS platform driver下载bdf文件,而wcn39xx是cnss-deamon下载bdf。
WLAN boot顺序
具体的流程就不画图了,直接给出步骤。
当用户从Settings打开WLAN的时候,wlan.ko被加载,当加载成功之后,会调用CNSS platform driver API去打开QCA639x hardware power 和WLAN_EN GPIO resources,并且resume t