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.

[参考译文] LP-EM-CC2340R5:CC2340R5片上 OAD

Guru**** 2587345 points
Other Parts Discussed in Thread: CC2340R5, LP-XDS110ET, LP-EM-CC2340R5, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1258784/lp-em-cc2340r5-cc2340r5-onchip-oad

器件型号:LP-EM-CC2340R5
主题中讨论的其他器件:CC2340R5LP-XDS110ET、、 UNIFLASH

您好、

我正在运行 CC2340R5示例:C:\ti\simplelink_lowpower_f3_sdk_7_10_00_35\examples\rtos\LP_EM_CC2340R5\ble5stack\bbasic_ble_oad_onchip

当我刷写器件时、它将显示 JTAG Communication Error:

Cortex_M0P:JTAG 通信错误:(错误-615 @ 0x0)目标无法看到格式正确的 SWD 标头。 到目标的连接也许不可靠。 尝试降低 TCLK 设置、然后再重试。              (仿真软件包9.11.0.00128)
Cortex_M0P:在断开连接之前从目标中删除调试状态失败。 程序存储器中仍可能嵌入了断点操作码。 建议您在打开仿真器之前                  在继续调试之前连接并重新加载程序

我尝试使用相同的设置和不同的示例、但未发生此问题。

我想知道为什么会出现这个问题?

我还 在 E2E 中找到了相同的错误消息,并按照 Ryan 所述的步骤操作:  

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1224456/lp-em-cc2340r5-unable-to-program-cc2340-device-via-xds110-debugger/4625946#4625946

当我加载`block_loki_low_plus_Pg2.gel`脚本时、GEL   脚本的状态 将显示 FAILED:

CS_DAP_0:GEL:加载文件'C:\...\UNBLOCK _LOKI_LOW_PLUS_Pg2.GEL'时出错:函数'ChipErase ()'已定义

我应该注释掉 CC23xx_DAP.GEL 中的热菜单 ChipErase ()吗?或者我应该怎么做?

以下是我的测试的详细信息

软件:simplelink_lowpower_f3_sdk_7_10_00_35  basic_ble_oad_onchip

