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.

[参考译文] SK-AM62A-LP:在具有 IGH 堆栈的 AM62A 上安装本机 EtherCAT 驱动程序时出现问题

Guru**** 2416110 points
Other Parts Discussed in Thread: SYSCONFIG, TFP410

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1531493/sk-am62a-lp-issue-with-native-ethercat-driver-installation-on-am62a-with-igh-stack

器件型号:SK-AM62A-LP
主题中讨论的其他器件:SysConfigTFP410

工具/软件:

尊敬的专家:

我目前正在努力使用 EtherCAT IGH 主站堆栈在 AM62Ax 平台上集成 EtherCAT 本机驱动程序。

在配置过程中、我遇到了以下问题:

我使用--enable-am65cpsw 标志和--disable-generic 选择本机驱动程序路径、编译了具有本机驱动程序支持的 IGH EtherCAT 主站。 基于 ( https://gitlab.com/npitre/ethercat/-/commits/master?ref_type=HEADS ) IGH 提交。 branch:master commit:(使用 v6.6 内核支持 ti-am65-cpsw-nuss)。

但是、我遇到了与加载本机 EtherCAT 驱动程序相关的问题。 它成功地安装了,但当我尝试启动 systemctl 命令时,它似乎是一些与驱动程序相关的错误


CMD:/etc/init.d/ethercat 重新启动

关闭 EtherCAT 主站 1.6.1 已完成
启动 EtherCAT 主站 1.6.1 [ 72.193952] EC_MASTER:加载树外模块会污染内核。
[72.205165] EtherCAT:主驱动程序 1.6.1 1.6-alpha-176-gdb48d9b0
[72.211744] EtherCAT: 1 个主设备正在等待设备。
[72.257645]错误:驱动程序“am65-cpsw-Nuss"已“已注册,正在中止...
modprobe:错误:无法插入“ec_ti_am65_cpsw_Nuss":“:设备或资源忙
失败
root@am62ax:/# uname -A
Linux am62ax 6.6.58-g7a2fa4c23070-dirty #2 SMP Thu May 1 16:07:13 IST 2025 AArch64 AArch64 AArch64 GNU/Linux

此致、
底基斯

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

    尊敬的 Debashis:  

    modprobe:错误:无法插入“ec_ti_am65_cpsw_Nuss":“:设备或资源忙
    失败[/报价]

    在 AM62Ax 平台上运行 IGH 以太网主站之前检查“lsmod"时“时、您是否看到已加载“ec_ti_am65_cpsw_nuss"模“模块?  

    我目前不在办公室、在下周我回到办公室之前无法密切查看您的问题、我对此主题的回复可能会有一些延迟。

    -道林

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

    尊敬的 Daolin:

    是的、我们看到模块 (EC_MASTER) 已插入但未使用。

    root@mitysom-am62ax:/# lsmod | grep ec
    ec_master             299008  0
    ecdh_generic           16384  1 bluetooth
    ecc                    36864  1 ecdh_generic
    display_connector      12288  0
    drm_kms_helper        200704  4 drm_dma_helper,display_connector,tidss,ti_tfp410
    drm                   643072  6 drm_kms_helper,drm_dma_helper,display_connector,tidss,ti_tfp410



    两个接口链接到同一总线地址 (8000000.Ethernet)、我知道该地址代表一个 CPSW 以太网控制器。

    展示了该架构:
    ----------------------------

    Linux 网络接口 (eth0、eth1)
    ----------------------------
    以太网驱动程序 (例如,am65-cpsw-nuss)
    ----------------------------
    以太网硬件模块 (SoC 内部的控制器 (8000000.Ethernet))
    ----------------------------
    物理以太网 PHY (外部收发器芯片)
    ----------------------------
    以太网电缆

    最初、我尝试解除绑定 CPSW 驱动程序并重新启动 EtherCAT 主站。 但是、同样的错误仍然存在。

    经进一步调查、我发现两个以太网端口 (eth0 和 eth1) 都由同一以太网硬件模块控制。 ethtool 输出确认如下:

    root@mitysom-am62ax:/# ethtool -i eth0
    司机:am65-cpsw-nuss
    版本:6.6.58-g7a2fa4c23070-dirty
    固件版本:
    扩展 ROM 版本:
    总线信息:8000000.Ethernet
    支持统计:是
    支持测试:否
    支持-EEPROM-ACCESS:不支持
    支持-register-dump:可以
    支持-priv-flags:是
    root@mitysom-am62ax:/# ethtool -i eth1
    司机:am65-cpsw-nuss
    版本:6.6.58-g7a2fa4c23070-dirty
    固件版本:
    扩展 ROM 版本:
    总线信息:8000000.Ethernet
    支持统计:是
    支持测试:否
    支持-EEPROM-ACCESS:不支持
    支持-register-dump:可以
    支持-priv-flags:是

    我的理解总结:
    eth0 和 eth1 都是同一 CPSW 以太网硬件模块的逻辑端口。
    本机 EtherCAT 驱动程序要求对以太网控制器进行独占访问。
    我似乎无法为 EtherCAT 分配一个端口、为常规 Linux 网络分配另一个端口、因为两者都连接到同一个控制器。

    如果我错了、请纠正我。

    此致、
    底基斯

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

    尊敬的 Debashis:  

    是的、我们看到模块 (EC_MASTER) 已插入但未使用。

    只是为了澄清一下、当您发现此问题时、您的网络设置/拓扑是什么? 在运行 EtherCAT 主站之前、两个端口(EtherCAT 和非 EtherCAT 端口)是否都连接到设备? 在 IGH 配置中、如何指定 EtherCAT 使用哪个端口?

    似乎我无法为 EtherCAT 分配一个端口、而为常规 Linux 网络分配另一个端口、因为两者都与同一个控制器相连。

    在我上次在 AM62x 上运行 IGH 本机驱动程序进行的简短测试中、我记得没有遇到此问题、但我可能没有在连接到另一个器件的非 EtherCAT 端口上进行测试。

    我使用 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1409114/faq-how-do-i-build-the-native-igh-ethercat-stack-for-ti-microprocessors 中的说明 设置 IGH 本机驱动程序。 您是否使用过此常见问题解答中的步骤? 具体来说、需要执行一个步骤来设置内核、以便 CPSW 驱动程序不会内置到内核中、而是内置为模块。

    -道林

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

    尊敬的 Daolin:

    您如何在 IGH 配置中指定 EtherCAT 使用哪个端口?

    我们遵循了高文档、路径是/etc/sysconfig/ethercat.

    除此命令外、所有命令都相同  

    sudo sed -e '/^device_modules=“/"/"ti_am65_cpsw_Nuss"/"\“\</s>“ ““
    -e '/^MASTER0_DEVICE=/s/“/"ff:“:ff:ff:ff:ff:ff:ff“/"\“\
    -i /usr/local/etc/ethercat.conf

    但我也在这个文件中编写了相同的内容。


    使用启动 EtherCAT 服务时:/etc/init.d/ethercat start
    它显示驱动程序已加载。

    root@mitysom-am62ax:/ethercat_master_native /ethercat/sncn_installer#/etc/init.d/ethercat start
    启动 EtherCAT 主站 1.6.1 [ 3095.840544] EtherCAT:主站驱动程序 1.6.1 1.6-alpha-176-gdb48d9b0
    [ 3095.847682] EtherCAT:1 个主站正在等待设备。
    [3095.890494]错误:驱动程序“am65-cpsw-Nuss"已“已注册,正在中止...
    modprobe:错误:无法插入“ec_ti_am65_cpsw_Nuss":“:设备或资源忙
    失败

    当我检查 dmesg 时:

    [3095.840544] EtherCAT:主驱动程序 1.6.1 1.6-alpha-176-gdb48d9b0
    [ 3095.847682] EtherCAT:1 个主站正在等待设备。
    [3095.890494]错误:驱动程序“am65-cpsw-Nuss"已“已注册,正在中止...


    此致、
    底基斯

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

    尊敬的 Debashis:  

    sudo sed -e '/^device_modules/s/“/""/"ti_am65_cpsw_Nuss"/"\“\</s>“ “““
    -e '/^MASTER0_DEVICE=/s/“/"ff:“:ff:ff:ff:ff:ff:ff“/"\“\
    -i /usr/local/etc/ethercat.conf
    [/报价]

    感谢您在 IGH 配置中阐述了 EtherCAT 应使用哪些端口。

    只是为了澄清一下、当您发现此问题时、您的网络设置/拓扑是什么? 在运行 EtherCAT 主站之前、两个端口(EtherCAT 和非 EtherCAT 端口)是否都连接到设备?

    您能否确认这两个问题?

    我使用 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1409114/faq-how-do-i-build-the-native-igh-ethercat-stack-for-ti-microprocessors 中的说明 来设置 IGH 本机驱动程序。 您是否使用过此常见问题解答中的步骤? 具体来说、需要执行一个步骤来设置内核、以便 CPSW 驱动程序不会内置到内核中、而是内置为模块。

    如果您尚未尝试此常见问题解答中的说明、可以尝试一下吗? 如果用户想要使用 CPSW 以太网本机驱动程序来尝试 IGH EtherCAT 堆栈、此常见问题解答是一个独立于 IGH 文档的资源(但一些步骤可能源自 IGH 文档)。

    -道林

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

    尊敬的 Daolin:


    您能确认这两个问题吗?

    主处理器(以太网 1)----- > TI Sitara(EtherCAT 主站)----- >马达

    这是我们的网络拓扑、但我也尝试了主处理器、我们遇到了与之前相同的问题。

    根据您的信息、我们已经为我们的处理器构建了内核、以根据 TI 的建议使 Docker 正常工作。 因此、我已在.config 文件上检查了这个标志。 它已启用。  
    CONFIG_TI_K3_AM65_CPSW_NUSS=y

    这是我们安装 EtherCAT 的脚本、它与一些额外的附加组件几乎相同、旨在简化工作。  



    #设置参数
    EtherCAT_USER_Group=“$(whoami)“
    udev_rules_file=“/etc/udev/rules.d/99-EtherCAT.rules
    Script_DIR=“$(cd “$(dirname “0美元“)“&& pwd)“
    Work_DIR=“${script_DIR}/..“
    SysConfig_DIR=“/etc/sysconfig
    EtherCAT_SysConfig=“/etc/sysconfig/ethercat
    EtherCAT_install_prefix=“/opt/etherlab
    configure_flags=“--enable-sii-assign --disable-8139too --enable-hrtimer --enable-cycles --enable-generic --disable-eoe“

    do_configure(){
     CD ${WORK_DIR}

     echo -n “char* gitlog =\“> master/gitlog.h &&\
      Git 日志| head –1 | awk '{printf “%s",“,substr、substr (2美元、1、8)}'>> master/gitlog.h &&
      echo “\";“;“>> master/gitlog.h

     ./bootstrap
     ./configure ${configure_flags}--prefix=${EtherCAT_INSTALL_PREFIX }

     如果[[-f “/etc/init.d/ethercat ]];则
      sudo /etc/init.d/ethercat stop
     elif [[-f “${EtherCAT_INSTALL_PREFIX}/etc/init.d/ethercat ]];然后
      sudo ${EtherCAT_INSTALL_PREFIX}/etc/init.d/ethercat stop
     和数据
    }

    do_compile (){
     清洁
     创建所有模块
    }

    DO_INSTALL (){
     sudo make modules_install 安装
     sudo ldconfig
     sudo depmod

     #链接服务
     如果[[-f “/etc/init.d/ethercat ]];则
      sudo rm /etc/init.d/ethercat
     和数据
     sudo ln -s ${ethercat_install_prefix}/etc/init.d/ethercat /etc/init.d/ethercat

     #链接二进制文件
     如果[[-f “/usr/bin/ethercat ]];则
      sudo rm /usr/bin/ethercat
     和数据
     sudo ln -s ${ethercat_install_prefix}/bin/ethercat /usr/bin/ethercat
    }

    do_setup_interfaces (){
     #添加 udev 规则
     sudo rm -rf ${udev_rules_file}
     echo “kernel=="EtherCAT[0-9]*\",“,mode="0664\"“mode="0664\",、,group=\"$“group=\"${“{EtherCAT_USER_GROUP、EtherCAT_USER_GROUP}“}\“| sudo tee --append ${udev_rules_file}

     #链接 SysConfig EtherCAT 文件
     如果[[-f “${EtherCAT_Sysconfig}“]];则
      sudo rm ${ethercat_sysconfig}
     暴露
      sudo mkdir -p ${sysconfig_DIR}
     和数据
     sudo ln -s ${ethercat_install_prefix}${ethercat_sysconfig}${ethercat_sysconfig}

     #添加检测到的接口并删除旧接口
     sudo sed -i --follow-symlinks “/master[^0].*_device/d'${ethercat_sysconfig}

     #英特尔向上广场 2.
     #该板使用第 2 个以太网
     如果[[-n $(lscpu | sed '13q;d'| grep “Intel(R) Pentium(R) CPU N4200 @ 1.10GHz“)]];则
      MAC=$(cat /sys/class/net/enp3s0/address)
     暴露
     #标准笔记本电脑
      如果[[-n “${1}"]]];“]]];则
       #如果传递了接口,则使用接口作为参数传递
       iface=“${1}"</s>“
       MAC=$(cat /sys/class/net /${iface}/address)
      暴露
       #如果没有通过,则随机使用第一个接口
       Interfaces=$(IP link show | grep -OP “(^\d*:)\K(e[TN][a-Z0-9]*)“)
       iface=$(echo ${interfaces}| head -n1 | cut -d ““- f1)
       MAC=$(cat /sys/class/net /${iface}/address)
      和数据
     和数据
     sudo sed -i --follow-symlinks “s/MASTER0_DEVICE=\""/MASTER0_DEVICE=\"${“{MAC“MAC}“}\“/g"$“${EtherCAT_SysConfig}
     sudo sed -i --follow-symlinks s/device_modules\\“/device_modules\"generic\"/g'$“${“{ethercat_sysconfig}
    }

    do_start (){
     如果[[-f “/etc/init.d/ethercat ]];则
      sudo /etc/init.d/ethercat start
     elif [[-f “${EtherCAT_INSTALL_PREFIX}/etc/init.d/ethercat ]];然后
      sudo ${EtherCAT_INSTALL_PREFIX}/etc/init.d/ethercat start
     和数据
    }

    DO_CONFIGURE
    DO_COMPILE
    DO_INSTALL
    DO_setup_interfaces 1美元
    DO_START

    回波“完成“



    此致、
    底基斯

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

    您好、

    这是我安装 EtherCAT 的更新标志、不考虑上述内容。
    configure_flags=“--enable-sii-assign --disable-8139too --enable-hrtimer --enable-cycles --disable-generic --disable-eoe --enable-am65cpsw“

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

    尊敬的 Debashis:  

    以下是我在连接 AM62x EVM 的两个端口、eth0 端口连接到 EtherCAT 网络、eth1 连接到 1Gbps 以太网交换机后启动 EtherCAT 时看到的结果。 我使用了常见问题解答中指定的步骤。 也许你可以尝试“ethercatctl 开始“?

    [引述 userid=“571982" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1531493/sk-am62a-lp-issue-with-native-ethercat-driver-installation-on-am62a-with-igh-stack/5890848 #5890848“]

    是的、我们看到模块 (EC_MASTER) 已插入但未使用。

    全屏
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    root@mitysom-am62ax:/# lsmod | grep EC
    EC_MASTER 299008 0
    ECDH_generic 16384 1 蓝牙
    ECC 36864 1 ECDH_generic
    DISPLAY_CONNECTOR 12288 0
    drm_kms_helper 200704 DRM_DMA_helper、display_connector、tidss、ti_tfp410
    DRM 643072 6 drm_kms_helper、drm_dma_helper、display_connector、tidss、ti_tfp410
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    [/报价]

    模块中看到“ec_master"而“而不是“ec_ti_am65_cpsw_Nuss"这“这一事实似乎意味着您没有完全设置本机驱动程序、因为本机驱动程序的名称为“ec_ti_am65_cpsw_Nuss",“,但、但您看到模块为“ec_master"(“(在(在我看来,这是通用 IGH 驱动程序)。

    为了您的信息、我们已经为我们的处理器构建了内核、以使 Docker 根据 TI 的建议正常工作。 因此、我已在.config 文件上检查了这个标志。 它已启用。  
    CONFIG_TI_K3_AM65_CPSW_NUSS=y

    这是我们安装 EtherCAT 的脚本、它与一些额外的附加组件几乎相同、旨在简化工作。  [/报价]

    我知道您的步骤可能与常见问题解答步骤类似、但我仍然建议逐步遵循常见问题解答中的步骤、至少作为完整性检查、尤其是因为我目前在启动 EtherCAT 主站时没有看到相同的问题。

    -道林