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.

[参考译文] TMDSCNCD28P65X:TMDSCNCD28P65X:CAN't DEBUG on CCS 12.8.1

Guru**** 2482225 points
Other Parts Discussed in Thread: TMDSCNCD28P65X, C2000WARE, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1443896/tmdscncd28p65x-tmdscncd28p65x-can-t-debug-on-ccs-12-8-1

器件型号:TMDSCNCD28P65X
主题中讨论的其他器件: C2000WAREUNIFLASH

工具与软件:

尊敬的 TI 团队:

我正在学习 TMDSCNCD28P65X 控制卡、并尝试使用 CCS 版本对 C2000Ware_5_04_00_00中的一些示例代码进行编程、代码为12.8.1.00005

我已经导入了示例项目: gpio_ex1_setup。 并会成功构建。  

但 我无法成功加载它。  CCS 日志如下所示:

""""""

C28xx_CPU1:GEL 输出:
存储器映射初始化完成
C28xx_CPU1:GEL 输出:... DCSM 初始化启动...
C28xx_CPU1:GEL 输出:……DCSM 初始化完成……
C28xx_CPU1:GEL 输出:
CPU2已退出复位并配置为等待引导。
(如果您先前已连接、可能必须恢复 CPU2以到达等待引导循环。)
C28xx_CPU1:如果在一个内核上完成擦除/编程(E/P)操作、则另一个内核不应从共享 RAM (SR)执行、因为它们用于 E/P 代码。 对所选的闪存组进行编程后、可以从 SR 开始执行用户代码。
C28xx_CPU1:只有 CPU1片上闪存插件可以为 CPU1和 CPU2闪存操作配置时钟。 当调用 CPU1闪存操作时、插件会自动配置 PLL。 但是、如果用户只想执行 CPU2闪存操作而不在当前会话中执行 CPU1操作、则应在调用 CPU2闪存操作之前点击 CPU1的片上闪存插件中的"Configure Clock"按钮。 使用该按钮时、闪存插件会在200MHz 处使用 INTOSC 作为时钟源来配置 CPU1/CPU2的时钟。 插件将保留这样的 PLL 配置、用户应用程序应根据应用程序的要求配置 PLL。
C28xx_CPU1:在使用闪存插件执行任何闪存操作之前、(a)请选择应将哪些闪存组映射到哪个 CPU (CPU1与 CPU2)-此选择应在 CPU1闪存插件 GUI 中完成。 (b)请选择用户想要擦除闪存插件的闪存存储体(在 CPU1闪存插件 GUI 和 CPU2闪存插件 GUI 中)
C28xx_CPU1:GEL 输出:... DCSM 初始化启动...
C28xx_CPU1:GEL 输出:……DCSM 初始化完成……
C28xx_CPU1:GEL 输出:
CPU2已退出复位并配置为等待引导。
(如果您先前已连接、可能必须恢复 CPU2以到达等待引导循环。)
C28xx_CPU2:GEL 输出:

RAM 初始化完成

C28xx_CPU2:GEL 输出:
存储器映射初始化完成
C28xx_CPU2:如果在一个内核上完成擦除/编程(E/P)操作、则另一个内核不应从共享 RAM (SR)执行、因为它们用于 E/P 代码。 对所选的闪存组进行编程后、可以从 SR 开始执行用户代码。
C28xx_CPU2:只有 CPU1片上闪存插件可以为 CPU1和 CPU2闪存操作配置时钟。 当调用 CPU1闪存操作时、插件会自动配置 PLL。 但是、如果用户只想执行 CPU2闪存操作而不在当前会话中执行 CPU1操作、则应在调用 CPU2闪存操作之前点击 CPU1的片上闪存插件中的"Configure Clock"按钮。 使用该按钮时、闪存插件会在200MHz 处使用 INTOSC 作为时钟源来配置 CPU1/CPU2的时钟。 插件将保留这样的 PLL 配置、用户应用程序应根据应用程序的要求配置 PLL。
C28xx_CPU2:在使用闪存插件执行任何闪存操作之前、(a)请选择应将哪些闪存组映射到哪个 CPU (CPU1与 CPU2)-此选择应在 CPU1闪存插件 GUI 中完成。 (b)请选择用户想要擦除闪存插件的闪存存储体(在 CPU1闪存插件 GUI 和 CPU2闪存插件 GUI 中)
C28xx_CPU2:文件加载程序:验证失败:地址0x00A800处的值@程序不匹配请验证目标存储器和存储器映射。
C28xx_CPU2:GEL:文件:D:\Project\Tesseract\TI P65 test\GPIO_ex1_setup\CPU1_RAM\GPIO_ex1_setup.out:发生数据验证错误、文件加载失败。

""""""

但是、我可以使用 UniFlash 加载并验证固件。 (版本8.8.1.4983)

 有人可以 帮助检查和解决它吗?

为什么 CCS 无法调试和加载固件?

