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.

[参考译文] CCS/TMS320F28388D:在 CPU2上加载程序时、RAMGS 中的某些位置损坏

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/957753/ccs-tms320f28388d-some-locations-in-ramgs-are-corrupted-when-loading-a-program-on-cpu2

器件型号:TMS320F28388D
主题中讨论的其他器件:TMS320F28377D

工具/软件:Code Composer Studio

您好!

我有一个双核 f28388项目、其中一个项目用于 CM、另一个项目用于 CPU2。 每个内核从闪存执行。 我最近添加了一个 CPU2项目(也从闪存执行)、并且遇到了问题。 在 CCS 中加载 CPU2的行为似乎会导致 RAMGS 中的初始化数据损坏。 初始化的数据来自 CPU1 .out 文件。 CPU2 .out 文件没有对正在损坏的 RAMGS 区域的引用。

此问题似乎与"CCS/TMS320F28377D:CPU2 *。OUT 负载破坏 CPU1使用的 RAM "问题相同。 我按照类似的步骤来证明(或至少强烈建议)、是加载/启动 CPU2的过程导致了问题、而不是运行问题。 此外、如果我分离 CCS 并对电路板(即28388D 控制卡)进行下电上电、则它可以正常启动和运行、并且 RAM GS 的问题区域也可以。

我尝试按照"CCS/TMS320F28377D:CPU2 *。out 加载会破坏 CPU1使用的 RAM "中提供的解决方案进行操作、但它没有帮助。 CCS 加载项目后、所有项目都在"codestart"部分停止、内存仍然损坏。

位置0xD2AE-0xD2C7以及0xD10A 左右。 还有更多、这些只是我注意到的那些。

感谢您的任何帮助!

此致、

镍氢电池

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

    您好!

    我想更正前一个帖子:第一句话应该说:

    我有一个双核 f28388项目、其中一个项目用于 CM、另一个项目用于 CPU1

    (换句话说、CM 和 CPU1在 CPU2出现之前一直保持快乐。)

    此外、我还在 Windows 10上使用 CCS 10.1.0.00010。

    此致、

    镍氢电池

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

    您好、Nik、

    [引用] 我最近添加了一个 CPU2项目(也从闪存执行)、我遇到了问题。 在 CCS 中加载 CPU2的行为似乎会导致 RAMGS 中的初始化数据损坏。 初始化的数据来自 CPU1 .out 文件。 CPU2 .out 文件没有对正在损坏的 RAMGS 区域的引用。 [/报价]

    如果要在闪存中加载代码、则闪存插件使用 GSx RAM 加载 API、因此将覆盖 GSx RAM 中的值。 在 CPU2中加载代码之前、不应在 GSX RAM 中包含任何应用程序数据/代码。  

    此致、

    Vivek Singh

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

    您好、Vivek、

    感谢您的快速、清晰的回答。

    加载 CPU1也会执行相同的操作、因此、如果我的 CPU2程序在 GSx RAM 中具有初始化数据、我将面临类似的问题吗?

    我提出的原因是、我正在尝试可视化一个工作流、以便使用所有三个内核启动调试器。 目前、我有一个调试配置(TMS320F28388D.CCXML)、可加载全部三个内核、这在理论上是很好的、因为单击小错误图标即可设置调试环境。

    现在、我想我必须执行几个步骤-启动调试配置、加载我重建.out 文件的任何内核、在其他内核上加载符号、然后重新启动所有这三个内核。 这听起来是否是最简单的可行序列?

    再次感谢您的帮助。

    镍氢电池

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

    您好、Nik、

    [引用] 加载 CPU1也会执行相同的操作、因此、如果我的 CPU2程序在 GSx RAM 中具有初始化数据、我将面临类似的问题吗? [/报价]  

    没错。 您是否也在闪存和 GSx RAM 中加载代码? 如果是、则应避免这种情况、因为当您独立运行(没有 CCS)时、这将不起作用。 否则、只需确保不在应用程序中初始化 GSx RAM、即可加载所有内核。 您可以进行 VIS IPC 握手。  

    此致、

    Vivek Singh

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

    您好、Vivek、

    GSx RAM 中没有代码、只是初始化数据。 我理解您的说法。 我不知道如何继续、但问题在于__TI_cinit_copy_table 是由 run_cinit()在程序中处理的、我只需确保在闪存插件上次运行后运行。 正如您所说的、IPC 握手也是协调两个内核的好方法。

    在任何情况下、根据您的建议、我现在都能够可靠地将调试器与所有三个内核配合使用。

    感谢你的帮助。

    此致、

    镍氢电池