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.

[参考译文] CC2651R3:使用 Project Zero 在 CC2651R3 上使用 8MB 外部闪存无法引导 OAD 映像

Guru**** 2381030 points
Other Parts Discussed in Thread: CC2651R3, UNIFLASH, CC2651P3
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1526983/cc2651r3-oad-image-not-booting-with-8mb-external-flash-on-cc2651r3-using-project-zero

器件型号:CC2651R3
主题中讨论的其他器件: UNIFLASHCC2651P3

工具/软件:

尊敬的 Texas Instruments 支持团队:

我正在使用、

CCS 版本  - 12.7.

SDK 版本   simplelink_cc13xx_cc26xx_sdk_7_41_00_17

编译器版本  - TI Clang v3.2.0 LTS

我目前正在基于project_zero CC2651R3 的示例从事一个项目、并集成了 8MB 外部闪存 存储器、而不是默认的 1MB 闪存。 外部闪存 (1MB 和 8MB) 来自同一制造商、支持相同的命令集。

我已对工程进行了必要的更改以适应新的闪存大小、包括对以下内容的更新(请参阅随附的屏幕截图)

  • project_zero.syscfg

     

  • flash_interface.h

    /* flash_interface.h */
    
    /*!
     * Total size of external flash
     */
    //#define EFL_FLASH_SIZE                      0x100000
    #define EFL_FLASH_SIZE                      0x800000

将固件刷写到器件中后、我尝试使用进行 OAD(无线下载)更新 BTool 和主机器件 。 根据 BTool 的日志、OAD 过程成功完成、但 设备未引导至新固件 。 复位后、器件仍运行之前使用 UniFlash 刷写的旧固件。

为了验证闪存功能、我通过成功执行擦除、写入和读取操作(包括写入和读取大小高达 1MB 的数据)来测试了 8MB 闪存。 到目前为止、闪存似乎在基本操作中按预期工作。

支持请求:

请您帮忙确定一下 导致此行为的原因 、其中 OAD 已成功完成、但新映像未引导? 在 CC2651R3 上使用大于 1MB 的外部闪存进行 OAD 时、是否需要任何其他注意事项或配置?

非常感谢您提供的任何指导或见解。

此致、
Rajnish Singh

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

    您好:

    感谢您联系我们! 这当然是奇怪的行为。 您是否已将新固件映像的版本号更改为大于当前映像的版本号? 这一点至关重要、因为如果没有它、器件将无法引导新映像。

    此致、

    Tarek

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

    尊敬的 Tarek:

    感谢您的答复和有用的意见!

    您完全正确地询问版本控制 — 我们已确保新的固件映像版本比当前运行的映像更高。

    经过更深入的调查、我发现问题实际上与 2MB 以上的闪存器件支持相关。 具体而言、引导映像管理器 ()bim_offchip_LP_CC2651P3 项目最初不能识别 8MB 外部闪存、除非它被明确添加到以下文件中的闪存信息表中:

    路径: ExternalFlash -> ext_flash.c
    静态表: static const ExtFlashInfo_t flashInfo[]

    在该表中添加一个 8MB 闪存条目后、OAD 就按预期运行。 这是表的更新部分、其中添加了条目:

    /* ext_flash.c */
    
    // Supported flash devices
    static const ExtFlashInfo_t flashInfo[] =
    {
        {
            .manfId = 0xC2,         // Macronics MX25R6435F
            .devId = 0x17,
            .deviceSize = 0x800000  // 8 MByte (64 Mbit)
        },
        {
            .manfId = 0xC2,         // Macronics MX25R3235F
            .devId = 0x16,
            .deviceSize = 0x400000  // 4 MByte (32 Mbit)
        },
        {
            .manfId = 0xC2,         // Macronics MX25R1635F
            .devId = 0x15,
            .deviceSize = 0x200000  // 2 MByte (16 Mbit)
        },
        {
            .manfId = 0xC2,         // Macronics MX25R8035F
            .devId = 0x14,          //
            .deviceSize = 0x100000  // 1 MByte (8 Mbit)
        },
        {
            .manfId = 0xEF,         // WinBond W25X40CL
            .devId = 0x12,
            .deviceSize = 0x080000  // 512 KByte (4 Mbit)
        },
        {
            .manfId = 0xEF,         // WinBond W25X20CL
            .devId = 0x11,
            .deviceSize = 0x040000  // 256 KByte (2 Mbit)
        },
        {
            .manfId = 0x0,
            .devId = 0x0,
            .deviceSize = 0x0
        }
    };

    通过此更新以及前面提到的project_zero.syscfg和更改flash_interface.h、我现在可以在 8MB 外部闪存器件上成功执行 OAD。

    再次感谢您的支持!

    此致、
    Rajnish Singh

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

    你好 Rajnish、

    我很高兴在这里它的工作!

    此致、

    Tarek