DA14531-SUOTA升级时出现错误:same image error以及关于内存重叠的问题有些疑惑

我是初学者,根据教程文档一步一步做完 在ios suota app中连接上把fw2.image选中升级时提示same image error

我看了论坛中其他人遇到的这个问题 最关键的user_version.h以及sdk_version.h中的SDK_VERSION我都修改了  USER_DEVICE_NAME也进行了修改 PRODUCT_HEADER_POSITION也是对应的  但是它还是一直提示same image error

当我使用其他fw2.image(没有参与制作烧录进去的multi.image)时就可以升级 然后在用fw2.image也可以升级了 只能这样升级  希望可以帮我解决这个问题 谢谢

对了 我还有一个疑问 当我打开suota功能时 编译就会报错 打开#define CFG_PRF_SUOTAR后 发生内存重叠
.\out_531\dsps_device_531.axf: Error: L6221E: Execution region RET_DATA with Execution range [0x07fc7a10,0x07fc8224) overlaps with Execution region RET_HEAP with Execution range [0x07fc7d30,0x07fc9800).
我不知道如何解决 在研究一段时间后我发现

- `rwip_heap_db_ret`位于地址`0x07fc7d30`,占用1036字节。( 其实是1028)
- `dma_uart_cfg`位于地址`0x07fc7d80`,占用28字节。

这两个区域显然有重叠,从地址`0x07fc7d80`开始的内容与前一个数据段`rwip_heap_db_ret`发生重叠。

要解决这个问题,可以:
- 调整`rwip_heap_db_ret`的大小或起始地址。
- ***`dma_uart_cfg`到一个新的、不重叠的地址区域。 

我选择将/// DB Heap
#ifndef DB_HEAP_SZ
#define RWIP_HEAP_DB_SIZE_JT 924 // in bytes
#else
#define RWIP_HEAP_DB_SIZE_JT DB_HEAP_SZ // in bytes
#endif

#if defined (__DA14531__)
#define DB_HEAP_SZ (924)
#if defined (CFG_BLE_FLOW_CONTROL)
#define MSG_HEAP_SZ (5*924)
#else
#define MSG_HEAP_SZ (6*924)
#endif
#else
#define DB_HEAP_SZ (1024)
#define MSG_HEAP_SZ (32*1024)
#endif改为了924 就变正常了  我越增加代码这个924就得变得越小 我不确定这样改对不对

希望可以解答我这两个疑问 谢谢

  • 这是我镜像文件的一些基本信息:

    fw1

    name:LTH-
    #define SDK_VERSION "1.0.0"
    #define SDK_VERSION "v_6.0.14.1114"
    #define SDK_VERSION_DATE "2020-04-29 13:31 "
    #define SDK_VERSION_STATUS "REPOSITORY VERSION v_6.0.14.1114"

    ==============================================================================


    Code (inc. data) RO Data RW Data ZI Data Debug

    27892 2052 2284 192 10404 1018379 Grand Totals
    27892 2052 2284 192 10404 1018379 ELF Image Totals
    27892 2052 2284 192 0 0 ROM Totals

    ==============================================================================

    Total RO Size (Code + RO Data) 30176 ( 29.47kB)
    Total RW Size (RW Data + ZI Data) 10596 ( 10.35kB)
    Total ROM Size (Code + RO Data + RW Data) 30368 ( 29.66kB)

    ==============================================================================

    fw2
    name:ZED-
    #define SDK_VERSION "2.0.0"
    #define SDK_VERSION "v_7.0.14.5555"
    #define SDK_VERSION_DATE "2024-06-07 10:11 "
    #define SDK_VERSION_STATUS "REPOSITORY VERSION v_7.0.14.5555"


    ==============================================================================


    Code (inc. data) RO Data RW Data ZI Data Debug

    27968 2062 2284 192 10400 1018824 Grand Totals
    27968 2062 2284 192 10400 1018824 ELF Image Totals
    27968 2062 2284 192 0 0 ROM Totals

    ==============================================================================

    Total RO Size (Code + RO Data) 30252 ( 29.54kB)
    Total RW Size (RW Data + ZI Data) 10592 ( 10.34kB)
    Total ROM Size (Code + RO Data + RW Data) 30444 ( 29.73kB)

    ==============================================================================

  • 我刚才突然成功了 是要用fw1.image升级吗 为什么教程使用的fw2.image

  • Hi Faker,

    感谢在论坛分享问题。

    1,SDK 这块建议使用最新的SDK版本来开发,这里有各版本修复与未修复记录:

    http://lpccs-docs.renesas.com/sdk6_kll/index.html, 最新的SPS 版本Serial Port Service (SPS) | Renesas

    2,给你的Debug能力点赞,确实开了OTA后内存这块需要调整,具体你这个报错我们之前也未遇到过。教程上的image制作应该是两个v1 更新用v2,然后更新时APP端选择更新较老的哪个 the old

  • 好的 谢谢 您说的两个v1什么意思 不是用fw1.image和fw2.image么 更新我用的fw1.image就能正常更新 fw2.image会报same

  • 这个视频你应该看过了吧,Image bank 就是选择更新哪个image,选Oldest 就是更新最旧的那个。

    最好就是你直接弄三个版本,v1v2 用来制作烧录软件,v3 用来更新。

  • 看过了 哦哦 知道了 用来更新的image不用参与制作烧录进去的多镜像文件也可以啊 谢谢