找回密码
 立即注册

微信扫码登录

查看: 1213|回复: 7

[BLE SDK] 【提问】关于TLSR8258 OTA

[复制链接]

3

主题

5

回帖

47

积分

英勇黄铜

积分
47
发表于 2025-2-27 16:58:51 | 显示全部楼层 |阅读模式
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: TLSR8258
SDK及版本: telink_b85m_ble_single_connection_sdk-V3.4.2.4_Patch_0003

芯片型号:TLSR8258
SDK:telink_b85m_ble_single_connection_sdk-V3.4.2.4_Patch_0003

【问题描述】基于sdk的b85m_ble_sample例程,使用串口根据自有协议对芯片进行OTA升级,目前flash分包存储固件及校验部分已经完成了。在阅读官方SDK文档OTA部分的时候遇到些问题,希望泰凌微的工程师能帮我解惑。
----------------------------------
假如是第一次升级,新固件地址0x20000

1.我这边flash校验通过后如何reboot对芯片进行软复位,是否可以通过以下两行代码实现,如果不行应该如何实现呢?
ota_program_offset = 0x20000;
app_ota_end_result(OTA_SUCCESS);//模拟官方OTA_END指令

2.既然sdk已经自动实现了读取0x08和0x20008地址是否为0x4b确定程序从哪里启动,那为什么还需要ble_sts_t   blc_ota_setFirmwareSizeAndBootAddress(int firmware_size_k, multi_boot_addr_e boot_addr)来设置启动地址呢?
Snipaste_2025-02-27_16-36-44.png

3

主题

5

回帖

47

积分

英勇黄铜

积分
47
 楼主| 发表于 2025-2-28 10:09:56 | 显示全部楼层
麻烦泰凌微的工程师帮解答一下,谢谢

48

主题

178

回帖

735

积分

版主

积分
735
发表于 2025-2-28 17:07:23 | 显示全部楼层
对于第一个问题,没太明白你的需求,OTA协议目前在底层已经实现好,不需要上层reboot

48

主题

178

回帖

735

积分

版主

积分
735
发表于 2025-2-28 17:16:40 | 显示全部楼层
对于第二个问题,除了支持0x20000外,硬件还支持其他启动地址,所以需要配置

3

主题

5

回帖

47

积分

英勇黄铜

积分
47
 楼主| 发表于 2025-2-28 22:06:36 | 显示全部楼层
TL_SW 发表于 2025-2-28 17:07
对于第一个问题,没太明白你的需求,OTA协议目前在底层已经实现好,不需要上层reboot ...

因为我们由于项目需求的原因,没有使用SDK里面的OTA协议,而是通过串口根据我们自有协议向soc发送新的固件。现在我的问题就是soc已经完成了固件接收和校验,下一步不是应该reboot芯片,让芯片复位重新跳转新的flash地址运行嘛,那怎样才能使芯片复位呢,用我上面那两行代码行不行?(我在pm.h文件中找到了start_reboot()函数,但是不知道行不行,还没试)

3

主题

5

回帖

47

积分

英勇黄铜

积分
47
 楼主| 发表于 2025-2-28 22:09:59 | 显示全部楼层
TL_SW 发表于 2025-2-28 17:16
对于第二个问题,除了支持0x20000外,硬件还支持其他启动地址,所以需要配置 ...

这个问题明白了,也就是如果我的新的启动地址就是0x20000,那不需要调用那个函数,因为sdk中已经实现了,如果是其他新地址,比如0x40000就需要调用了。这个函数本质上就是读取0x08地址不为0x4b后,下一步去读取哪个地址的值是不是0x4b,不知道我这样理解对不对

48

主题

178

回帖

735

积分

版主

积分
735
发表于 2025-3-3 11:19:12 | 显示全部楼层
13299279387 发表于 2025-2-28 22:06
因为我们由于项目需求的原因,没有使用SDK里面的OTA协议,而是通过串口根据我们自有协议向soc发送新的固 ...

start_reboot可以实现芯片重启

48

主题

178

回帖

735

积分

版主

积分
735
发表于 2025-3-3 11:24:46 | 显示全部楼层
13299279387 发表于 2025-2-28 22:09
这个问题明白了,也就是如果我的新的启动地址就是0x20000,那不需要调用那个函数,因为sdk中已经实现了, ...

芯片上电后硬件会在0,0x20000,0x40000中check 0+0x08,0x20000+0x08,0x40000+0x08是否满足标识“TLNK”,如果有的话就从该地址启动。
这里加入地址选择的目的是,假如当前firmware是运行在0x0地址的,则下次OTA会有两个选择0x20000和0x40000,所以需要客户在应用层根据需要设置好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-4-4 07:53 , Processed in 0.091712 second(s), 24 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表