中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析

目录

1.总述: 编译生成文件总图

2.编译前的预操作(生成资源文件res.bin及配置文件xcfg.bin)

3. 调用GCC源代码编译, 生成app.rv32文件.

4. 调用postbuild.bat, 整合前面生成的res.bin / xcfg.bin /app.rv32等文件, 生成最终下载文件app.dcf

5. 调用downoad.xm,实现工程编译后自动下载功能


1.总述: 编译生成文件总图

中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第1张图片

以下以AB530X中的标准工程standard示例, 看看编译过程中的操作及生成的文件.

中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第2张图片

Rebuild工程, 可以在BuildLog中, 查看相关文件处理过程

中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第3张图片

下面主要分析这个log日志, 看看编译过程中的动作.

2.编译前的预操作(生成资源文件res.bin及配置文件xcfg.bin)

log日志如下:

中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第4张图片

中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第5张图片

编译前会调用prebuild.bat, 此批处理主要处理2件事.

1) xmaker调用脚本res.xm处理和打包资源文件(提示音,EQ等), 生成资源res.bin文件及res.h文件.

    这里要注意,在编译时生成的res.bin, 默认是从Output\bin\res目录下的所有文件当作资源文件打包的, 这些资源文件目前只支持英文名.

    在生成的res.h中可以看到各个生成文件的存放地址及长度的指针.

    中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第6张图片

    这里要特别注意, 如果替换了Output\bin\res目录下的资源文件, 如"normal.eq", 一定要重新编译, 不然是没有效果的

    相对而言, 替换了Settings\Resources下的资源文件, 则不用重新编译, (后面再详述) 

2) xmaker调用脚本xcfg.xm处理配置选项文件, 生成配置xcfg.bin文件, 及xcfg.h头文件.

   配置文件"如Boombox"的显示界面,  实际上是解析xcfg.bin(xcfg.xm编译生成的)来实现图形化配置的

   中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第7张图片

  这个配置文件(xcfg.xm)中所有的配置都对应xcfg.h中结构体中的选项: 

  在程序上电运行时, 会把xcfg.bin文件中的值赋值给xcfg_cb这个结构体, 也就实现了配置工具和程序之间的联系.

  中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第8张图片

  中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第9张图片

 查看配置工具图形选项如何在程序中起作用, 可以直接打开xcfg.xm, 找到底对应选项如LANG_ID, 改成小写,查找xcfg_cb.lang_id在程序中做的操作即可.

  中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第10张图片

  另外, 也可以自行在xcfg.xm中增加自己的配置选项, 重新编译后, 再在设置中打开配置文件, 即可看到新加的配置选项. (相关语法照着xcfg.xm中的猜也能到)

3. 调用GCC源代码编译, 生成app.rv32文件.

4. 调用postbuild.bat, 整合前面生成的res.bin / xcfg.bin /app.rv32等文件, 生成最终下载文件app.dcf

中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第11张图片

通过postbuild.bat中调用的app.xm脚本文件, 可以看到有5个文件被整合生成app.dcf

1) 前面生成的res.bin / xcfg.bin /app.bin(app.rv32转换而来)

2) header.bin: 此文件为固定文件,大小为4K, 一般是从FLASH中的加载运行的第一个文件.进行一些芯片配置及二次加载前的处理. 如有曾经出现芯片晶振驱动能力不足导致芯片运行不起来, 更新原产提供的header.bin即可.

3) updater.bin: 这个是升级文件, SD或USB升级及测试盒升级出现问题, 有时需要更新这个文件才能修复.

 

5. 调用downoad.xm,实现工程编译后自动下载功能

   postbuild.bat中最后还调用了一个downoad.xm, 打开看到仅仅是一个download的脚本关键字.

  它的作用是让xmaker给DownLoader.exe发送一个下载命令(Windows程序之间的命令沟通), 实现程序编译后自动下载功能.

   

   这个自动下载功能, 要在Dwonloader的"开始"选项中, 勾选"自动"功能才行.

   中科蓝讯蓝牙: 蓝牙工程编译及自动下载过程浅析_第12张图片

  先分析到这, Thanks关注.

你可能感兴趣的:(中科蓝讯蓝牙_软件开发总述)