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.

[参考译文] CC2340R5:有关 CC2340 ROM 引导加载程序擦除命令(SPI)的问题

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1479469/cc2340r5-question-about-cc2340-rom-bootloader-erase-command-spi

器件型号:CC2340R5
Thread 中讨论的其他器件:UNIFLASH、、 SysConfig

工具与软件:

尊敬的 TI 支持团队:

我致力于在使用时保护闪存中的重要数据 BLDR_CMD_CHIP_ERASE

我启用了闪存保护并进行测试。

我的闪存保护设置如下图所示:

测试场景:

  1. 我在应用程序中启用了闪存保护、并引导至 ROM 引导加载程序。
  2. 主机已将BLDR_CMD_CHIP_ERASE命令发送至器件、并且仅下载了 CCFG。

根据技术参考手册(TRM)的"8.5.3.5 BLDR_CMD_CHIP_ERASE"一节、可以指定在擦除引导加载程序时要保留的某些闪存扇区:

此命令用于执行器件的芯片擦除。 所有主闪存存储体  扇区  可以通过 FCFG 和 CCFG 保护位实现  被擦除 . 一旦组擦除完成、CCFG 被擦除。 此命令首先使 CCFG 无效、然后开始擦除 MAIN 闪存存储体中所有未受保护的扇区。 一旦闪存扇区被擦除、此命令最终擦除 CCFG 的内容。

根据我的闪存保护设置、我的应用程序不应该被擦除。

但是、运行测试后、我发现我的应用程序被擦除。

您能否提供有关在使用时实施适当写保护的指导 BLDR_CMD_CHIP_ERASE?

感谢您的支持。

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

    Weiting、您好!

    请参阅此 类似的 E2E 帖子。  您如何检查该区域是否保留?  应确保 BLDR 主机不覆盖要保护的任何区域(使用 BLDR_CMD_DOWNLOAD_CRC、BLDR_CMD_SEND_DATA 等)。  要检查保留的功能是否有效:

    1. Performa 完整芯片擦除(chip_erase 或其他)。
    2.  再次刷写 CCFG 并向 Uniflash 检查 区域是否已正确更新、并保存预期的闪存以供以后比较。
    3.  只执行 BLDR_CMD_CHIP_ERASE、之后不执行其他 BLDR 命令。
    4. 复位并检查(例如使用 Uniflash)是否保留了预期的闪存区域。

    此致、
    Ryan

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

    您好、Ryan、

    我按照您提供的步骤操作。

        1.Performa 完整芯片擦除(chip_erase 或其他)。

         再次刷写 CCFG 并向 Uniflash 检查 区域是否已正确更新、然后保存预期的闪存以供以后比较。

    这是从 CC2340读取的 CCFG。

          只执行 BLDR_CMD_CHIP_ERASE、之后不执行其他 BLDR 命令。

        重置并检查(例如使用 Uniflash)是否保留了预期的闪存区域。

    我的主机仅执行了 BLDR_CMD_ping 和 BLDR_CMD_CHIP_ERASE 命令。

    之后、Uniflash 会在尝试读取存储器时显示以下错误。

    控制台日志如下所示:
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:不允许进行调试。 如果不符合预期、请检查您的 CCFG。
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:如果您在加载应用时遇到问题、请执行以下操作(这将擦除芯片):
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:- Code Composer Studio:
    [2025/2/27下午2:23:53] [INFO_Cortex_M0P:-结束当前调试会话(如果有任何处于活动状态)。
    [2025/2/27下午2:23:53][INFOC]  Cortex_M0P:- View -> Target Configurations ->右键单击您项目的.ccxml 文件-> Launch Selected Configuration。
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:-右键单击"Debug Probe/Cortex_M0P"并选择"Show All Cores"。
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:-在展开"Non Debuggable Devices"项后选择"Debug Probe/CS_DAP0"项。
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:-脚本-> CC23xx ->芯片擦除以开始芯片擦除。
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:-您现在应该能够将应用加载到目标中。
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:不允许进行调试。 如果这不是预期行为、请检查您的 CCFG。
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:如果不允许调试、目前不支持闪存加载。
    [2025/2/27下午2:23:53] [错误] Cortex_M0P:不允许在应用程序进入时暂停。 您确定允许进行调试吗?
    [2025/2/27下午2:23:53][INFO]  Cortex_M0P:正在运行该应用程序、而不会在该应用程序的入口停止。
    [2025/2/27下午2:23:53] [错误] Cortex_M0P:连接到目标时出错:(错误-1274 @ 0x0)连接序列期间出错。 具体原因未知、但可能是尝试访问由于缺乏电源、时钟或身份验证(即安全措施无法阻止)而无法访问的内核或逻辑的结果。 如果被安全阻止、并且如果支持、则在执行身份验证过程之后可能允许访问。 (仿真软件包20.0.0.3178)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在此状态下、是否有任何 Uniflash 命令能够成功执行?  例如、使用 Uniflash 中的"芯片擦除"功能时、可以从这种情况中恢复吗?  此外、当您在"Settings & Utilities"窗口中使用"Read Device Info"时、会返回什么结果?   

    请提供用于构建 CCFG 映像的 Uniflash 和 SimpleLink SDK 版本。  您是否有特定的 SDK 示例用作参考?  您是否正在将 TI_CC2340_Linux_SBL 用作主机 SBL 工具?

    此致、
    Ryan

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

    您好、Ryan、

    使用 Uniflash 中的芯片擦除功能时、可以从这种情况中恢复吗?


    我发现、在执行"芯片擦除"并尝试读取 Uniflash 中的内存时、它始终显示此错误。
    即使我在擦除之前刷写了测试代码(只打印 UART 日志)。

    此外、当您在"Settings & Utilities"窗口中使用"Read Device Info"时、会返回什么结果?   

    请提供用于构建 CCFG 映像的 Uniflash 和 SimpleLink SDK 版本。


    simplelink_lowpower_f3_sdk_8_10_02_02

    您是否正在将 TI_CC2340_Linux_SBL 用作主机 SBL 工具?

    有。
    我只执行了
    ping() 和  chipErase ()

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

    那么现在是否完全禁止您通过 JTAG 或串行引导加载程序访问器件?

    您尝试在 SysConfig 中修改的设置直接影响 CC2340R5 WEPRA/B 寄存器、 有关更多详细信息、请参阅 TRM 的第7.2.4节闪存

    "只读扇区不能被擦除或者编程、这样可以保护块的内容不被修改。"

    此致、
    Ryan

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

    那么现在是否完全禁止您通过 JTAG 或串行引导加载程序访问器件?


    我可以使用 Uniflash 或串行引导加载程序成功刷写器件。

    但是、执行芯片擦除后、无论闪存写保护设置如何、我都无法读取 Uniflash 中的存储器。

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

    此外、从 8.5.3.5 BLDR_CMD_CHIP_ERASE 开始:"CCFG 中应用的写入/擦除闪存保护(请参阅表9-3)不会影响 ROM 引导加载程序。 如果需要写入/擦除闪存保护、请考虑实施"用户定义的"引导加载程序(请参阅用户定义的引导加载程序指南)"

    因此、闪存保护设置主要影响 SACI。

    此致、
    Ryan