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.

[参考译文] Linux:带有 CIA402的 EtherCAT 主站示例

Guru**** 2609895 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/650754/linux-ethercat-master-example-with-cia402

Thread 中讨论的其他器件:SYSBIOS

工具/软件:Linux

在"AM335xICEv2 Issue with IGH EtherCAT Master for Linux"主题中 、提到了一个运行示例、该示例使用带有 CIA402的 IGH-EtherCAT Master。 我可以从何处访问该示例?

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

    我还尝试了最新的 EtherCAT 从站应用和用于 AM355x ICE R2.1的 MLO 以及 IGH 主站。
    但器件不会更改为 OP。 激活 OP 期间出错:
    EtherCAT 错误0-0:设置状态 OP 时超时。

    我能否获得一个使用 IGH 主器件的 ICE 运行示例?

    [26885.290384] EtherCAT 调试0:空闲->孤立。
    [26885.290386] EtherCAT 调试0:停止主线程。
    [26885.290743] EtherCAT 调试0:主器件空闲线程正在退出...
    [26885.290747] EtherCAT 0:主线程退出。
    [26885.309981] EtherCAT 0:ecm0的链路状态更改为关断。
    [26885.460990] EtherCAT 0:发布主器件00:1B:21:0F:18:C3。
    [26885.465740] EtherCAT:主模块清理完毕。
    [26887.647723] EtherCAT:主驱动器1.5.2 2eff7c993a63
    [26887.647779] EtherCAT:1个主站等待器件。
    [26887.661373] EC_e1000e:支持 EtherCAT 的英特尔RegisteredPRO/1000网络驱动程序- 1.9.5-k-EtherCAT
    [26887.661375] EC_e1000e:版权所有(c) 1999 - 2012英特尔公司。
    [26887.661389] EC_e1000e 0000:03:00.0:禁用 ASPM L1
    [26887.662151] EC_e1000e 0000:03:00.0:(未注册的 Net_device):中断限制率(ints/sec)设置为动态保守模式
    [26887.661590] EC_e1000e 0000:03:00.0:针对 MSI/MSI-X 的 IRQ 44
    [26887.833187] EtherCAT:接受00:1B:21:0F:18:C3作为主器件0的主器件。
    [26887.977057] EtherCAT 0:启动 EtherCAT 空闲线程。
    [26887.977073] EC_e1000e 0000:03:00.0:(未注册的 Net_device):(PCI Express:2.5GT/s:宽度 x1) 00:1b:21:0f:18:C3
    [26887.977075] EC_e1000e 0000:03:00.0:(未注册的 Net_device):英特尔RegisteredPRO/1000网络连接
    [26887.977164] EC_e1000e 0000:03:00.0:(未注册的 Net_device):Mac:1、PHY:4、PBA 号:D50854-003
    [2688832490] EC_e1000e 0000:03:00.0:(未注册的 Net_device):10/100速度:禁用 TSO
    [26888832494] EtherCAT 0:ecm0的链路状态更改为向上。
    [2688833597] EtherCAT 0:主器件上有1个从器件响应。
    [2688833599] EtherCAT 0:主器件上的从器件状态:PREOP。
    [2688833714] EtherCAT 0:扫描总线。
    [2689.848033] EtherCAT 0:在14ms 内完成总线扫描。
    [2689.848035] EtherCAT 0:使用从器件0作为直流参考时钟。
    [2689.848036] EtherCAT 错误0:计算总线拓扑失败。
    [26893.528390] EtherCAT 0:主调试级别设置为1。
    [26901.712328] EtherCAT:正在请求主器件0...
    [26901.712330] EtherCAT 调试0:空闲->操作。
    [26901.712332] EtherCAT:已成功请求主器件0。
    [26901.712334] EtherCAT 调试0:ecrt_master_create_domain (master = 0xff8800d7892000)
    [26901.712335] EtherCAT 调试0:创建了域0。
    [26901.712338] EtherCAT 调试0:ecrt_master_slave_config (master = 0xff8800d7892000、alias = 0、position = 0、fender_id = 0x0000088f、product_code = 0x4d490002)
    [26901.712340] EtherCAT 调试0:为0:0、0x0000088F/0x4D490002创建从配置。
    [26901.712343] EtherCAT 调试0:0:从站0没有与配置(0x0000088F)匹配的供应商 ID (0xE000059D)。
    [26901.712352] EtherCAT 调试0:0:ecrt_slave_config_create_sdo_sdo_request_err (SC = 0xffffff8800d7988000、索引= 0x1C12、子索引= 0x00、大小= 1)
    [26901.712364] EtherCAT 调试0:0:0:ecrt_slave_config_sync_manager (SC = 0xff8800d7988000、SYNC_INDEX = 0、dir = 1、watchdog_mode = 2)
    [26901.712366] EtherCAT 调试0:0:0:ecrt_slave_config_sync_manager (SC = 0xff8800d7988000、SYNC_INDEX = 1、dir = 2、watchdog_mode = 2)
    [26901.712368] EtherCAT 调试0:0:ecrt_slave_config_sync_manager (SC = 0xff8800d7988000、SYNC_INDEX = 2、dir = 1、watchdog_mode = 1)
    [26901.712371] EtherCAT 调试0:0:ecrt_slave_config_PDO_assign_clear (SC = 0xff8800d7988000、SYNC_INDEX = 2)
    [26901.712373] EtherCAT 调试0:0:0:ecrt_slave_config_PDO_assign_add (SC = 0xff8800d7988000、SYNC_INDEX = 2、PDO_INDEX = 0x1601)
    [26901.712376] EtherCAT 调试0:0:0:ecrt_slave_config_PDO_MAPPING 清晰(SC = 0xffffff8800d7988000、PDO_INDEX = 0x1601)
    [26901.712379] EtherCAT 调试0:0:ecrt_slave_config_PDO_MAPPING 添加(SC = 0xffffff8800d7988000、PDO_INDEX = 0x1601、Entry_INDEX = 0x7010、entry_subINDEX = 0x00、entry_bit_length = 32)
    [26901.712382] EtherCAT 调试0:0:ecrt_slave_config_sync_manager (SC = 0xff8800d7988000、SYNC_INDEX = 3、dir = 2、Watchdog_mode = 2)
    [26901.712384] EtherCAT 调试0:0:0:ecrt_slave_config_PDO_assign_clear (SC = 0xff8800d7988000、SYNC_INDEX = 3)
    [26901.712386] EtherCAT 调试0:0:ecrt_slave_config_PDO_assign_add (SC = 0xff8800d7988000、SYNC_INDEX = 3、PDO_INDEX = 0x1A00)
    [26901.712388] EtherCAT 调试0:0:0:ecrt_slave_config_PDO_MAPPING 清晰(SC = 0xffffff8800d7988000、PDO_INDEX = 0x1A00)
    [26901.712390] EtherCAT 调试0:0:0:ecrt_slave_config_PDO_MAPPING 添加(SC = 0xff8800d7988000、PDO_INDEX = 0x1A00、Entry_INDEX = 0x6000、entry_subINDEX = 0x00、entry_bit_length = 32)
    [26901.7123] EtherCAT 调试0:ecrt_master_slave_config (master = 0xff8800d7892000、alias = 0、position = 0、fender_id = 0x0000088f、product_code = 0x4d490002)
    [26901.712396] EtherCAT 调试0:0:ecrt_slave_config_reg_PDO_entry (SC = 0xff8800d7988000、索引= 0x6000、子索引= 0x00、域= 0xff8800d5fcec0、bit_Position = 0xff8800d70d7e24)
    [26901.712399] EtherCAT 调试0:域0:添加了4个字节、总共4个字节。
    [26901.712400] EtherCAT 调试0:ecrt_master_slave_config (master = 0xff8800d7892000、alias = 0、position = 0、fender_id = 0x0000088f、product_code = 0x4d490002)
    [26901.712403] EtherCAT 调试0:0:ecrt_slave_config_reg_PDO_entry (SC = 0xff8800d7988000、索引= 0x7010、子索引= 0x00、域= 0xff8800d5fcec0、bit_Position = 0xff8800d70d7e24)
    [26901.712405] EtherCAT 调试0:域0:添加了4个字节、总共8个字节。
    [26901.712408] EtherCAT 调试0:0:ecrt_slave_config_dc (SC = 0xffffff8800d7988000、assign_activate = 0x0300、synct_cycle = 500000、synct0_shift = 4400000、synct_cycle = 0、 sync1_shift = 0
    [26901.712419] EtherCAT 调试0:ecrt_domain_external_memory (domain = 0xff8800d5fcecc0、mem= 0xffc90005779000)
    [26901.712421] EtherCAT 调试0:ecrt_master_callback (master = 0xff8800d7892000、send_CB = 0xffffffa0479750、receive_CB = 0xffffffffa0477d20、CB_data = 0xff8800d7892000)
    [26901.712423] EtherCAT 调试0:ecrt_master_activate (master = 0xffffff8800d7892000)
    [26901.712426] EtherCAT 调试0:使用预期的 WC 3添加数据报对。
    [26901.712427] EtherCAT 0:domain0:逻辑地址0x00000000、8字节、预期工作计数器3。
    [26901.712429] EtherCAT 0:数据报域名0-0-main:逻辑偏移量0x00000000、8字节、类型 LRW。
    [26901.712430] EtherCAT 调试0:停止主线程。
    [26901.712436] EtherCAT 调试0:主器件空闲线程正在退出...
    [26901.712441] EtherCAT 0:主线程退出。
    [26901.712443] EtherCAT 调试0:FSM 数据报为 ff8800d7892678。
    [26901.712444] EtherCAT 0:启动 EtherCAT-OP 线程。
    [26901.712458] EtherCAT 调试0:运行线程、FSM 间隔= 1000us、最大数据大小= 11250
    [26901.712461] EtherCAT 调试0:mmap ()
    [26901.712463] EtherCAT 调试0:vMA 故障、virtual_address = 00007f1beab1f000、offset = 0、page = ffea0000a79a48
    [26901.713466] EtherCAT 调试0:已更改配置。
    [26901.713467] EtherCAT 调试0-0:检查系统时间偏移。
    [26901.714472] EtherCAT 调试0-0:直流64位系统时间偏移计算:system_time=26927911363880 (用1000000进行校正)、app_time=26927912043907、diff=680027
    [26901.714475] EtherCAT 调试0-0:未触及时间偏移。
    [26901.715479] EtherCAT 调试0:正在请求 OP...
    [26901.717486] EtherCAT 调试0-0:将状态从 PREOP 更改为 OP。
    [26901.717487] EtherCAT 调试0-0:正在配置...
    [26901.719493] EtherCAT 调试0-0:现在处于初始化状态。
    [26901.719494] EtherCAT 调试0-0:正在清除 FMMU 配置...
    [26901.720498] EtherCAT 调试0-0:正在清除同步管理器配置...
    [26901.721502] EtherCAT 调试0-0:正在清除直流分配...
    [26901.722505] EtherCAT 调试0-0:正在配置邮箱同步管理器...
    [26901.722507] EtherCAT 调试0-0:SM0:Addr 0x1000、大小128、Ctrl 0x26、en 1
    [26901.722509] EtherCAT 调试0-0:SM1:Addr 0x1080、大小128、Ctrl 0x22、en 1
    [26901.725522] EtherCAT 调试0-0:现在在 PREOP 中。
    [26901.725] EtherCAT 调试0-0:SM2:Addr 0x1100、大小4、Ctrl 0x64、en 1
    [26901.725527] EtherCAT 调试0-0:SM3:Addr 0x1400、大小4、Ctrl 0x20、en 1
    [26901.728545] EtherCAT 调试0-0:现在在 SAFEOP 中。
    [26906.725393] EtherCAT 错误0-0:设置状态 OP 时超时。
    [26906.726400] EtherCAT 0:主器件上的从器件状态:SAFEOP。
    [26910.967714] EtherCAT 0:主器件上的从器件状态:SAFEOP + ERROR。
    [26910.968719] EtherCAT 调试0-0:SAFEOP -> SAFEOP +错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Matthias
    很抱歉耽误你的时间。
    没有示例-我们只在 e2e 中提供了简要说明。
    如果您已经按照这些步骤操作-让我们快速检查构建-每个 EtherCAT 从站对 CCS、Processor SDK (也加载 SYSBIOS 和 XDCTOOLS)有特定的版本要求。
    受测版本的 PRU-ICSS EtherCAT 从站用户指南中介绍了这些要求。 不保证其它组合正常工作。
    您能否描述用于 PRU-ICSS EtherCAT、Processor SDK 和 CCS 的版本?
    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好、David

    我使用了预编译 SD 卡映像1.0.5.0。  

    这是 UART 上的输出:  

    StarterWare 引导加载程序
    BOARDInit 状态[0x0]
    SoC:[AM335X]
    磁芯:[A8]
    检测到电路板:[ICE Ver2]
    基板版本:[未知]
    子卡版本:[未知]
    GPIO 实例编号:0
    引脚编号:18

    硬件上未使用 MMC/SD 卡检测引脚
    将应用程序映像从 MMC/SD 卡复制到 RAM
    跳转到 StarterWare 应用程序...


    版本- EtherCAT 从站1.0.5.0
    板名称:A335_ICE
    电路板修订版:2.1AEtherCAT 器件

    SYS/BIOS EtherCAT 演示应用3.3.0旋转开关状态:0

    Matthias

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

    您好、Matthias

    遗憾的是、必须构建启用 CiA_402模式的完整应用程序。

    将 前一篇文章中的 Lyu Frank 步骤转换为当前 的处理器 SDK 和 PRU-ICSS EtherCAT 架构

    请按照 http://processors.wiki.ti.com/index.php/PRU_ICSS_EtherCAT#Building_full_feature_EtherCAT_Slave_Application 中的步骤操作

    将 TIESC_application 的宏值从1修改为0、将 CiA402_device 从0修改为1。

    然后、除了修改 TI_ESC 应用之外、还需要 修改 IGH 主器件(main.c)代码。

    步骤1:必须使用 cia402的 EEPROM 刷写电路板。

    步骤2:必须将正确的 PDO 条目复制到 IGH 主设备的 main.c 文件中。
    sudo EtherCAT cstruct ->是获取 PDO 条目的命令。
    对于 TIESC_application 和 CiA402_device、上述命令的结果将不同

    步骤3:必须使用从步骤2命令获得的地址修改 IGH 主控 main.c 文件中的函数调用"ecrT_SLAVE_CONFIG_REG_PDO_entry"。

    步骤4:编译主代码。
    制造

    David

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

    尊敬的 David:

    我尝试过这些步骤、但没有成功。 下一步应该是编译  building full_feature_EtherCAT_Slave_Application...当我有 SSC 代码时。

    我发现了"最快速的一周"、还有其他一些非常有趣的行为:

    1. 使用预编译 EtherCAT 演示应用 V3.3.0启动 ICE
      1. 它连接到 IGH 1.5.2
      2. 只有一个从器件
    2. 读取 SDOS。 ICE 位于 PREOP 中
      1. EtherCAT SDOS 通过在线字典提供折页输出
        1. SDO 0x1008、"器件名称  " 0x1008:00、r-r-r-、字符串、80位、 "设备名称"
        2. SDO 0x6000、"输入数据" 0x6000:00、r-r-、八位位组_string、32位、 "输入数据"
        3. SDO 0x7010、"输出数据" 0x7010:00、rwrww、octet_string、32位、 "输出数据"
      2. 读取 sdo 的值  
        1. EtherCAT 上载-p 0 0x1008 0 --> SSC-设备
        2. EtherCAT 上传-p 0 0x6000 0 --> SDO 传输因代码0x06070012中止:数据类型不匹配,服务长度参数过高
          1. 也可以使用 -t octet_string 和 -t uint32
        3. 因此、ICE 未连接到正确响应0x6000上的 sdo 请求。 相同类型的0x1008将起作用
    3. 使用 TwinCAT 连接 ICE、无需重新洗澡/重置
      1. TwinCAT 没有 ESI、 它还必须与 IGH 等在线字典配合使用
      2. 扫描 EtherCAT 总线并将 ICE 添加到主站。 TwinCAT 处于配置模式
      3. 对象0x6000 0可读、其值为0x00CCBBAA
      4. 对象0x7010 0是可写的。 LED 是可切换的
    4. 将 ICE 与 IGH 连接、无需重新淋浴/重置
      1. EtherCAT 上传-p 0 -t UINT32 0x6000 0 --> 0xaabbcc00 2864434176
      2. EtherCAT 下载-p 0 -t UINT32 0x7010 0 0x0F ->开关 LED  
      3. EtherCAT 下载-p 0 -t UINT32 0x7010 0 0xf0-->开关 LED
      4. EtherCAT 下载-p 0 -t octet_string 0x7010 0 0xf0  ->开关 LED、但未显示预期结果
      5. EtherCAT 下载-p 0 -t octet_string 0x7010 0 0x0F -->开关 LED 指示灯,但未显示预期结果

    因此,有一个奇迹。 TwinCAT 执行一些魔术配置。 因此、在 TwinCAT 执行某些操作后、IGH 可以读取/写入对象0x6000/0x7010。 写入0x7010只能在类型为 uint32时正常工作。 传播的类型 ocet_string 会传送奇怪的数据。