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/PROCESSOR-SDK-AM437X:NIMUIoctl 返回错误的 MAC 地址

Guru**** 2582405 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/631451/rtos-processor-sdk-am437x-nimuioctl-returns-wrong-mac-address

器件型号:PROCESSOR-SDK-AM437X

工具/软件:TI-RTOS

您好!


我正在使用 AM437x SK 电路板开发软件。

ETH1的 MAC 地址为"C4:be:84:cc:A6:9c"。 我知道这一点、因为电路板随附的软件(Linux)显示了这一点。 使用此软件、我能够按预期对两个接口执行 Ping 操作。

我正在开发的软件(SYS/BIOS)会调用 NIMUIoctl 来读取 MAC 地址。 此函数正确返回 eth0的 MAC 地址、但返回的是 eth1 MAC 地址"C4:be:84:0:A6:9c"(字节#4为0)的错误值。

以下是用于读取 eth0和 eth1的 MAC 地址的代码峰值。

        uint8_t macaddr[6];

//获取设备 MAC 地址。
结果= NIMUIoctl (NIMU_GET_DEVICE_MAC、&ifReq、&macaddr、sizeof (macaddr));
如果(结果< 0)
{
System_printf ("错误:无法获取 MAC 地址、%d\n"、结果);
}
其他
{
system_printf ("MAC 地址:%x:%x:%x:%x:%x\n"、macaddr[0]、macaddr[1]、
macaddr[2]、macaddr[3]、macaddr[4]、macaddr[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

此致、

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

    您能否尝试构建/运行 NIMU_ICSS 示例项目以查看 SOCCtrlGetPortMacAddr ()是否正确返回 Mac 地址或将以下内容从 pdk_AM437X_1_0_7\packages/ti\transport\NDK\NIMU_ICSS\examples\src\main_A9.c 移植到您的项目中?

    void SOCCtrlGetPortMacAddr (uint32_t portnum、uint8_t * pMacAddr)

    switch (portnum)

    案例1U:
    pMacAddr[5U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID0_LO、
    CTRL_MAC_ID0_LO_MACADDR_7_0);
    pMacAddr[4U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID0_LO、
    CTRL_MAC_ID0_LO_MACADDR_15_8);
    pMacAddr[3U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID0_HI、
    CTRL_MAC_ID0_HI_MACADDR_23_16);
    pMacAddr[2U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID0_HI、
    CTRL_MAC_ID0_HI_MACADDR_31_24);
    pMacAddr[1U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID0_HI、
    CTRL_MAC_ID0_HI_MACADDR_39_32);
    pMacAddr[0U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID0_HI、
    CTRL_MAC_ID0_HI_MACADDR_47_40);
    中断;

    案例2U:
    pMacAddr[5U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_LO、
    CTRL_MAC_ID0_LO_MACADDR_7_0);
    pMacAddr[4U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_LO、
    CTRL_MAC_ID0_LO_MACADDR_15_8);
    pMacAddr[3U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_HI、
    CTRL_MAC_ID1_HI_MACADDR_23_16);
    pMacAddr[2U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_HI、
    CTRL_MAC_ID1_HI_MACADDR_31_24);
    pMacAddr[1U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_HI、
    CTRL_MAC_ID1_HI_MACADDR_39_32);
    pMacAddr[0U]= HW_RD_FIELD32 (SOC_CONTRAL_MODULE_REG + CTRL_MAC_ID1_HI、
    CTRL_MAC_ID1_HI_MACADDR_47_40);
    中断;

    默认值:
    中断;



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

    您好、Garrett。

    我将 SOCCtrlGetPortMacAddr´ve 到我的项目中、因为 NIMU_ICSS_BasicExample_idkAM437x_wSoCLib_armExampleproject 项目 用于 IDK、而我在这里拥有的 EVM 是 SK。 我n´t 它会起作用。

    SOCCtrlGetPortMacAddr 返回正确的值:
    使用 NIMUIoctl 的 MAC 地址:C4:be:84:0:A6:9c
    MAC 地址 SOCCtrlGetPortMacAddr:C4:be:84:cc:A6:9c

    我想知道我的应用程序是否正在使用正确的 cpsw 驱动程序。 是的 用于以太网 MAC (不是 PRU-ICSS EtherCAT?)的正确 NIMU 驱动程序 实际上、我还有其他主要问题。 软件不响应 ping 操作、也不发送 ARP。

    谢谢、

    Marcio。

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

    MAC 地址从 AM437x 寄存器中检索、因此可在 IDK 和 SK 中工作。
    v4是适用于 AM437x 上 EtherCAT MAC 的正确 NIMU 驱动程序版本。
    如果需要,您可以打开有关 ping/ARP 问题的新线程。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Garrett、
    我很困惑。 我不希望在 PRU-ICSS 上使用 EtherCAT MAC。 我想使用 EMAC 2端口开关 RGMII。 n´t 是不同的,是吗?

    我的项目使用 EMAC 驱动程序的说明、然后 为 Nimu 司机准备。

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

    如果不使用 PRU-ICSS EMAC、器件中的 Efuse 寄存器 MAC_ID0和 MAC_ID1可用作 CPSW MAC 地址。

    或者、Starterkit EVM 具有专用的 I2C EEPROM、其中包含该板的特定标识和配置信息、其中包括
    以太网 MAC 地址0、AM437x 以太网 MAC 地址1
    以太网 MAC 地址1、AM437x 以太网 MAC 2或 PRU 0的 MAC 地址
    以太网 MAC 地址2、AM437x PRU 1的 MAC 地址(如果使用)
    请参阅《AM437x 入门套件 EVM 硬件用户指南》、表5。 《AM437x 入门套件 EVM EEPROM 数据》、www.ti.com/lit/ug/spruhw8/spruhw8.pdf

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢 Garret。
    我´ve 了一个有关 ping/ARP 问题的新主题。