目录
一、高通BDF文件总体说明
BDF文件全程是Board Data File,该文件主要用于配置高通Wi-Fi固件的相关参数,如:SAR、CCA阈值、ANI、发射功率等。BDF主要有三类文件:1、解开后的bdwlan.txt文本文件。2、打包之后的bdwlan.bin文件;3、基于bin文件增加elf头部的bdwlan.elf文件。
二、依赖环境搭建
- 下载安装arm-eabi编译器,使用其中的arm-none-eabi-objcopy用作添加和删除elf头; 下载连接https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads; 下载完成之后解压并将其bin目录配置到环境变量中;
- 下载安装python2.7,工具bin2txt.py和txt2bin.py都是基于python2写的; 下载连接:https://www.python.org/download/releases/2.7/; 下载安装之后按要求配置相应的环境变量;
三、高通BDF解包步骤
步骤一:elf文件 转 bin文件
首先使用arm-none-eabi-objcopy命令去除elf头部信息得到对应的bin文件。相关命令如下:
arm-none-eabi-objcopy -O binary bdwlan.elf bdwlan.bin
该命令执行之后会在在调用目录下生成bdwlan.bin文件;
步骤二:bin文件 转 txt文件
bin文件要转换成txt文件需要一个关键的模板文件:NvTpl.txt(该文件可以在高通编译之后的源码中找到)(重点:NvTpl.txt必须与对应的bin文件匹配,不然无法解析出相关的信息),最后调用python脚本bin2txt.py(可以在高通源码中找到),通过以下命令将bin文件转换成txt文件;
python bin2txt.py bdwlan.bin NvTpl.txt
该命令执行完成之后会生成一个NvTpl_new.txt文件,该文件就是解包后生成txt文件;
四、高通BDF打包步骤
步骤一:txt文件 转 bin文件
首先调用python脚本:txt2bin.py(可以在高通源码中找到),通过执行以下命令将txt文件转换为bin文件。
python txt2bin.py bdwlan.txt bdwlan.bin
该命令执行之后会在调用目录下生成bdwlan.bin文件;
步骤二:bin文件 转 elf文件
通过调用arm-none-eabi-objcopy命令给bdwlan.bin文件添加elf头部信息从而得到对应的bdwlan.elf文件;相关命令如下所示:
arm-none-eabi-objcopy -I binary -O elf32-littlearm --binary-architecture arm bdwlan.bin bdwlan.o
arm-none-eabi-ld -m armelf bdwlan.o -o bdwlan.elf -z max-page-size=1024 -Tdata 0x1000
命令执行之后就生成的对应的elf文件:bdwlan.efl
五、如何确认系统使用哪个bdf文件
高通的/vendor/firmware_mnt/目录下有可能有多个bdwlan*.elf文件,如果不确认平台的具体使用的哪个文件,可以在刚开机的时候(注意调用时机,开机比较久后容易导致日志被冲掉)调用以下命令确认。
dmesg | grep -i bdwlan
六、其他说明
另外高通还有一些其他的工具,如:BDF_txt2elf.exe BDF_elf2txt2.exe BDF_diff_merge.exe BDF_nv_merge.exe 等相关的工具,如果大家感兴趣可以留言,后续我整理之后发出来。