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.

[参考译文] PROCESSOR-SDK-AMIC110:无 DDR 的 EtherCAT 编译

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/686951/processor-sdk-amic110-ddr-less-ethercat-compilation

器件型号:PROCESSOR-SDK-AMIC110
主题中讨论的其他器件:AMIC110TIDEP-0105AM4377

大家好、我们正在使用 Amic110 (DDRless)开发 EtherCAT、我们已经与编译 EtherCAT PRU 相混淆了;

a)在您的文档中,Tidep-0105;

您已完成以下操作:

目前是 SBL
用于无 DDR 模式的(MLO)必须使用此补丁从 Processor SDK v4.2构建。 修补程序不是
Processor SDK RTOS v4.3和更高版本所需。

这意味着我们只能使用 SDK v4.2来使用无驱动模式?

b) SDK v4.2生成 PDK v1.0.9;但在文档中,它还会将其作为波纹管进行注释;

PRU-ICSS-EtherCAT-中包含一个补丁文件、
从站 v1.00.05软件包、位于[install-
/protocols/pdk_patches/04.01.00/AM335x_PDK_1_0_8_thumb_mode.patch

文件 AM335x_pdk_1_0_8_thum_mode 是否可以与 pdk1.0.9一同使用?

c)由于 EtherCAT 封装和 PDK 封装随时间变化、我们不知道哪个版本匹配;

在 EtherCAT 栈1.0.0的用户指南中、有关 PDK、Processor SDK RTOS for AM335x 4.1.0的信息:

我们使用 pdk1.0.9 (与 EtherCAT 栈1.0.5'一起使用)来构建 EtherCAT 完整演示、它会报告奇怪的错误;当我们尝试时、不匹配的动词会导致奇怪的错误;

d)您能否提供每个堆栈或文件匹配的文件以确保项目正确;您的文档 现在对  我们不是显式的。

或者、您能否提供一个我只需要编译的无 ddrless 项目、我们可以使用它、我们甚至不需要下载 PDK 或补丁文件;这是可能的、因为我们已经尝试过  

