|
查看: 11|回复: 0

[BLE SDK] 客户自己实现OTA时,如何理解硬件多地址启动与0x4b启动标志?

[复制链接]

145

主题

338

回帖

1584

积分

管理员

积分
1584
发表于 7 小时前 | 显示全部楼层 |阅读模式 来自 上海
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: -
SDK及版本: -
客户想自己实现 OTA 升级,需要理解启动地址和启动标志的机制。硬件多地址启动会默认遍历 0x0、0x20000、0x40000 等地址,请问这个机制是怎样的?0x4b 标志是怎么管理的?

回答:

基本原理是硬件从 0 地址开始,依次检查各个启动地址偏移处的启动标志(0x4b),如果匹配就会从这个地址启动。

几点关键注意事项:

1、编译出来的 firmware 默认会在特定区域写入启动标志。实际完整的标志是 4 个字节 0x4b4e4c54(对应 ASCII "KNLT"),硬件检查需要 4 个字节全部匹配才会跳转启动。部分开发手册中简写为只描述第一个字节 0x4b,并不准确。

2、OTA 流程中标志的管理方式:OTA 刚开始时把标志区的 0x4b 故意改写为 0xff;所有数据校验全部通过后,再改写回 0x4b;旧区域对应位置改写为 0x00(失效)。

3、客户自己实现 OTA 时,需要注意:OTA 成功后,旧位置偏移处的标志需要改掉(不再保留 0x4b),且新固件存放位置的对应偏移处要写为 0x4b。

4、改/写 0x4b 这个动作最好放在 OTA 全部成功后最后执行,避免升级到一半失败、而 0x4b 标志已失效,导致新固件无法启动。

注意:具体偏移地址以对应芯片系列 SDK 和开发手册为准,不同系列可能不同(例如 B91 开发手册 OTA 章节描述为 firmware 起始偏移 0x20 处存放该标志)。

本版积分规则

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

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

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

在本版发帖返回顶部