谢谢。

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

    Jerry、您好!  

    [报价用户 id="531068" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1443896/tmdscncd28p65x-tmdscncd28p65x-can-t-debug-on-ccs-12-8-1 ]C28xx_CPU2:文件加载程序:验证失败:地址0x00A800处的值@程序不匹配请验证目标内存和内存映射。
    C28xx_CPU2:GEL:文件:D:\Project\Tesseract\TI P65 test\GPIO_ex1_setup\CPU1_RAM\GPIO_ex1_setup.out:发生数据验证错误、文件加载失败。[/QUOT]

    目标配置文件似乎正在尝试加载到 CPU2。 这是您尝试实现的目标吗?  

    您能否仔细检查目标配置文件设置? 确保将其设置为"Active (活动)"。 您可以右键单击此.ccxml、然后单击"Set to as Active Target Configuration"。

    通过转到以下设置、仔细检查调试配置。

    转至调试配置...

    在"Program"选项卡下、确保为 CPU1加载了正确的程序。

    CPU2不应被填满

    然后单击错误图标、再次尝试调试您的应用

    此致、  

    Ryan Ma

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

    您好、Ryan

    感谢您的答复。

    我已将其设置为活动目标配置。



    和调试配置设置与您的设置相同。

    但它仍然具有相同的故障。

    我还需要检查其他设置吗?

    此致。

    Jerry

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

    Jerry、您好!

    在下面的红色框中、您能检查 CPU2的设置吗? 除非您为 CPU2指定了特定的程序、否则请确保没有程序。

    此致!

    Ryan Ma

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

    您好、Ryan

    我已经按照如下所示的 CPU2设置进行了操作。 (仅针对 CPU1加载)并且看起来可以加载到芯片中。

       

    日志如下所示:

    """"""""""

    C28xx_CPU1:GEL 输出:
    存储器映射初始化完成
    C28xx_CPU1:GEL 输出:... DCSM 初始化启动...
    C28xx_CPU1:GEL 输出:……DCSM 初始化完成……
    C28xx_CPU1:GEL 输出:
    CPU2已退出复位并配置为等待引导。
    (如果您先前已连接、可能必须恢复 CPU2以到达等待引导循环。)
    C28xx_CPU1:如果在一个内核上完成擦除/编程(E/P)操作、则另一个内核不应从共享 RAM (SR)执行、因为它们用于 E/P 代码。 对所选的闪存组进行编程后、可以从 SR 开始执行用户代码。
    C28xx_CPU1:只有 CPU1片上闪存插件可以为 CPU1和 CPU2闪存操作配置时钟。 当调用 CPU1闪存操作时、插件会自动配置 PLL。 但是、如果用户只想执行 CPU2闪存操作而不在当前会话中执行 CPU1操作、则应在调用 CPU2闪存操作之前点击 CPU1的片上闪存插件中的"Configure Clock"按钮。 使用该按钮时、闪存插件会在200MHz 处使用 INTOSC 作为时钟源来配置 CPU1/CPU2的时钟。 插件将保留这样的 PLL 配置、用户应用程序应根据应用程序的要求配置 PLL。
    C28xx_CPU1:在使用闪存插件执行任何闪存操作之前、(a)请选择应将哪些闪存组映射到哪个 CPU (CPU1与 CPU2)-此选择应在 CPU1闪存插件 GUI 中完成。 (b)请选择用户想要擦除闪存插件的闪存存储体(在 CPU1闪存插件 GUI 和 CPU2闪存插件 GUI 中)
    C28xx_CPU1:GEL 输出:... DCSM 初始化启动...
    C28xx_CPU1:GEL 输出:……DCSM 初始化完成……
    C28xx_CPU1:GEL 输出:
    CPU2已退出复位并配置为等待引导。
    (如果您先前已连接、可能必须恢复 CPU2以到达等待引导循环。)
    C28xx_CPU2:GEL 输出:

    RAM 初始化完成

    C28xx_CPU2:GEL 输出:
    存储器映射初始化完成
    C28xx_CPU2:如果在一个内核上完成擦除/编程(E/P)操作、则另一个内核不应从共享 RAM (SR)执行、因为它们用于 E/P 代码。 对所选的闪存组进行编程后、可以从 SR 开始执行用户代码。
    C28xx_CPU2:只有 CPU1片上闪存插件可以为 CPU1和 CPU2闪存操作配置时钟。 当调用 CPU1闪存操作时、插件会自动配置 PLL。 但是、如果用户只想执行 CPU2闪存操作而不在当前会话中执行 CPU1操作、则应在调用 CPU2闪存操作之前点击 CPU1的片上闪存插件中的"Configure Clock"按钮。 使用该按钮时、闪存插件会在200MHz 处使用 INTOSC 作为时钟源来配置 CPU1/CPU2的时钟。 插件将保留这样的 PLL 配置、用户应用程序应根据应用程序的要求配置 PLL。
    C28xx_CPU2:在使用闪存插件执行任何闪存操作之前、(a)请选择应将哪些闪存组映射到哪个 CPU (CPU1与 CPU2)-此选择应在 CPU1闪存插件 GUI 中完成。 (b)请选择用户想要擦除闪存插件的闪存存储体(在 CPU1闪存插件 GUI 和 CPU2闪存插件 GUI 中)

    """"""""""

    但当我尝试运行调试时、它将始终跳转到 ESTOP0。

    我还需要检查其他设置吗?

    此致。

    Jerry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="531068" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1443896/tmdscncd28p65x-tmdscncd28p65x-can-t-debug-on-ccs-12-8-1/5549916 #5549916"]

    但当我尝试运行调试时、它将始终跳转到 ESTOP0。

    [报价]

    Jerry、您好!  

    您是否添加了 ESTOP0? 这是软件断点、将在调试器连接时使 CPU 暂停。 在原始示例中没有 ESTOP0。

    如果您不希望 CPU 暂停、而是保留空的 while 循环、您是否可以删除该 ESTOP0。

    此致!

    Ryan Ma

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

    您好、Ryan、

    该工程来自原始 C2000Ware 示例。 我没有修改任何代码。

    但是、一旦我加载了正确的固件、它就不会卡在 ESTOP0上。 我想我可能会犯有关调试目标的错误。

    正如您所说、仅将 FW 加载到 CPU1。 CPU2保持为空、则可以执行此示例代码。

    感谢您的帮助。

    此致。

    Jerry