[已解决]tyos sdk 3.11.0 flash map

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
Bryan Guo
Posts: 13

你好,我从3.8.1切换到3.11.0, 做OTA的时候,出现错误:tuya_ble_ota_file_info_handler errorid: 3。 OTA size超范围。 我需要知道这个版本的SDK flash map。 我可以把这个size调整到多大? 另外,目前我的用户参数放在0x00034000 - 0x0003f000,是否有冲突?
下面的宏定义,我不知道ota_program_offset 的值是多少。
请麻烦帮我看一下应该如何调整OTA size已经用户区参数的地址范围,谢谢。

Code: Select all

#ifndef BOARD_FLASH_OTA_START_ADDR
    #define BOARD_FLASH_OTA_START_ADDR (ota_program_offset)
#endif

#ifndef BOARD_FLASH_OTA_END_ADDR
    #define BOARD_FLASH_OTA_END_ADDR (ota_program_offset + BOARD_FLASH_OTA_SIZE)
#endif

#if BOARD_FLASH_OTA_SIZE > 0x3F000
    #error "BOARD_FLASH_OTA_SIZE must <= 0x3F000 !!!!"
#endif

Code: Select all

// program code address
#define CODE1_START_ADDR  0x00000
#define CODE1_STOP_ADDR   (BOARD_FLASH_OTA_SIZE)

#define CODE2_START_ADDR  0x40000
#define CODE2_STOP_ADDR   (CODE2_START_ADDR + BOARD_FLASH_OTA_SIZE)

// user code address
#define USER1_DATA_START_ADDR CODE1_STOP_ADDR
#define USER1_DATA_STOP_ADDR  0x3F000

#define USER2_DATA_START_ADDR (CODE2_STOP_ADDR + 0x1000)
#define USER2_DATA_STOP_ADDR  0x74000

// 0x74000 - 0x75FFFF be used for SDK BLE Stack Info area
// 0x76000 be used for SDK mac address data area
// 0x77000 be used for SDK calibration data area

#define USER3_DATA_START_ADDR 0x78000
#define USER3_DATA_STOP_ADDR  0x80000
Last edited by Bryan Guo on 2025年 Jul 28日 09:40, edited 1 time in total.

Tags:
jinyuan
Posts: 92

Re: [求助]tyos sdk 3.11.0 flash map

FLASH分布详情见涂鸦开发者平台文档中心:
https://developer.tuya.com/cn/docs/iot- ... 8%E5%82%A8

Bryan Guo
Posts: 13

Re: [求助]tyos sdk 3.11.0 flash map

所以,这个BTU模块,支持的最大固件空间是 0x2B000 ?

jinyuan
Posts: 92

Re: [求助]tyos sdk 3.11.0 flash map

  • ota_program_offset 的值应用层不需要关心也不要做任何改动
  • 如果要增加固件size,根据具体情况调整board.h 中
    • BOARD_FLASH_OTA_SIZE(固件能够OTA 的最大size,也是固件的最大size)
    • BOARD_FLASH_TUYA_INFO_START_ADDR(授权以及配对信息存储的地方,如果固件size变大,就要对这个地址做迁移,如果没有迁移则授权和配网信息会丢失)
Bryan Guo
Posts: 13

Re: [求助]tyos sdk 3.11.0 flash map

一、您好,我看文档,是这样描述flash空间:
TLSR825x 系列芯片平台低功耗蓝牙的 SDK 采用双备份升级方案,固件分为两片区域。
• 第一片区域为 0x00000 - 0x2B000。(因为芯片内部原因,要预留 4K 的空间不使用)
• 第二片区域为 0x40000 – 0x6B000。(因为芯片内部原因,要预留 4K 的空间不使用)
留给用户区的区域为:
• 0x2C000 - 0x40000
• 0x71000 - 0x74000
• 0x78000 – 0x80000

