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.

[参考译文] TMS320F28379D:尝试在独立模式下运行两个 CPU

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1511986/tms320f28379d-trying-to-run-two-cpus-in-stand-alone-mode

部件号:TMS320F28379D
Thread 中讨论的其他器件: SysConfigC2000WARE

工具/软件:

您好、

我有一个程序、它通过 SCI 从两个 CPU 接收命令并在两个 CPU 上响应。 我可以看到 CPU 是否在两个终端上复位/重新启动。

我使用的是"DelfinoTm TMS320F28379D 控制卡 R1.3"。 如果没有启动调试会话、我在下电上电后无法运行此程序。 以下是我采取和尝试的步骤。 当我在一个步骤中提到多个选项时、这意味着我已经尝试了这些步骤中列出的组合的所有排列。

  1.  在卡上 A;SW1处于"10"位置。 位置1为 ON、位置2为 OFF。 这样可使用 XDS100V2板载仿真器进行调试。
  2. 程序将闪存配置为 Active 来构建。
  3. 程序加载为"默认为-> 1代码编写器调试会话"、或加载为"运行->加载->工程名称"。      
    1. 当使用"Debud As..."选项时、我可以看到两个 CPU 在主符号处停止、这可以恢复并正常工作。即使调试会话终止、CPU 也会继续运行   
    2. 使用"Run"选项时、我可以短暂看到 CCS 切换到"Debug"透视图、然后退出。 CPU 未启动。
  4.  我关闭电源(来自基于的电路板)。
  5.  断开 USB 电缆与控制卡的连接。 用于对 XDS100V2进行编程/调试。
  6. 我们尝试了以下所有排列:
    1. A;SW1位置1关闭。 这是为了使 NTRST = 0
    2. SW1这两个位置或都打开。 这是为了将引导配置置于"GetMode"。
    3. 在实践中、我尝试了所有可能的 开关位置组合、以确保不会误认为哪一侧打开或关闭。
  7. 打开电源

我希望终端显示 CPU 已重置并启动程序。

在调试会话中、从查看寄存器来看、我已经确认 Zx 值中没有0x5A。

什么是我的缺失?

该工程基于一个 TI 示例、因此所有配置均与"sci_ex2_sysconfig"相同。

我在 Windows 11 Professional 上运行的是 CCS 12.8.1.00005。 我使用的是"C200Ware_5_04_00_00"和"ti-cgt_c2000_22.6.1.LTS "。

