QSDK校准值与BDF
QSDK 校准值与BDF
BDF与caldata的关系
对于高通的WiFi芯片平台,BDF文件是一个射频工程师绕不过去的东西,相关信息都是基于最新的WiFi7平台。对比WiFi6以及之前的平台,高通对BDF的一些定义和工具做了很大的变更,欢迎大家一起沟通探讨,有错误的地方,欢迎指正。
针对性的探讨两个问题,一是BDF和caldata的关系以及配合使用,二是BDF中关于T/RX的相关参数如何修改。
第一个问题,BDF和caldata之间的关联和配合方式。
这里我们先了解一下两个文件的基本信息,BDF大而全,可以理解包含所有的射频配置信息,caldata顾名思义,仅仅只有校准数据。但是实际上BDF里面也是有相关校准数据的,分开的原因是大量通用的数据对于每个设备来说都是一样的,所以通常我们在项目阶段都会去做一件事情,收集小批量经过全点校准的样机的BDF,然后通过QRCT工具去生成一个全新的BDF(golden bin),而这个golden bin会根据我们设计的产品的校准数据来优化内部的校准曲线,有了这个golden bin,我们后续的产品生产就可以只做单点校准,并且你会发现校准的功率精度会大幅度提升,没有golden bin之前,如果你做单点校准,你会发现功率偏差非常大,几乎无法做单点校准,因为内部的参考校准数据曲线不符合当前产品。而这里就需要提一下,对于手机类的终端产品,可能后续生产过程中就直接使用golden bin了,没有再校准的过程了,但是网管类AP产品,一般都会在工厂对每一台生产出来的设备做校准,以保证更高的功率精度,优化硬件性能,同时筛选不良品。这个时候的校准数据就会保存在caldata里,这个可以叫做device BDF,这个caldata就是和每一台设备相关,但是同一台设备里这两个文件的数据会最终会合并到一起来用,通用配置大家都一样,直接使用BDF里的,但是校准数据每台设备都有区别,校准数据就调用caldata里的数据。
为什么不直接存入golden bin,从我的理解看,可能是为了优化效率,减少对文件的操作,以免损坏BDF。
第二个问题是如何修改BDF中的T/RX参数。
对于我们来说,我们关心的和需要改动的数据主要就是射频参数,校准数据,法规数据,硬件适配等,其它的大部分数据用默认的即可,也不建议在不了解的情况下去改动。高通目前提供多种方式修改BDF,有python脚本,exe程序,还有excel,都可以实现修改BDF的工具,前面工具基本上都是先修改bdf的txt版本,然后用工具生成bin文件,excel通过宏的方式打开bin文件,在表格中修改好之后重新生成新的bin文件。
修改法规部分的数据,还可以用CTL里的工具,和BDF的工具类似,不过现在高通工具做的有点多,搞得更复杂了。法规部分还会结合另一个bin文件,叫做RegDB,这个文件里涵盖基本全部的法规要求,各个区域对不同信道的功率,PSD,天线增益等等的限制,一般情况下用最新的版本,我们是不需要去修改这个文件的。我们只需要把认证的的功率限制数据通过CTL的EXCEPTIONS加进去即可,最终这些数据都会合并到BDF。
以上就是对于这两个问题的一些解答,有任何疑问,关于探讨!
校准值与BDF加载顺序
CNSS2驱动首先加载BDF用于初始化wifi chip,然后从art分区加载校准值,如果校准值有效则根据校准值进行配置。
高通wifi驱动加载bdf与校准值机制
高通的wifi驱动在加载校准值与bdf时,主要依赖两个部分的配置,分别是:设备树、ftm.conf。
设备树中有一个boardid属性,其主要决定了对应radio使用的bdf,如board id为0x1019那么在加载bdf的时候,CNSS2就会在/lib/firmware/QCNXXXX寻找bdwlan.0x1019并加载,设备树中slotid节点则是决定了加载校准值时的文件名。而ftm.conf主要是用于生成校准值时的数据源、最终生成的文件名等。
设备树
ftm.conf
下图是不同的slotid对应存储的校准值的起始地址与大小。实际存储的校准值大小一般是远小于表中所描述的size_hex.
ap-mi01.3,12,0,4096,153600,255
ap-mi01.3,0060,1,157696,204800,0
ap-mi01.3,00b1,2,362496,204800,1
ap-mi01.3,0060,3,567296,204800,2
ap-mi01.3,00b1,4,772096,204800,3
如上为一份ftm.conf的示例,对其进行理解,大致可以理解为下表,如果想进行更深入的理解,那么可以参考read与write caldata的脚本,ftm.conf如要是在这两个文件中被调用到
| board id | offset | size | suffix | des | |
|---|---|---|---|---|---|
| 12 | 4096 | 153600 | 255 | Internal 2g | 2g |
| 0060 | 157696 | 204800 | 0 | PCIE0 | 5gh |
| 00b1 | 362496 | 204800 | 1 | PCIE1 | 5gl |
| 0060 | 567296 | 204800 | 2 | PCIE2 | 5gf |
| 00b1 | 772096 | 204800 | 3 | PCIE3 | 6gf |
bdwlan.xx二进制文件解析
BDF前16字节含义如下:

校准值的读写
1 | # 首先获取存储校准值的mtdblock,根据ftm.conf获取每个slot 校准值偏移地址与大小 |
- Title: QSDK校准值与BDF
- Author: Gryphon
- Created at : 2025-10-13 08:46:43
- Updated at : 2025-10-13 08:46:43
- Link: https://phoenixs.gitlab.io/2025/10/13/youdaonote/QCA平台开发笔记/002.Calibration相关/
- License: This work is licensed under CC BY-NC-SA 4.0.