二、我想把APP和OTA扩充到200K的空间,这样划分:
• 第一片区域为 0x00000 - 0x32000。(因为芯片内部原因,0x32000 ~ 0x33000要预留 4K 的空间不使用)
• 第二片区域为 0x39000 – 0x6B000。(因为芯片内部原因,0x6B000 ~ 0x6C000要预留 4K 的空间不使用)
留给用户区的区域为:
0x33000 - 0x39000
• 0x71000 - 0x74000
• 0x78000 – 0x80000

三、不修改BOARD_FLASH_TUYA_INFO_START_ADDR,默认还是0x6C000;

四、相关宏配置:
1) BOARD_FLASH_OTA_SIZE:
#ifndef BOARD_FLASH_OTA_SIZE
#define BOARD_FLASH_OTA_SIZE (0x32000) // default = 0x2B000
#endif

2) CODE1 区域(APP区域):
// program code address
#define CODE1_START_ADDR 0x00000
#define CODE1_STOP_ADDR (BOARD_FLASH_OTA_SIZE)

3) 用户参数区域:
#define USER1_DATA_START_ADDR (CODE1_STOP_ADDR+0x1000) // 0x33000
#define USER1_DATA_STOP_ADDR 0x39000

4) CODE2 区域(OTA区域):
#define CODE2_START_ADDR 0x39000
#define CODE2_STOP_ADDR (CODE2_START_ADDR + BOARD_FLASH_OTA_SIZE) // 0x6B000

5) TUYAOS 授权信息区域:
#ifndef BOARD_FLASH_TUYA_INFO_START_ADDR
#define BOARD_FLASH_TUYA_INFO_START_ADDR (0x6C000)
#endif

请帮我看下上面划分是否可行,主要是521K的flash是完整的一块吗?

Bryan Guo
Posts: 13

Re: [求助]tyos sdk 3.11.0 flash map

ota_program_offset的值好像在库里写死了, ota_program_offset = 0x40000;
把现在把OTA开始地址的定义改成这样,不知道行不行,不再使用ota_program_offset。
SDK中的代码:
#ifndef BOARD_FLASH_OTA_START_ADDR
#define BOARD_FLASH_OTA_START_ADDR (ota_program_offset)
#endif

#ifndef BOARD_FLASH_OTA_END_ADDR
#define BOARD_FLASH_OTA_END_ADDR (ota_program_offset+ BOARD_FLASH_OTA_SIZE)
#endif


修改为:
#ifndef BOARD_FLASH_OTA_START_ADDR
#define BOARD_FLASH_OTA_START_ADDR (0x39000)
#endif

#ifndef BOARD_FLASH_OTA_END_ADDR
#define BOARD_FLASH_OTA_END_ADDR (BOARD_FLASH_OTA_START_ADDR + BOARD_FLASH_OTA_SIZE)
#endif

Bryan Guo
Posts: 13

Re: [求助]tyos sdk 3.11.0 flash map

测试了一下,不行,OTA区域的开始地址好像必须是从0x40000开始才行,修改到0x39000行不通,OTA成功后直接挂了,程序跑不起来。
如果改动授权地址0x6C000,也只有16K空间,如果OTA要扩大到200K,后面要修改很多地方的地址,不方便。
这个SDK升级后空间越来越大,留给用户空间越来越小。不知道有没有可以裁剪的地方,裁剪小一点,多出30K的空间给用户。

jinyuan
Posts: 92

Re: [求助]tyos sdk 3.11.0 flash map

  • 日志占代码空间很多 ,测试OTA 的时候 ,固件有关日志吗?
  • TUYA_SDK_TEST 相关的代码有删除吗?
  • 主要还是要在业务逻辑上做优化,SDK 里面没有用到的能力 编译的时候也不会编译进去,有编译进去的大多也是必要的。
Bryan Guo
Posts: 13

Re: [求助]tyos sdk 3.11.0 flash map

多谢回答,后续只能裁剪应用和关闭log了,增加一点空间。

Post Reply