提前感谢。

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

    您好:

    Unknown 说:
    卡上 A;SW1处于"10"位置。 位置1为 ON、位置2为 OFF。 这样可使用 XDS100V2板载仿真器进行调试。

    从启动流程中、似乎您正在尝试执行独立的闪存启动? 如果是、您需要 A:SW1位置1处于关闭状态。

    请按照 controlCARD 用户指南 配置器件以从闪存独立引导:

    您还能分享 controlCARD 开关的图片吗?

    此致、

    马特

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

    尊敬的 Matt:

    感谢您的回答。 我想能够从闪存执行程序(它是否与引导至闪存不同?)。 我想象的步骤是:1)通过 XDS100V2对闪存进行编程;2)从闪存运行程序

    对处理器进行编程后、可以关闭 A:SW1。 (如步骤6A 中所述)

    我也尝试了保持原样、只需拔下电缆。 这就是我所说的尝试所有组合(步骤6-c)

    下面是控制卡 A:SW1位置1处于 ON 位置时的照片:

    通过 XDS100V2对电路板进行编程后、再次将 A:SW1的位置1更改为"off"。

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

    您好、

    我想能够从闪存执行程序(它是否与引导至闪存不同?)

    抱歉、启动 最终目的 闪存==引导 中导出 闪存中

    我在设置中复制了 controlCARD 开关配置、并能够让 LED 闪烁示例正常工作。 您能否确认应用程序的 codestart 位置? 它必须位于0x80000、器件才能引导正确的闪存入口点。

    此致、

    马特

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

    尊敬的 Matt:

    感谢您对此进行研究。 两个 CPU 的 codestart 都位于"00080000"。 至少根据映射文件。

    是否还有其他我应该检查的地方?

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

    您好、

    您能否通过 C2000Ware 中的简单 LED 闪烁示例(C2000Ware_5_04_00_00\driverlib\f2837xd\examples\cpu1\led)尝试此过程 )? 我想排除应用程序出错的可能性。

    此致、

    马特

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

    当然,会做,并保持你发布. 什么类型的应用程序错误会导致这种情况发生? 我也必须对此进行研究。

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

    Matt、

    我从示例中尝试了一个 LED 项目、我只需要让它编程为闪存而不是 RAM、它似乎可以正常工作、即使不翻转 A:SW1、位置1、到 OFF 甚至断开电缆。

    对下一步要看的地方有什么建议吗?

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

    尊敬的 Ehsan:

    我建议通过配置仿真引导寄存器(EMU_BOOTCTRL)来模拟闪存引导。 通过模拟引导至闪存、您可以查看器件的当前状态并调试应用程序无法工作的原因。

    您可以连接到器件并导航至"Scripts">"EMU Boot Mode Select">"EMU_BOOT_FLASH"来轻松完成此操作。 然后、复位 CPU、器件将模拟引导至闪存。 您可以为应用加载符号以进一步调试。

    此致、

    马特

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

    尊敬的 Matt:

    感谢您的建议。
    我按照步骤操作。 CPU 复位后、程序计数器指向_System_post_cinit ()(@0x08369)、我认为这个已经超过 codestart。 我走过去的装配说明似乎在循环。 我通过枚举浏览器检查了"CPU1 EMU_BOOTCTRL Register"的值、似乎具有预期的值:


    0x0B5A 相当于0x5A 的 EMU_KEY 和0x0B 的 EMU_BMODE:

       

    即使逐步执行汇编代码似乎没有进展、恢复它也是可行的。 它以任何速率告诉我复位后、我已经过了任何有问题的符号。

    我是否正确理解了您的建议? 你有什么想法?

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

    您好、

    您能否尝试为您的应用加载符号(即*。out 文件)? 复位器件时、您将在引导 ROM 中执行。 然后、您可以在应用中设置断点以从此处恢复调试。

    此致、
    马特

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

    尊敬的 Matt:

    我尝试了各种排列、包括连接到器件、加载符号和重置 CPU (通过调试菜单和下电上电)、但我不确定执行这些步骤会产生什么结果。 最终,所有这些排列使我进入运行良好且运行良好的 main()的开头。

    重申一下、我唯一的问题是程序在下电上电后无法运行、而无需重新连接仿真器。 即程序本身似乎没有任何问题。 我使用 SysConfig 创建链接器文件

    请您详细说明执行这些步骤的预期结果是什么? 也许我在不知道的情况下跳过一些东西。

    如果我为您上传.out 或.map 文件、这样会有所帮助吗?

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

    您好、

    重申一下、我唯一的问题是、如果不重新连接仿真器、程序在电源关闭后无法运行。 即程序本身似乎没有任何问题。 我使用 SysConfig 创建链接器文件

    我提供了这些步骤、因此您可以模拟引导到闪存来调试器件在下电上电后无法运行程序的原因。 这些步骤将引导您从器件复位一直到运行应用程序。 在使用相同的外部交换机配置进行下电上电后、您能够运行 LED 闪烁示例是很不寻常的、这让我怀疑某些内容不适合该应用。

    如果您可以共享.out 和.map 文件、那会很棒。

    此致、

    马特

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

    谢谢、

    我已在此处上传文件:
    https://windliftllc-my.sharepoint.com/personal/ehsan_windliftllc_onmicrosoft_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fehsan%5Fwindliftllc%5Fonmicrosoft%5Fcom%2FDocuments%2FStandaloneBoot&ga=1

    如果您想让应用正常工作、需要将两个 UART 端子连接到 GPIO22/23 (TX/RX)和 GPIO28/29 (RX/TX)、采用以下设置:

    BR = 115200;

    字长= 8;

    停止模式= 1;

    无奇偶校验。

    要达到该阶段、两个 CPU 都需要运行、因为它们在某个点同步。

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

    您好:

    重申一下、我唯一的问题是、如果不重新连接仿真器、程序在电源关闭后无法运行。 即程序本身似乎没有任何问题。 我使用 SysConfig 创建链接器文件

    在独立运行(没有仿真器)时、如何引导 CPU2? 请参阅 C2000Ware 中的 IPC 示例(C2000Ware_5_04_00_00\driverlib\f2837xd\examples\dual\ipc)、其中显示了如何通过 IPC 从 CPU1应用程序引导 CPU2。

    本用户指南的第2.1.4节详细介绍了 CPU2引导流程的一般流程、尽管该流程特定于 F28P65x 器件寄存器: https://www.ti.com/lit/ug/sprujh3/sprujh3.pdf


    我在访问 SharePoint 时遇到问题。 如果引导 CPU2不是问题、我将通过 E2E 直接消息向您发送电子邮件以发送文件。

    此致、

    马特

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

    尊敬的 Matt:

    感谢您提请我注意 CPU2引导流程。 我已经假设 SysConfig 会搞定、但出于某种原因、处理 CPU2引导流程的行已被注释掉、以及手动将其添加到 main 的说明。 它现在可以独立启动。

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

    尊敬的 Ehsan:

    我很高兴听到这个决议很简单! 感谢您使用该解决方案更新该主题。

    此致、

    马特