其他项目。其他公司的 MCU 更易于使用(例如 STM32)。

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Wei、

    有关 AMIC110上的 EtherCAT 无 DDR 模式 SBL、请参阅主题 - e2e.ti.com/.../656996
    遗憾的是、在 PRSDK 4.3中 SBL 仍会损坏。

    对于 EtherCAT 'app'构建、您可以使用默认的 PRSDK4.1 (PDK 1.0.8)或按照部分- processors.wiki.ti.com/.../PRU_ICSS_EtherCAT 进行操作
    构建在 PRSDK 4.2 (PDK 1.0.9)的基础上。

    您必须下载 PRSDK 以构建 EtherCAT 工程、因为 PRSDK 中有许多依赖组件。

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

    我使用补丁 cmd 将文件修补到 PDK 4.2、但它报告错误、如下所示:

    patch.exe -I C:\ti\PRU-ICSS-ETHERCAT_Slave_01.00.05.00\PRSDK_4_2_migration_patch\PRSDK_4_2_migration.patch -d C:\ti\PRU-ICSS-ETHERCAT_Slave_01.00.05.00 -p0

    patch.exe -I C:\ti\PRU-ICSS-ETHERCAT_Slave_01.00.05.00\PRSDK_4_2_migration_patch\PRSDK_4_2_migration.patch -d C:\ti\PRU-ICSS-ETHERCAT_Slave_01.00.05.00 -P1

    我的单词是否有任何问题?谢谢!

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

    在应用之前,您是否在修补程序文件中运行了'unix2dos.exe'? 这与“应用修补程序文件”一节中所述的相同。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢! 我会尝试!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的帮助。 我已经编译了所有文件并将其刻录到我的闪存中;
    在刷写方式中、我发现 FLASH_writer_tool 有问题:
    它使用 DDR-ram 的0xC0000000区域(可能不合理);但我的电路板没有 DDR、所以在进入地址时会崩溃;
    修复后,我可以将文件刻录到闪存中;

    但我还有另一个问题,我已将所有文件刻录到电路板上、并且无法使用 TwinCAT;扫描器件
    如果我使用 XDS-100v3监控 amic110,它将在0x24b1e、0x2375a、0x2377a....处停止 程序正在运行..
    但我不知道它的位置;

    我想知道问题的位置;因为我们的板没有 DDR,我无法使用源代码进行调试;
    是否有任何 met弦 可用于在没有 DDR 的情况下调试代码?

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

    了解 FLASH_WRITE_TOOL 的好方法! 由于我们一直在开发真正具有板载 DDR 的 AMIC110 ICEv2、因此错过了这一机会。

    要在不使用 DDR 的情况下调试代码、您可以执行以下步骤:
    1.创建不附加 GEL 脚本的 CCS 目标配置文件、即选择 AMIC110而不是 IC_AMIC110作为器件、因此当您连接 A8内核时、器件不会复位。 MLO 将初始化器件/板。

    2.连接 A8内核、验证 tesc_EEPROM.bin、ecat_frame_handler.bin 和 ecat_host_interface.bin 是否已正确写入片上存储器、如下所示:-processors.wiki.ti.com/.../PRU_ICSS_EtherCAT
    注意:_ti.bin 文件有8字节的头文件(长度、地址)、因此如果您将存储器与_ti.bin 进行比较、请忽略_ti.bin 文件中的开头8个字节。
    此外、如果从具有 PRU 全局地址0x4a334000、0x4a338000的 A8内核进行检查、则必须连接并停止 PRU 内核以检查 PRU 存储器。

    3.加载.out 文件的*符号*,然后您应该找到 A8内核正在运行的函数。

    默认 EtherCAT_SLAVE_FULL_AMIC110_ARM 仍有更多未使用的片上存储器、因此、如果在发布模式(即-O0)下构建项目而未进行优化并生成调试信息(-g)、则应用程序仍可使用(刷写)、这可能也有助于调试。

    理想情况下、您应该在 AMIC110 ICE v2上对应用进行原型设计、如果不使用 DP83822、调试重点将放在您自己的电路板调通、引脚多路复用和 PHY 配置上。

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

    昨天、我尝试刷写所有 ti_bin 文件并擦除所有闪存文件、但我发现当我使用 xds100v3进行调试时、它始终在0x20000段运行(例如0x23000);

    a)似乎 它不是引导加载程序的地址(bootloader_boot_boot_mcspi_noddr_a8host_release_ti.bin),因为我可以从.map 文件中看到它内部的所有功能都高于 0x40000000;

    因此它尚未进入引导加载程序;但相同的文件对于您的 ic1100板是可以的;

    那么、问题是它无法进入引导加载程序的原因;

    我们的 sysboot 如下所示;

    是否有任何原因会导致引导加载程序启动失败?

    b)顺便说一下、我们使用的闪存芯片不在闪存写入器工具支持的闪存芯片列表的范围内;

    我自己添加了它、因此我可以使用闪存写入器来写入 ti.bin;

    我是否需要修改引导加载程序源以支持闪存芯片?

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

    Wei、

    您是否提到了用于为无 DDR AMIC110更新/重建引导加载程序的线程?  

    如果是、您还可以尝试构建调试版本 SBL、并尝试进入第二个引导加载程序代码、以查看其如何跳回到 ROM 引导加载程序。

    此致、

    Garrett

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

    我已经使用您的指令重建了 SBL;

    我和丹尼阳有联系,我问他要他的档案;

    我用了丹尼阳的垃圾箱而不是我的垃圾箱,这是一样的;

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

    我已经生成了 SBL (bootloader_boot_boot_mcspi_noddr_a8host_debug_ti.bin);

    但我不知道如何调试它;

    因为当我再次为电路板加电时、我是将 SBL 刷写到闪存中还是擦除所有闪存;

    它的地址始终为0x20000 (在第一个引导加载程序的范围内);

    然后、我加载 bootloader_boot_boot_mcspi_noddr_a8host_debug_ti.out、仿真器会报告错误:

    我使用数字示波器来监控 SPI 的时钟在电路板供电时、我们可以看到时钟信号的短周期、

    那么、当 CPU 进入第二个引导加载程序时、是否有任何方法让 CPU 暂停?因此我可以使用.out 文件对其进行调试;

    或者、我们应该调试第一个引导加载程序、以了解程序是否已进入 SBL;

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

    您可以将 PC 寄存器更改为0x402F0400、如果刷写了引导加载程序、则该寄存器是要调试的 SBL 的起始地址。 或者加载 bootloader_boot_boot_mcspi_noddr_a8host_debug.out、而不是 bootloader_boot_boot_mcspi_noddr_a8host_debug_ti.out、后者具有额外的8字节标头(长度、闪存写入加载地址)来调试 SBL。

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

    a)似乎已将所有文件成功刷写到闪存中;

    当我在上电后调试电路板时、它会转到地址0x40308004、并且无法输出;

    我正在使用我自己编译的引导加载程序、以便查看它是哪个函数;

    我使用.out 对其进行调试;

    我是否可以像在 DDR 中使用的那样进行调试?

    现在很难找到问题所在;它只涉及 到问题、无法 获取详细信息;

    b)我无法进行调试以查看预编译应用程序的位置、因为 预编译文件夹中没有.out 文件;

    预编译应用程序似乎与我的应用程序不同;

    c)但上述两个应用程序似乎不正确,因为我无法使用 TwinCAT 扫描设备;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    顺便说一下、EtherCAT_SLAVE_DEMO 是使用版本配置构建的;
    我可以使用此应用程序进行调试;
    但是当我将项目更改为 debug config 时,它生成的.out 和映射文件的地址为0x8000000;
    我是否需要修改其他属性以使其正常工作?
    调试版本是否有助于更轻松地调试代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Wei、

    您的定制板使用哪种类型的 PHY? 它是 TI PHY 吗? 如果没有,则可能需要更新函数 MDIO_getPhyIdentifyStat()中的硬编码0x2000,以指示 PHY 存在。 您可以找到 PHY 应用手册帮助- www.ti.com/.../spracc8.pdf

    EtherCAT_SLAVE_DEMO 项目调试模式使用 DDR。 类似地、您可以使用无 DDR 版本模式重新编译工程、但禁用编译器优化选项进行调试。

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

    器件型号:PROCESSOR-SDK-AMIC110

    我用我的 pinmux 和 phy 地址将 eth 演示项目更改为我的 borad;

    我已确认 phy 重置和 phy 地址。

    现在、在我的电路板上、在以下情况下、我无法扫描 EtherCAT 器件:

    代码 保留在下图中:我是使用闪存写入器工具刷写应用程序、还是使用仿真器将其直接加载到 RAM 中;

    但是、当我将 amic110 EtherCAT 从站演示应用下载到0x20000时;

    然后重新上电 、然后使用仿真器 将我自己的程序(APP)直接加载到 RAM 中;

    然后、该程序能够通过 MDIO 通信部分并转到 ehtercat 任务;

    我能够通过 TwinCAT 扫描器件;

    但我不确定不同之处、

    那么、您能帮我找出问题所在吗?

    非常感谢!

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

    当您将 amic110 EtherCAT 从站演示应用刷写到0x20000并进行下电上电后、默认引脚复用和初始化将生效、这可能会使您的应用通过 MDIO 通信。 您能否尝试擦除所有闪存、然后从 CCS 下载应用程序并检查 Board_getPhyIdentifyStat ()是否卡在 CSL_MDIO_phyRegRead ()上或返回的 regStatus 不等于硬编码0x2000?

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Wei、我想知道您的 AMIC110-ICE 是否在无 DDR 模式下工作? TwinCAT 能否扫描到 TIESC-001? 我配置了 AMIC11x ARM EtherCAT_SLAVE_FULL 工程以在调试模式下连接到仿真器、正常工作 TwinCAT 可以扫描到 TIESC-001、我使用的版本是 CCS7.2 SDK4.1 PRU-ICSS1.0.5我想您遇到的问题也在 MLO 文件中。您是中文吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我是中国人,我的主板有一些无 DDR 模式的问题(无 DDR);在某些情况下,我可以扫描绑带,但当我将应用下载到闪存时,它无法通过 phy 读取进程;

    我将找到问题所在。

    感谢您的建议!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将尝试您的建议;但对于演示应用的 pinmux 和初始化对于我们自己的板不应该正确、但事实是使用此应用后、我可以通过 phy 读取。 这太奇怪了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我擦除了所有闪存,并下载了除我的应用程序之外的所有 ti.bin;然后我使用仿真器来仿真它,它仍然在 phy_read 中残留。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好,我也在使用这个开发板,也许我们也有同样的问题,你能不能打电话,我们可以就这个开发板进行交流,我叫 Zhou Peng,这是我的手机号码15811193667
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    a)现在我已经知道 为什么我卡在 phy_read 中,它不是由 pinmuxdata.c 或硬件引起的,我的配置文件和硬件都是正确的;  

    它是由其他文件引起的、奇怪的是以下位置会影响 phy_read;我需要很长时间才能找到它;(我们的电路板没有 GPIO 2 3或 UART);

    现在、我能够传递 phy_read 正运行的位置和 cotinue;

    b)在我的测试中,我发现 当我第一次 通过模拟器加载程序正常运行时, 当我第二次加载程序时,它会出错!

    这是正常的吗?

    c)我在以下两种模式下测试应用程序:

    1)我将 引导加载程序 ESI_EEPROM  eth_frame eht_host 下载到闪存(不带 app);

    通过仿真器加载应用程序时,它卡在  ESI EEPROM CRC 错误中;然后我无法扫描 TwinCAT 设备;

     使用仿真器加载应用程序似乎会导致  文件从闪存复制到 程序失败。或者 由其他原因导致?

    当我再次加载应用程序时,会出现错误;

    2.我使用闪存和我的应用程序一起闪存上述4个文件;

    当它加电时、我使用仿真器 对它进行仿真、我发现它正常运行、没有 ESI EEPROM 错误;

    但我无法使用电路板扫描 EtherCAT 偏离;

    当我使用仿真器加载应用并再次运行该程序时、我可以扫描 EtherCAT 器件

    加电后首次运行的闪存程序与我使用仿真器加载的应用程序相同;

    为什么 我使用仿真器加载相同的程序会成功?我无法说出原因。

     

    您能帮我解决这些问题吗; 与其他 EtherCAT MCU 相比、尤其是在无 DDR 模式下、发现问题有多大不同;

    最好 的爬梯!

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

    默认情况下、AMIC110工程上的 EtherCAT 在 CCS 调试模式下使用 DDR。 它在您的电路板上工作是否没有任何问题、例如重新加载应用程序? DDR (调试)模式不需要刷写任何二进制文件、如果存在任何硬件/引脚多路复用器配置问题、则更易于调试。

    您是否在 CCS 中重新启动代码时完成了"系统重置"?
    刷写应用程序但无法扫描器件后、是否尝试连接 CCS (不带 GEL 脚本)以查看其何时卡住?
    您可以参考存储器映射(processors.wiki.ti.com/.../PRU_ICSS_EtherCAT )以确保 SBL 正确刷写和引导固件二进制文件和 EEPROM。

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

    a)我们自己的 amic110 borad 没有 DDR,因此我无法使用 DDR 模式进行调试,我知道这更容易;

    我们另一个具有 DDR (am4377) EtherCAT 功能的板现在可以正常工作;

    b)正如我之前所述、 当我尝试在没有 GEL 的情况下连接应用闪盘时、它运行正常、并且已通过所有初始过程(包括 phy 通信和 xml emualted EEPROM 读取);

    但是 、由于我不熟悉您的 EtherCAT PRU 程序、没有 DDR、调试程序很复杂、我不知道问题是什么导致我无法扫描 EtherCAT 器件;

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

    Garrett、

    [引用 USER="Garrett Ding"]如果引导加载程序已刷写,则可以将 PC 寄存器更改为0x402F0400,这是要调试的 SBL 的起始地址。[/引用]

    应用程序的入口点是什么、由于 SBL 在应用程序启动后与应用程序重叠、我认为我们可能需要手动将 PC 设置为应用程序入口点、以查看是否可以运行。

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

    应用程序的.bss 段与 SBL 重叠、因为.bss 段在 SBL 引导应用程序后使用。

    入口点可从存储器映射中找到:

    c_int00 0x402f5900 0xb4.
    *(.c_int00)

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

    >> 使用仿真器加载应用程序似乎导致  文件从闪存复制到 程序失败。还是 其他原因导致的?

    您是否在项目中定义了宏 AMIC11X_ONCHIP_MEM_MODE? ities_EEPROM 由无 DDR 的 SBL 从闪存加载到0x4030F400、因此无需从应用程序 bsp_EEPROM_emulation_init ()重新加载、请参阅

    void bsp_EEPROM_emulation_init (void)

    #ifndef AMIC11X_ONCHIP_MEM_MODE

    此致、Garrett