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:CC2340R5:UniFlash 无法对 Zephyr 十六进制进行编程(错误–2130、CCFG 问题)

Guru**** 2874030 points

Other Parts Discussed in Thread: UNIFLASH, CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1640133/cc2340r5-cc2340r5-uniflash-fails-to-program-zephyr-hex-error--2130-ccfg-issue

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

您好、

我尝试zephyr.hex使用 UniFlash 将 Zephyr 生成的 SimpleLink 固件 () 刷写到基于 Texas Instruments CC2340R5 的定制电路板上。

消息

  • 器件:CC2340R5(定制电路板)
  • 调试探针:XDS110(来自 CC1352R1 LaunchPad)
  • 工具:UniFlash(仿真包 20.5.0.3900)。 还尝试了 CC Studio
  • 图像:Zephyrzephyr.hex(SimpleLink 目标)。 还尝试了 CC Studio 中的示例代码
  • 使用的 UniFlash 配置:
    image.png

观察结果

  1. “Read Device Info“(读取器件信息)工作正常
  2. “Perform blank Check“(执行空白检查)确认器件为空
  3. 芯片擦除成功完成
  4. 刷写失败、并显示以下日志:
image.png

其他说明

  • TCLK 已经缩减至 1MHz
  • 正确且稳定地为器件供电
  • 相同的设置能够:
    • 连接到目标
    • 读取器件信息
    • 执行空白检查

问题

  1. 为什么闪烁失败? 是否缺少任何步骤?

