|
查看: 6034|回复: 1

[Others] [转载] 如何实现随意切换固件

[复制链接]

27

主题

32

回帖

175

积分

版主

积分
175
发表于 2024-8-27 16:29:12 | 显示全部楼层 |阅读模式 来自 上海
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: -
驱动SDK版本:
本帖最后由 TL_LBY 于 2024-8-27 16:30 编辑

转自旧论坛作者:denghongyan

项目基于B85M_SINGLE_BLE_SDK_V3.4.2.2
实现目标:有两个固件(app_1.bin, app_2.bin),将app_1.bin(烧写地址0x0)和app_2.bin(烧写地址0x40000)同时烧录到tlsr8258中,期望实现先启动app_2.bin,再由app_2.bin主动切换到app_1.bin.

我们的操作步骤如下:
>步骤1:擦除板子,然后写入两个固件
>步骤2:通过BDT的Memory Access将0x08写入0
>步骤3:给板子上电
>步骤3现象:app_2.bin成功运行,运行后并未实现固件切换(固件2的功能是等待10s后切换至固件1)
>步骤4:给板子重新上电
>步骤4现象:没有固件在运行

在app_2.bin中实现固件切换的代码如下:
u8 data_false = 0x0;   
u8 data_true = 0x4b;
unsigned char r = irq_disable();   
flash_write_page(0x40008, 1, &data_false);   
flash_write_page(0x08, 1, &data_true);   
irq_restore(r);


27

主题

32

回帖

175

积分

版主

积分
175
 楼主| 发表于 2024-8-27 16:29:19 | 显示全部楼层 来自 上海
你好,

  直接切换需要保证启动的固件对应0x8位置为0x4B,同时还需要擦除在修改该值。

本版积分规则

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

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

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

在本版发帖返回顶部