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/TMS320F28379D:EtherCAT -双核 CPU2 -命令链接器文件-错误#10099-D

Guru**** 2595780 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/666040/ccs-tms320f28379d-ethercat---dual-core-cpu2---command-linker-file---error-10099-d

器件型号:TMS320F28379D
Thread 中讨论的其他器件:TMDSECATCNCD379DcontrolSUITE

工具/软件:Code Composer Studio

您好!

将 EtherCAT 从站 ET1100与双核´m 结合使用时遇到问题。

我有一个应用、其中主程序在 CPU1上成功运行、而从 SSC 创建的 EtherCAT 程序应在 CPU2上运行。 两个程序都将在闪存中编程,并使用***接口。

我已经测试了闪烁演示、它在两个 CPU 上都可以正常工作。

现在、我尝试像在 EtherCAT 从站的应用演示中一样设置配置、但将命令链接器文件修改为 CPU2并更改了预定义符号:

-常规:

-包含选项:

-预定义符号:

-文件搜索路径:

使用此配置、我会遇到以下错误:

因此、对于我来说、如果在 CPU2上使用 EtherCAT 程序、命令链接器文件似乎是n´t 正确的文件。 命令链接器文件的情况下、它的工作正常。 在这种情况下、CPU1的命令链接器文件位于演示应用套件中、可能已经针对此情况进行了修改?

我也必须修改 CPU2的命令链接器文件吗?

此致