谢谢。

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

    尊敬的 Nafih:

    此处是 Zephyr 项目设置 SLA 的链接。  建议使用默认的 CCS 和 Uniflash 加载设置。  您能否共享生成的 Zephyr.hex 文件?  您知道此图片是否适用于 LP-CC2340R5 EVM?

    还尝试了 CC Studio
    的示例代码

    如果 SimpleLink F3 SDK 的示例代码 也失败、则这可能是定制电路板上的 SWD 线路出现问题。  您可以考虑提交至 SIMPLELINK-2-4GH-DESIGN-REVERS 以进行进一步审查。

    此致、
    Ryan

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

    您好、Ryan、

    感谢您的快速响应。 我按照您分享的同一指南设置工程、并尝试在 CCS 和 UniFlash 中使用建议的设置。  

    我们还没有 LP-CC2340R5 EVM。 一个是在路上,我们将在它到达和报告后对其进行测试。

    我将分享三个十六进制文件:

    • 前两个(CCS 中的“空白/无 RTOS“样片和 Zephyr SimpleLink 闪烁)可以刷写到电路板上、但闪烁偶尔会失败。

    • 第三个波形由 Zephyr SimpleLink 下游生成、始终无法刷写。

    我还分享了 uniflash 工具的 ccxml 文件。 如果您需要任何其他详细信息、敬请告知。

    e2e.ti.com/.../ti_5F00_hex_5F00_files.tar.gz

    编辑:我提到两个十六进制文件偶尔无法闪存。 下面是这些尝试的日志(第一次成功,第二次失败,然后再次成功)。

    [INFO 2026年25月04日、13:17:56] [INFO] Cortex-M0P:正在执行芯片擦除
    [NVM 2026年25月04日、13:18:02] [info] Cortex-M0P:写入闪存@长度为 0x000015f0 的地址 0x00000000
    2026年25月04日、13:18:04] [info] Cortex-M0P:正在执行芯片擦除
    2026年25月04日、13:18:04][info]  Cortex-M0P:写入闪存@长度为 0x00000800 的地址 0x4e020000
    [GEL 2026年25月04日、13:18:06] [info] Cortex-M0P:GEL 输出:存储器映射初始化完成。
    2026年25月04日、13:18:06] [SUCCESS]程序加载成功完成。
    [NVM 2026年25月04日、13:18:18] [info] Cortex-M0P:写入闪存@长度为 0x000015f0 的地址 0x00000000
    2026年25月04日、13:18:19] [info] Cortex-M0P:正在执行芯片擦除
    2026年25月04日、13:18:19] 【错误】SEC_AP:在长度 0x200 的第 0 页的 0x0 处写入存储器块时遇到问题:(错误–2130 @ 0x0)无法访问器件存储器。 验证存储器地址是否在有效存储器中。 如果错误仍然存在、请确认配置、对电路板执行下电上电、和/或尝试更可靠的 JTAG 设置(例如下部 TCLK)。 (仿真包 20.5.0.3900)
    [CORTEX 2026年25月04日、13:18:19] 【错误】CORTEX_M0P:文件加载器:存储器写入失败:目标写入 0x00000 失败
    [CCFG 2026年25月04日、13:18:19] 【错误】Cortex-M0P:当擦除类型为“芯片擦除“时、映像必须包含(大小正确)个 CCFG 部分
    [CPU 2026年25月04日、13:18:19] 【错误】CS_DAP_0:读取寄存器 CFGAP.DEVICESSTATUS 时出现问题:(错误–2131 @ 0x2010C)无法访问器件寄存器。 重置器件、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电、和/或尝试更可靠的 JTAG 设置(例如下 TCLK)。 (仿真包 20.5.0.3900)
    2026年25月04日、13:18:27] [info] Cortex-M0P:正在执行芯片擦除
    [NVM 2026年25月04日、13:18:31] [info] Cortex-M0P:写入闪存@长度为 0x000015f0 的地址 0x00000000
    2026年25月04日、13:18:32] [info] Cortex-M0P:正在执行芯片擦除
    2026年25月04日、13:18:33] [info] Cortex-M0P:写入闪存@长度为 0x00000800 的地址 0x4e020000
    2026年25月04日、13:18:33] 【错误】SEC_AP:在长度 0x201 第 0 页的 0x0 处写入存储器块时遇到问题:(错误–2130 @ 0x600)无法访问器件存储器。 验证存储器地址是否在有效存储器中。 如果错误仍然存在、请确认配置、对电路板执行下电上电、和/或尝试更可靠的 JTAG 设置(例如下部 TCLK)。 (仿真包 20.5.0.3900)
    [NVM 2026年25月04日、13:18:33] 【错误】Cortex-M0P:文件加载程序:终止闪存编程失败:目标写入 0x00000 失败
    2026年25月04日、13:18:45] [info] Cortex-M0P:正在执行芯片擦除
    [NVM 2026年25月04日、13:18:49] [info] Cortex-M0P:写入闪存@长度为 0x000015f0 的地址 0x00000000
    2026年25月04日、13:18:51] [info] Cortex-M0P:正在执行芯片擦除
    2026年25月04日、13:18:51] [info] Cortex-M0P:写入闪存@长度为 0x00000800 的地址 0x4e020000
    [GEL 2026年25月04日、13:18:53] [info] Cortex-M0P:GEL 输出:存储器映射初始化完成。
    2026年25月04日、13:18:53] [SUCCESS]程序加载成功完成。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    问题已解决。

    zephyr.hex在 CC2340R53 LaunchPad 上测试了相同的器件并成功刷写、因此问题出在定制电路板上的 SWD 线路。

    还有一个问题:生成的zephyr.bin文件异常大 (~1.21 GB)、比十六进制文件大得多。 这是预料之中的、还是二进制文件的生成方式出现问题?

    谢谢。

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

    感谢您的更新。  二进制文件中没有空洞、并且 CCFG 与 MAIN 闪存单独存储。  因此、如果映像包含应用程序和 CCFG、则二进制文件将非常大、而十六进制文件可能会利用存储器中的漏洞。  每次都不需要对 CCFG 进行编程、但 任何批量擦除命令都将清除 CCFG 内容。  tiarmobjcopy 工具 是 TI CLANG 编译器的一部分、能够使用.out 文件生成二进制映像、这些文件将排除应用程序或 CCFG。  以下是 CCS 中的一个示例(您的实现因 Zephyr 环境而异)。

    C:/ti/ccs2040/ccs/tools/compiler/ti-cgt-armllvm_4.0.4.LTS/bin/tiarmobjcopy zephyr.out --output-target binary zephyr-no-ccfg.bin --remove-section=.ccfg
    C:/ti/ccs2040/ccs/tools/compiler/ti-cgt-armllvm_4.0.4.LTS/bin/tiarmobjcopy zephyr.out --output-target binary ccfg_CC2745R10.bin --only-section=.ccfg

    因此、您可以创建多个二进制文件并同时加载它们

    此致、
    Ryan