This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1312R7:MCUboot 存储器映射在多个地方损坏

Guru**** 2482105 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1263471/cc1312r7-mcuboot-memory-maps-are-broken-in-several-places

器件型号:CC1312R7

flash_map_backend.h 的片外闪存设置有误、但即使 设置了 TI_BOOT_USE_EXTERNAL_FLASH、仍会使用这些设置。
在下
#Elif Defined (DeviceFamily_CC13X2X7)|| Defined (DeviceFamily_CC26X2X7)
   #define boot_secondary_1_size              0x00056000
   #define boot_primary_1_size              0x00056000

例如、即使  设置了 TI_BOOT_USE_EXTERNAL_FLASH、引导头验证 BootUtil_img_validate 也会使用上述错误设置。
这意味着即使使用外部闪存、MCUboot 也无法引导大于0x56000的*ANY*映像。

正确设置为 FLASH_SIZE - MCUBOOT_OVERHEAD - NVS 保留。

我们可以预期 SDK 何时修复这些错误(以及链接器.cmd 错误)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、  

    我不确定常数大小为0x56000的原因。 我将尝试找到一种解释、说明该设置不支持使用整个闪存。

    此致、

    SID  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、

    这有两个方面。 wisun ns_coap_oad_offchip 示例中定义闪存大小的链接器 cmd 文件。 这确实是一个错误、将在下一个 SDK 中修复。 目前的修复方法是将.cmd 文件中的 FLASH_SIZE 定义从0x56000更改为0xA8000 (以避免与分配的 NVS_REGION 重叠)。

    对于 FLASH_MAP_Backend、用户应将闪存大小定义更改为应用程序映像的最终大小。 默认常量不会更改、因为应用程序大小很大程度上取决于应用程序本身。 ns_CoAP_OAD_offchip 示例的应用自述文件中也会提到此步骤。

    此致、

    SID

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sid:
    您是否认为客户应为每个新的 SDK 版本重新写入 MCUboot 源文件 flash_map_backend.h、而不是 TI 修复它?
    据我所知、在不重写 SDK 源代码的情况下、工程设置中无法修复该错误...
    如果我误解了什么、请告诉我。
    祝大家度过美好的周末!
    奥拉

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    TI 已选择默认值(0x56000)作为时隙大小。 MCUBoot 项目不仅限于供 ns_CoAP_OAD_offchip 项目使用、还包括其他堆栈示例。

    因此、flash_map_backend.h 不能真正提前知道应用程序的 NVS_Reservation 可能是什么。 即使我们有一个默认值 FLASH_SIZE - MCUBOOT_OVERHEAD、NVS_Reservation 仍需要在应用开发人员端进行处理。

    Unknown 说:
    flash_size - mcuboot_tank - NVS reservation

    我不确定 最佳结果是什么?

    此致、

    SID

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最好的情况是修复源代码、以便可以在项目设置中指定时隙大小。
    例如-DMCUBOOT_SLOT_SIZE 0x60000、而不需要重写源码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我认为将其用作编译器参数确实很方便。

    但是、默认槽位大小定义取决于 DeviceFamily 定义、后者作为项目中的预定义符号传递。

    源代码中有 DeviceFamily 定义的 ifdefs、之后定义了时隙大小。 我不确定如果在设置中也定义了时隙大小、这是否可能。

    此致、

    SID  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然、如:
    #ifdef EXT_FLASH_IMAGE_SIZE
    #define BOOT_PRIMARY_1_SIZE EXT_FLASH_IMAGE_SIZE

    #else boot_primary_1_size 、无论
    #endif

    或类似的东西。

    现在、唯一要做的就是记录缺陷并将修复程序添加到即将推出的 SDK 中