|
查看: 9|回复: 0

[BLE SDK] 如何让编译出的bin文件自带固件版本号?

[复制链接]

145

主题

338

回帖

1584

积分

管理员

积分
1584
发表于 昨天 11:50 | 显示全部楼层 |阅读模式 来自 上海
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: -
SDK及版本: -
有没有办法让编译出来的 bin 文件自带固件版本号?这样 APP 升级时可以直接判断 bin 的版本和设备上运行的版本,测试人员拿到 bin 也能知道版本。

回答:

1、可以在启动汇编文件(.s)中嵌入版本号。示例做法:
  1. .org 0x0
  2. tj __reset
  3. .word (BUILD_VERSION)
复制代码

把 version.h 包含进 .s 文件,通过 BUILD_VERSION 宏(编译时定义)将版本号写入 bin 文件固定位置,这样修改 version.h 即可修改版本号。早期规划中曾约定 bin 文件第 2~5 字节为固件版本号。

2、注意事项
- 早期版本 SDK 的 bin 没有这个版本号字段,版本由开发者自行管控(OTA 中也有自己控制版本的回调,APP 可以读取运行固件版本);
- 如果老版本 SDK 曾经存在该字段而后被删除,新版本会恢复;但如果老版本本来就没有,不能随意占用这些空间,因为可能有客户利用了这些字节,强行加上会破坏其设计;
- 如果不加版本号字段,最简单的方式是按约定的文件名格式管理 bin(APP load 时按文件名判断版本)。

3、结论:想拿到 bin 就能看版本,建议在 .s 中嵌入 BUILD_VERSION;如无特殊要求,用文件名管控即可。

本版积分规则

关注公众号
隐私政策|Telink forum

相关侵权、举报、投诉及建议等,请发 E-mail:forum@telink-semi.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|沪ICP备17008231号-1 |沪公网安备31011502403548号

在本版发帖返回顶部