硬件:LP-EM-CC2340R5 PG .........2 + LP-XDS110ET 修订版:B

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

    您好!

    感谢您与我们联系。 您能介绍一下如何刷写代码吗? 是否尝试过使用 Uniflash?

    您是否还能确认我的理解、该问题仅发生在启用了 OAD 的项目上?

    此致、

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

    您好、Clement、

    我通过 CCS 刷写代码、但还没有尝试使用 Uniflash。

    是的、这个问题只在这个项目上发生(basic_ble_oad_onchip)。

    此致、

    Seamus

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

    尊敬的 Seamus:

    请使用 Uniflash 并确保您刷写的是三个必需的映像(mcuboot_onchip、basic_persistent、basic_ble_oad_onchip)。

    此致、

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

    您好、Clement、

    在    SDK 中的哪个位置可以找到 basic_persistent 和 basic_ble_oad_onchip 的映像? 或者我需要自己构建?

    此致、

    Seamus

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

    您好、Clement、

    我按照您的方法成功使用 Uniflash、但我仍然想知道 CCS 中遇到的问题。  

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

    您好、Clement、

    我可以将 mcuboot 和 basic_persistent 下载到我的 LP-CC2340R5并查看其广播情况。 但是、如果我尝试从 CCS12.1调试 basic_persistent、我会看到错误-615如下。 我们如何解决此问题?

    Cortex_M0P:闪存加载程序:CC23xx_flash_library_version 3.17.09.20
    Cortex_M0P:根据[04E020000、0x4E02000B]范围内的数据更新 CRC32字段 cfg.bootcfg.CRC32 @地址0x4E02000C。 值从0x00000000变为0xFFFFFFFF
    Cortex_M0P:更新 CRC32字段 ccfg.CRC32 @地址0x4E02074C、基于[04E020010、0x4E02074B]范围内的数据。 值从0x00000000变为0x4C1584B6
    Cortex_M0P:根据[04E020750、0x4E0207CB]范围内的数据更新 CRC32域 ccfg.userRecord.crc32 @地址0x4E0207CC。 值从0x00000000变为0x15D70E0C
    Cortex_M0P:根据[04E0207D0、0x4E0207FB]范围内的数据更新 CRC32域 ccfg.debugCfg.crc32 @地址0x4E0207FC。 值从0x00000000变为0x527294A2
    Cortex_M0P:GEL 输出:存储器映射初始化完成。
    Cortex_M0P:JTAG 通信错误:(错误-615 @ 0x0)目标无法看到格式正确的 SWD 标头。  到目标的连接也许不可靠。 尝试降低 TCLK 设置、然后再重试。 (仿真软件包9.11.0.00128)
    Cortex_M0P:在断开连接之前从目标中删除调试状态失败。  程序存储器中仍可能嵌入了断点操作码。  建议您在连接前复位仿真器并在继续调试前重新加载程序

    以下为芯片信息供您参考。

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

    大家好、Seamus 和 YiKai、

    该行为可能由 CCFG 设置引起。 默认情况下、OAD 示例会保护闪存的某些部分(例如 CCFG 和其他关键闪存扇区)、以避免意外覆盖这些部分。  

    我建议重新构建映像来禁用这些保护(注意:此建议仅用于调试)、并使用更新后的映像重新刷写器件。

    我无法100%确定、但 CCS 原始问题可能是由于仅刷写 based_persistent 项目导致的空白 CCFG 所致。 在这种情况下、CCFG 被视为无效、器件将达到串行引导加载程序模式。

    我希望这将有所帮助、

    此致、

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

    您好、Clement、

    …CC2340 μ C 让工作变得更轻松真的很令人沮丧、您能给我们演示恢复器件的确切步骤吗? 例如、使用 Uniflash 或任何其他工具来擦除芯片或 CCFG?

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

    以下是 basic_persistent 工程中的默认 ccfg 设置。 看起来没有任何东西阻止调试、但为什么我们得到"JTAG 通信错误:(ERROR -615 @ 0x0)目标无法看到格式正确的 SWD 标头..." 调试和跟踪 based_persistent 项目。 您能向我们展示如何调试和跟踪您的 basic_persistent 和  basic_ble_oad_onchip 项目吗?

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

    您好、

    以下是我建议遵循的调试 based_persistent 应用 c 的步骤(类似的步骤可应用于 basic_ble_oad_on_chip)。

     

    • 我- 构建映像、刷写器件并连接调试器
    1. 构建 basic_persistent 应用
    2. 单击 Debug 按钮-这将导致调试器擦除器件的闪存、然后下载新构建的映像。
    3. 这将导致一个 JTAG 通信错误:(错误-615 @ 0x0)。 这是因为未对 MCUBoot 映像进行编程、这导致地址0x0处的代码无效
    4. 在"Debug"窗口中、右键点击"Texas Instruments XDS110 USB Debug Probe"、然后点击"Connect Target"

     

    • II - 启用"Memory Browser"和"Registers"视图
    1. 单击"View"
    2. 然后选择"Memory Browser"
    3. 再次单击"View"并选择"Registers"

     

    • III- 强制器件执行要调试的映像
    1. 在内存浏览器中、找到图像的入口点。 如果不确定地址、可以利用映射文件(请参阅绿色方块)。
      在所有情况下,都应该在图像的入口点找到 resetVectors 符号。
      对于 basic_ble_persistent 应用程序、入口点为0x6100
    2. 在"Registers"视图中、使用 resetVectors 的第一个值更新 Core Registers > SP 寄存器的值(在本例中为0x20009000)
    3. 在"Registers"视图中、使用 resetVectors 的第二个值更新 Core Registers > PC 寄存器的值(在本例中为0x2C66D)
    4. 在"Registers"视图中、使用 resetVectors 的地址更新 SCB > VTOR 寄存器的值(也是应用的入口点、在本例中为0x6100)
    5. 在 basic_persistent 应用程序中设置断点(例如在 app_main.c 函数 appMain 中调用 BLEAppUtil_init ())、然后点击"Run button"

     

     

     

    注意 :此处提供的步骤仅导致闪存一个应用程序(这是应用程序调试的推荐方法)。 如果必须同时刷写多个应用程序、则应使用 Uniflash。 然后、应按照"调试器指南"中所述的步骤将调试器连接到正在运行的目标。 最后、应应用 II 和 III 中的步骤。

    我希望这将有所帮助、

    此致、

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

    您好、Clement、

    感谢您详细说明这些步骤、我可以使其与您的说明配合工作。 问题是、TI 是否打算稍后在 CCS 中更轻松地实现这一点?

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

    尊敬的 YiPai:

    我不能在公众论坛上评论我们未来的计划,但我相信我们可以在这里找到更方便开发人员的方法。

    感谢您的耐心。

    此致、

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

    您好、Clement、

    好的、感谢您的大力支持。