Willi Konrad

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

    是的、您必须调整 CPU2的链接器命令文件。 只需查看任何现有的 CPU2示例、并尝试将 EtherCAT 示例 CPU1链接器命令文件中的段映射到 CPU2示例。 仅为 PCU2重新命名和/或重新使用 CPU1示例链接器命令文件可能并不总是有效。

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

    您好、Santosh、

    感谢你的答复。

    我尝试映射、就像您说的那样。 错误消失了、但在 TwinCAT 中无法使 EtherCAT 从站进入运行模式。

    两个 CPU 都在运行、但我的 EtherCAT 卡在 while 环路中、他在该环路中等待直至处于操作模式。 我的三个月也是如此

    这是修改后的命令链接器文件:

    您能否检查命令链接器文件的配置是否正确、以便在 CPU2上运行 EtherCAT 从站?

    非常感谢。

    此致

    Willi Konrad

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

    Willi、

    我认为链接器命令文件不再有任何问题、这对我来说很好。 您还提到程序正在 CPU2上运行。

    您能否确认您是否正在使用 SPI 或 ASYNC16 PDI、并已将外设和 GPIO 的所有权正确分配给 CPU2? 从节点将进入预操作模式而不是 OP 模式、这可能是因为未发生 PDI ISR、在 PDI ISR 中放置一个断点、然后查看是否点击该中断点、如果未检查 IO 配置、软件和硬件。

    您能否确认您是否正在使用 TMDSECATCNCD379D 套件或其他器件?

    此致

    Santosh Athuru

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

    您好、Santosh、

    从节点保持在初始化模式。

    I´m SPI PDI 和 TMDSECATCNCD379D 套件。 我检查了在 CPU1上运行 EtherCAT 程序。 那是可行的。 ´re、我想您´s、我必须将外设和 GPIO 的所有权正确分配给 CPU2。

    在 CPU1上、我分配了 GPIO

    -113 (ESC_SYNC0_GPIO)、

    - 114 (ESC_SYNC1_GPIO)、

    -119 (ESC_EEPROM_Loaded_GPIO)、

    -136 (ESC_SPI_INT_GPIO)、

    -137 (ESC_RESET_ET1100_GPIO)

    连接到 CPU2。 n´t 四个 SPI-C GPIO (122-125)、因为 CPU2没有权限设置 GpioCtrlRegs。 还有其他需要分配的资源吗?

    我必须分配哪个外设?

    InputXbarRegs OutputXbarRegs 也在 CPU1n´t 设置、因为 CPU2没有访问权限。 可能是这样的错误吗?

    -->在 CPU1中设置:

    我发现、该程序卡在这里:

    因为 SPI 接口没有提供任何内容:

    我再也不n´t 如何解决这个问题了。 也许您了解更多信息?

    此致

    Willi Konrad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Willi、
    除了正在执行的操作外,还将***端口分配给 CPU2。 够了。
    在 CPU2上启动应用程序之前、可以在 CPU1本身上完成 GPIOXBAR 连接配置。

    我建议首先在 CPU2上运行 PDI HAL API 测试应用程序、这样您就可以将 HAL 移植到 CPU2、之后在 CPU2上获取堆栈示例将只是一个增量更改。

    另一个论坛用户成功地将示例迁移到 CPU2、因此不应有任何障碍。

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

    您好、Santosh、

    感谢您的建议。 n´t 在 CPU2上运行 PDI HAL API 测试应用程序也不起作用。

    我联系了另一位用户、但他尚未回答。

    也许您可以查看我的代码、如果是。 是否缺失?

    这是我的主文件、我在其中设置 CPU2的配置、然后发送 CPU2的引导命令。

    这应该都是正确的还是缺失的? 这就是 CPU1的全部内容。

    接下来是 CPU2。 在这里、它从 main()函数跳转到 etherCAT_slave_c28_hal.c -文件中的 ESC_initHW ()。

    CPU2就这样。

    该程序在尝试从 SPI 接口读取时卡住、但 SPIn´t 正常工作、因此在 TwinCAT 中、它在 OP-Mode 下运行n´t μ s。

    对于 CPU2、我还具有以下配置:

    CPU2的头 cmd 为非 Bios。 命令 cmd 是针对 CPU2中 EtherCAT 从我处修改的命令、正如您在上述帖子中看到的那样。

    我已经在这里呆了一个星期。 我不n´t 这里有什么问题。

    此致

    Willi Konrad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还遇到了 SCI-A 接口问题。 我使用 echoback 演示并使用 PuTTY 检查数据。 在 CPU1上、其工作正常、但 CPU2再次出现问题。 配置 GPIO 并将外设设置为 CPU1中的 CPU2、然后从闪存引导 CPU2。 现在 PuTTY 中出现了奇怪的迹象(可能是波特率错误?)。 在 CPU2上运行 SPI 时、可能与我的问题有联系?

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

    Willi、

    最好使用 CPU2测试 SCI 并熟悉设置。 您在 CPU2上重新初始化 SCIA、那么您是从 CPU2重新配置 SCIA 上的波特率还是执行自动波特率锁定?

    请参阅以下 TI 参考代码  

     C:\ti\controlSUITE\device_support\F2837xD\V210\F2837xD_Examples_Dual\F2837xD_sci_flash_kernels\cpu01中的文件 SC37xD_examples_Dual\F2837xD_sci_flash_kernels\cpu01具有 一个函数 void Assign_SCIA_IO_CPU2 (uint32 BootMode)。

    上述函数在 CPU1上运行并将 SCIA 分配给 CPU2 (您可以忽略 CLKSEM 配置(第189行)、仅允许 CPU2执行时钟配置需要该函数。

    在本参考设计中、您可以查看 C:\ti\controlSUITE\device_support\F2837xD\V210\F2837xD_examples_Dual\blinky_dc 中的闪烁示例、以了解双核运行。

    希望这对您有所帮助。

    此致
    Santosh Athuru

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

    您好、Santosh、

    感谢您的回答。 我´m 已经完全一样了。 我n´t 这不是那么困难,但这使我感到了一些我不知道的问题。 也许您可以查看我在上面发布的代码。

    波特率将在 CPU2上首次配置、如在 echoback 演示中。

    此致

    Willi Konrad

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

    您好、Santosh、

    我使用 SCI 接口解决了问题。 在 CPU1上运行的 EtherCAT 从站程序具有 SPI-PDI、在 CPU2上运行的是 SCI 程序。

    现在我发现在 SPI 的 init 函数(ESC_initSPIFIFO ())中,寄存器被设置为 ClkCfgRegs.LOSPCP。all = 0x1;

    因此、控制器具有不同的时钟速度、并且 SCI 的波特率不再为n´t 9600。 那么、这是固定的。

    现在、我认为它可能与我在 SPI 方面遇到的问题相同。 如果我在 CPU2上使用 SPI 运行 EtherCAT、可能需要修改 SPI 的波特率?

    在主程序上、我们将具有10MHz 的固定时钟速度。 因此、波特率可能会改变 SPI。

    但是、与 EtherCAT 从站或 TwinCAT 进行通信的正确波特率是多少?

    此致

    Willi Konrad

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

    Willi、

    感谢您的更新。 我宁愿增大 SCI 波特率、而不是触摸 SPI 设置。 为 ET1100正确获取 SPI 时序非常棘手、您不希望 ESC 出现超时、并且尽可能快。 因此、请确保将 SPI 保持在20MHz 并调整 SCI 波特率或增加 SCI 波特率、通过 SCI 端口支持自动波特率的方式、查看是否可以通过将 LOSPCP 配置为 SPI 来使其正常工作?

    有关 SPI 时序的更多信息、请参阅 ET1100数据表。

    此致
    Santosh Athuru