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.

[参考译文] CC1354P10:MCUBOOT_DIRTE_XIP 模式在2个插槽中下载相同的固件似乎不起作用

Guru**** 2478765 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1340452/cc1354p10-mcuboot_direct_xip-mode-seems-not-work-to-download-same-fw-in-2-slots

器件型号:CC1354P10

您好!

我尝试了 MCUboot 示例、默认为 XIP 模式。

对于 mcuboot_blinky 示例、我必须根据时隙偏移、使用不同的 ICF 基地址构建2 FW。

但是、我们更喜欢为两个插槽使用一个 FW。 在我看来、硬件应该实施一个映射功能来支持这一点。

请帮助确认 TI 是否支持此功能?

主插槽:

/*define symbol __intvec_start__= 0x8080;   
定义符号 FLASH_START__= 0x8080;
定义符号 FLASH_END__= 0x0002ff7f;
定义导出的符号 MCUBOOT_HDR_BASE = 0x8000;*/

辅助时隙:
定义符号__intvec_start__= 0x3a080;
定义符号 FLASH_START__= 0x3a080;
定义符号 FLASH_END__= 0x0002ff7f;
定义导出的符号 MCUBOOT_HDR_BASE = 0x3a000;

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

    尊敬的 Yao:

    这是预期行为。 mcuboot 将始终执行版本号最高的映像。

    此致、

    亚瑟

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

    您好,Arthur M ü,

    我的问题是2个插槽不相等、即使对于相同的固件、也需要根据插槽基址构建。

    我们不希望通过内部插槽信息来管理固件。

    另一个问题是 、您是否支持 此模式 MCUBOOT_SWAP_USE_SCRATCH?

    谢谢

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

    尊敬的 Yao:

    正确、必须在映像上运行 img 工具、并且必须具有正确的插槽基址。

    遗憾的是、我们不支持 MCUBOOT_SWAP_USE_SCRAKE。

    此致、

    亚瑟

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

    您好,Arthur M ü,

    MCUBOOT_SWAP_USAGE_SCRAKE 有什么优点? 这似乎更多地是 MCUboot 功能、只是临时区域需要存储器映射。

    你有什么计划吗?

    谢谢

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

    尊敬的 Yao:

    交换需要额外的扇区来执行交换、这可能会磨损闪存。
    我已经问过团队、我们是否打算支持它。

    此致、

    亚瑟

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

    您好,Arthur M ü,

    请帮助检查以下闪存自适应代码中的 mcuboot。 Sector Size (2048)似乎是错误的。

    闪存编程应采用最小大小。 对于内部闪存、我们可以一次写入1个字节的长度。

    FLASH_MAP_backend-c.c

    /*<返回此`FLASH_Area`s alignment */
    size_t flash_area_align (const 结构 flash_area *fa)
    {
    int ret =-1;
    如果(fa->fa_device_id == flash_device_internal_flash)
    {
    RET = 4;//FlashSectorSizeGet ();            /!!!!!!!!!!!! 2048可能出错、!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!更改为411b

    #ifdef TI_boot_use_external_flash
    如果(fa->fa_device_id == flash_device_external_flash(0))
    {
    REt = EXT_FLASH_PAGE_SIZE;

    #endif /* TI_boot_use_external_flash */
    否则
    {
    /*不正确/不存在的闪存器件 ID */
    RET =-1;

    返回支架;

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

    您好,Arthur M ü,

    有任何更新吗?