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.

[参考译文] TMS320F28388D:如何加载和运行 C28x CPU1 和 CM 多核示例工程代码?

Guru**** 2779905 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1610595/tms320f28388d-how-can-i-load-and-run-c28x-cpu1-and-cm-multiple-core-sample-project-codes

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

尊敬的 TI 支持团队:

我导入了 C2000Ware_6_00_00_00\driverlib\f2838x\examples\c28x_cm\ipc\ipc_ex1_basic_c28x1 和 ipc_ex1_basic_cm 示例代码。  

我已经构建了这两个项目。 如何加载和运行工程? 如何验证项目的结果?

我的 CCS 版本为 20.2.0.12。

感谢您的详细说明。

此致、

LIN

 

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

    您好 Lin、

    目标上多核工程的调试步骤如下所示:

    https://software-dl.ti.com/C2000/docs/C2000_Multicore_Development_User_Guide / debug.html  

    此链接提供了有关在 F2838x 器件上运行 IPC 基本多核示例的更多信息:

    https://software-dl.ti.com/C2000/docs/C2000_Multicore_Development_User_Guide / examples.html

    下面的 Academy 工程将指导用户完成 IPC 示例的基本配置和运行。

    https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AX4u1JCujNz1VnDNN1Wl9g__C28X-ACADEMY__1sbHxUB__LATEST

    此致、

    Ozino

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

    尊敬的 Ozino:

    感谢您的回复和所有链接。

    我检查了这些链接、所有信息都基于旧版本的 CCS。 正如我在帖子中提到的、我使用 版本 20.2.0.12 的 CCS。

    如果您可以在您这边导入相同的示例工程、并提供有关构建、加载和运行的具体说明、那么这会更有帮助。

    此致、

    LIN

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

    您好 Lin、

    适用相同的指令、但由于 IDE 发生了变化、看起来有些不同。 请将您的帖子转发给熟悉 CCS Theia 中多核调试的相应专家。

    此致、

    Ozino

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

    感谢您的行动。

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

    LIN、

    您是否可以尝试执行以下操作来运行工程?

    1.确保 CPU1 和 CPU2 工程均已构建并且各自的.out 文件已生成?

    2.在 targetConfigs 文件夹下右键点击.ccxml 文件并启动无工程调试

    3.右键点击 CPU1 并选择 Connect target 连接到 CPU1

    4.在 CPU1 仍突出显示的情况下、将鼠标悬停在顶部横幅中的 RUN 上、然后选择 LOAD。 然后加载相应工程和 CPU1 的.out 文件

    5.运行 CPU1

    6.使用 CPU2 重复步骤 3-5。  

    请告诉我这是否对您有用。

    此致、
    Aj Favela.  

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

    尊敬的 AJ Favela:

    感谢您的详细说明。  

    在第 2) 步中、我应该选择哪个.ccxml 文件? 每个工程都有自己的 targetConfigs 文件夹。  

    现在我手头没有硬件、拿到后、我会尝试启动无工程调试、然后返回给您。

    再次感谢您的答复。

    此致、

    LIN

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

    您好 Lin、

    我的道歉应该更清楚。 在步骤 2 中、请使用 CPU1 .ccxml 文件。

    此致、
    Aj Favela.  

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

    尊敬的 AJ:

    感谢您的澄清。

    我执行了上述 6 个步骤、CPU1 和 CM 都更改为在调试视图中运行。 但是、CPU1 和 CM 侧的任何断点都不会命中。 CPU1 侧的 pass 变量不会更改为 pass = 1;您有任何进一步的建议吗?

    哦、BTW、我使用的是 CPU1 和 CM 双核工程、而不是 CPU1 和 CPU2。

    这里我有一个操作问题。 在上面的步骤 5 中、我是应该先运行 CPU1 还是等到我已连接并加载 CM 代码?

    此外、在 CM 的 targetConfig 文件 Debuggable CPUs 下、还选择了 C28xx_CPU1、是否应该将其更改为 Cortex-M4 0?

    还有其他问题吗?

    在我之前的操作中、我这样做:

    1) 右键点击 CPU1 project、然后选择 Debug Project

    2) 右键点击 Cortex_M4_0、然后选择 Connect Target

    3) 突出显示 Cortex_M4_0、Run -> Load -> Load Program ->选择.out 文件、-> OK

    4) 运行 CPU1

    5) 运行 Cortex_M4_0

    上述过程是否正常? 还是最好遵循您的步骤?

    期待您的进一步指示。

    此致、

    LIN

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

    尊敬的 AJ:

    我这边有一些更新。 如果我在断点位置添加打印命令。 内容可以打印出来。 但是、程序不会在断点处停止。 并且打印内容仅显示一次。

    我是误解了断点设置还是漏掉了代码中的内容?

    谢谢、

    LIN

     

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

    您好 Lin、

    抱歉、我认为您使用的是 CPU1 和 CPU2 示例、而不是 CM 示例。 请给我一些时间与团队讨论您看到的问题。

    此致、
    Aj Favela.   

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

    尊敬的 AJ:

    感谢您的更新。

    如果您或团队成员具有 F28388D 芯片组 EVB、则更好地导入相同的示例项目代码来尝试。 然后、我们将在同一个页面上、您可能会清楚地知道我遇到了什么问题。

    此致、

    LIN

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

    您好 Lin、  

    同时、您是否可以尝试使用我上面概述的步骤运行示例? 在本例中、连接到 CM、而不是 CPU2。  

    对于您的问题、请在连接到 CM 之前先运行 CPU1。

    此致、
    Aj Favela.  

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

    尊敬的 AJ:

    感谢您对我的问题的回答。 是的、我确实按照步骤操作、只是将 CPU2 替换为 CM。

    期待了解更多信息。

    此致、

    LIN

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

    您好 Lin、

    我很抱歉、在我这边设置测试时遇到问题。 我目前没有 F28388D EVD、但是您能否 向我确认是否有与导入的工程分开的“多“文件?  

    此外、此项目是否有任何更改? 或者该工程不受 SDK 的影响吗?

    此致、
    Aj Favela.  

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

    尊敬的 AJ:

    导入示例工程时、在所选文件夹下只能看到  ipc_ex1_basic_c28x1 工程文件。 选择并导入工程后、  CCS Project Explorer 下将有两个单独的工程 ipc_ex1_basic_c28x1 和 ipc_ex1_basic_cm。

    我先测试了示例项目代码、没有对其进行任何更改。 后来我在网上搜索,试图做一些修改,但他们没有帮助。 因此我可以说这些工程未按 SDK 进行更改。

    此致、

    LIN

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

    您好 Lin、

    我让团队中的其他人尝试运行该示例。 他们采取了类似步骤:

    1. 确保 CPU1 和 CPU2 工程均已构建并且各自的.out 文件已生成?

    2.在 targetConfigs 文件夹下右键点击.ccxml 文件并启动无工程调试

    3.右键点击 CPU1 并选择 Connect target 连接到 CPU1

    4. 在 CPU1 仍突出显示的情况下、将鼠标悬停在顶部横幅中的 RUN 上、然后选择 LOAD。 然后加载相应工程和 CPU1 的.out 文件

    请勿运行 CPU1、而是针对 CM 执行步骤 3 和 4。

    6.加载 CM 后、运行 CPU1、然后运行 CM

    最后、您能否确认在观察变量时启用了持续刷新?

    此致、

    Aj Favela.  

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

    尊敬的 AJ:

    如果其他人运行示例项目、他/她能否在此处分享步骤和结果?

    是的、我在“Watch"窗口“窗口中启用了该连续功能。

    此致、

    LIN

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

    尊敬的 Jen:

    我已经获取了一个器件并自己运行了示例。 我可以确认以下步骤允许示例全新利用 SDK 运行。

     1.编译 CPU1 和 CM 工程并确保已生成其各自的.out 文件

    2. 在 targetConfigs 文件夹下右键点击.ccxml 文件并启动无工程调试

    3. 右键点击 F28xx_CPU1 并选择 CONNECT target 连接到 CPU1

     4.在 C28xx_CPU1 仍然突出显示的情况下、将鼠标悬停在顶部横幅上、然后选择“Load"->"Load program"->"workspace"“ program"->"workspace"。“。</s>“ ““然后从相应的工程和 CPU1 (ipc_ex1_basic_c28x1 -> CPU1_RAM -> ipc_ex1_basic_c28x1.out) 加载.out 文件

    5.现在通过点击 Cortex_M4_0 并选择 Connect target 连接到 CM  

    6. 在 Cortex-M4 仍突出显示的情况下、将鼠标悬停在顶部横幅中的“run"上“上、然后选择“load"->"Load program"->"workspace"“ program"->"workspace"。“。</s>“ ““然后从相应的工程和 CPU1 (ipc_ex1_basic_cm -> CM_RAM -> ipc_ex1_basic_cm.out ) 加载.out 文件

    7.点击 Cortex_M4_0 并运行  

    8.当 CPU1 仍在运行时、点击 Cortex_M4_0 并运行

    结果应该是 在运行 CM 工程之前 pass = 0、但在运行 CM 后 pass = 1。 此外、您应该在 CMTOCPU1IPCREPLY 寄存器中看到 0x5555、这表示两者之间发送的 Test_Pass 值

    此致、
    Aj Favela.  

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

    尊敬的 AJ:

    很高兴您获得了器件并可以运行示例代码。

    我按照上述步骤进行了测试(除了第 6 步、它应该仍然突出显示 Cortex_M4_0) 、我看到“Watch"窗口“窗口中的测试次数从 0 更改为 1。

    我仍然想知道您能否在 CPU1 和 CM 侧设置断点? 可以达到这些断点吗? 此外、您能否在 CM 方面通过检查 addr 中的值来确认它是否从 CPU1 接收到数据?

    谢谢。此致、

    LIN

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

    您好 Lin、

    我已经测试、您可以在示例中设置断点并根据 断点在哪个工程中 (CPU1/CM) 单独触发断点。

    此外、代码通过查看 addr 中的值来确认 CM 已从 CPU1 接收到数据。 这是在示例的第 86-100 行中完成的。 CM 项目读取位于基于 CPU1 的地址值处的数据、并确认这是预期的数据。  

    此致、
    Aj Favela.  

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

    尊敬的 AJ:

    我确实看到通过测试从 0 变为 1。 并且可能达到 CPU1 端的断点。 但是、CM 端的断点(例如 IPC_ISR0 () 内部)永远不会被命中。

    此外、CUP1 运行后、当我运行 CM 时、代码将在以下 driverlib 函数处停止:  

    静态内联 void
    IPC_waitForFlag(IPC_Type_t ipcType、uint32_t 标志)
      while ((ipc_instance[ipcType].ipc_sts Flag_Ctr_Reg -> ipc_sts & flag)== 0u)
      {
      }
    }
    继续运行代码时、PASS 将从 0 更改为 1。
    您是否会得到相同的结果? 代码为什么会停在 driverlib 函数? 是否存在时序问题?
    谢谢。此致、
    LIN
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Lin、  

    虽然无法精确地达到 IPC_ISR0 () 行上的断点,但实际代码行内的断点可以像我刚刚测试过的那样。  

    此外、两个示例的 CM 端均未调用此 driverlib 函数。  这是您自己添加的行吗? 这些代码行似乎是直接来自 ipc.h 文件。  

    此致、
    Aj Favela.  

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

    尊敬的 AJ:

    感谢您的答复。

    否、我没有在示例代码中添加任何代码行。 是的、该函数在 ipc.h 中定义并由 CPU1 调用。 我不知道我的操作有什么问题。

    此致、

    LIN

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

    您好 Lin、

    在我使用此示例时、代码不会在任何 driverlib 函数处停止、除非存在强制执行此操作的断点。

    您能告诉我这个 driverlib 函数在您的示例中被调用的位置吗? 因为我的示例版本中没有此符号。

    此致、
    Aj Favela.