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.

[参考译文] RTOS/AM4376:ETH1不起作用

Guru**** 2584575 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/633179/rtos-am4376-eth1-does-not-work

器件型号:AM4376

工具/软件:TI-RTOS

我在 AM437x SK 电路板上运行了 NIMU_BasicExample_skAM437x_armExampleproject 示例。 eth0正常响应 ping。

´ve、我根据 NIMU_DualMacExample_idkAM572x_armExampleProject 示例修改了该示例以处理2个以太网端口。 ´ve 在 NIMUDeviceTable 中添加了一个条目(NIMUDeviceTable[NIMU_DEVICE_index+].init =&CpswEMacInit;)、在 cfg 文件中添加了 IP.ifIdx = 2、添加了一个网络堆栈挂钩函数以配置第二个静态 IP 地址(Global. stackInitHook ="&stackInitHook =";在相应的主文件中添加了该函数)。

1) 1) ETH1不响应 ping、也不发送 ARP。

2) 2)如果我将 IP 地址设置为 eth0 = 192.168.1.4和 eth1 = 192.168.1.5、则在初始化时、控制台会显示:
[CortexA9]网络已添加:IF-1:192.168.1.4
00000.000 BindNew:忽略重复绑定

但是 、如果我将 IP 地址设置为 eth0 = 192.168.1.4和 eth1 = 192.168.2.5、则控制台会在初始化时显示:
[CortexA9]网络已添加:IF-1:192.168.1.4
网络已添加:if-2:192.168.2.5

已安装的组件:
CCS 7.2
GCC ARM 编译器4.9.3
PROCESSOR_SDK_RTOS_AM437X 4.00.04
AM437x PDK v1.0.7
BIOS 6.46.05.55
xdctools 3.32.02.25_core

谢谢、
Marcio。

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

    在 Linux 中、有一项特定要求、即在双 EMAC 模式下、两个端口必须连接到不同的子网。 我怀疑 RTOS 的情况是一样的、但让我们看看专家们的看法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Marcio、

    NDK 中似乎存在一些限制、阻止同一子网中的双 Mac、请参阅主题: e2e.ti.com/.../168240
    e2e.ti.com/.../656206

    让我们尝试使用第二种情况不同的子网取得进展。 我正在寻找 AM437x 入门套件、与此同时、您是否可以上传您的 cfg 和主文件以启用双 Mac?

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

    您好、Garrett、
    我对初始化函数进行了更改(请参阅下文)、现在第二个以太网端口也响应了 ARP 和 ping。 每个端口都连接到不同的 PC。 IP 位于不同的子网中。

    我´ve 了这个状态"cfg.numPorts = 2;"。 不要问我为什么、但这似乎是合乎逻辑的。

    EMAC_socGetInitCfg (0、&cfg);
    cfg.numPorts = 2;
    cfg.port[0].phy_addr = EMAC_CPSW_PORT0_PHY_ADDR_SK;
    cfg.port[1].phy_addr = EMAC_CPSW_Port1_PHY_ADDR_SK;
    EMAC_socSetInitCfg (0、&cfg);
    
    

    一件不正确的事情是程序响应 ARP 发送的第二个以太网端口的 MAC 地址:C4-be 84-00-A6-9c。"00"应为"cc"。 我已经检查了 Wireshark 上的 MAC 地址、并执行了"arp -a"命令。 ´ve 在本主题 https://e2e.ti.com/support/arm/sitara_arm/f/791/p/631451/2335635#2335635中讨论了该主题

    随附了您询问的文件。
    谢谢
    Marcio。

    e2e.ti.com/.../ethapl.c

    e2e.ti.com/.../startup.cfg

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

    进展顺利、感谢您分享文件! 您似乎能够向前推进、我们可以关闭该主题吗?

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

    您好、Garret、

    我也不想关闭此主题:´d)

    但是、MAC 地址会怎样呢?  驱动程序(EMAC 或 NIMU)发送了错误的值。 您是否得到了相同的行为? 这是已知的错误吗?  您是否要提出修复请求?
    此致、

    Marcio

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

    Marcio、

    认为 MAC 地址问题已解决。 cpswEmacAddrGet ()中有一个错误,该错误来自 pdk_am437x_1_0_7\packages/ti\transport \ndk\Nimu\src\v4\cpsw_Nimu_eth.c 我将要求解决这个问题。

    对于案例2U:
    P->macaddr[3U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_LO、
    CTRL_MAC_ID1_HI_MACADDR_23_16);
    应从 CTRL_MAC_ID1_HI 读取的值:
    pMacAddr[3U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_HI、
    CTRL_MAC_ID1_HI_MACADDR_23_16);

    此致、
    Garrett

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