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.

[参考译文] AM6422:RTOS MAC 地址

Guru**** 2448780 points
Other Parts Discussed in Thread: AM6422

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1546380/am6422-rtos-mac-addr

器件型号:AM6422


工具/软件:

您好、

   我们有一个用例、在以太网连接已经启动并正常运行后、我们通过更改参数来修改 IP 和 MAC 地址。 修改 MAC 地址后、我们发现该地址未生效、设备已无法 ping 通。 我们需要知道如何正确修改 MAC 地址。

	sys_lock_tcpip_core();
	netif_set_down(g_pNetif[0]);

	netif_set_ipaddr(g_pNetif[0], &ip4_ipaddr);

	netif_set_netmask(g_pNetif[0], &ip4_maskaddr);

	netif_set_gw(g_pNetif[0], &ip4_gwaddr);
    
    tempMacAddr[0] = MACADDR0;
	tempMacAddr[1] = MACADDR1;
	tempMacAddr[2] = MACADDR2;
	tempMacAddr[3] = macAddr3;
	tempMacAddr[4] = macAddr4;
	tempMacAddr[5] = macAddr5;

    if(NULL != g_pNetif[0])
    {
		for(i=0; i<6; i++)
			g_pNetif[0]->hwaddr[i] = tempMacAddr[i];
	}	
	netif_set_up(g_pNetif[0]);
	sys_unlock_tcpip_core();

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

    您好、Wangli、

    您正在使用哪个 SDK? Linux 或 MCU+SDK?

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

    我们使用 SDK8.6 、MCU+SDK、而不是 Linux。

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

    好的。 感谢您提供的信息。 如有疑问、请联系我们的 MCU+SDK 以太网专家。

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

    您好、

    用于以太网应用 — 您使用的是什么 SoC? 您使用的是定制板吗?

    此外,您正在使用哪些以太网子系统 — 是 CPSW 还是 ICSS?

    此致
    Archit  

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

    您好、

       我们在 CPSW(通用平台软件)模式下使用具有以太网的 AM6422 并采用定制硬件。 上电初始化时会有一个默认 MAC 地址、但我们打算根据我们自己的配置文件对其进行修改。 我在提出问题时已经提交了修改方法的相关代码、但此方法尚未生效。 我们非常感谢您的支持和建议。 非常感谢!

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

    您好、Wanglili、

    更新 NETIF 中的 MAC 地址只会更改 LwIP 协议栈与给定 NETIF 关联的 MAC 地址。 但是、为了使器件能够接收数据包、我们也必须更新主机端口的 MAC 地址、因为主机端口只接受定向到主机的数据包(以及广播和多播数据包)。

    可以使用 Enet Utils 函数 EnetAppUtils_addHostPortEntry () 来更新主机端口 MAC 地址。 这样做将能够从新的 MAC 地址进行接收。 我们还建议使用 EnetAppUtils_delAddrEntry () 删除先前主机 MAC 地址的条目、以避免接收发往原始 MAC 地址的数据包。

    如果您有任何其他疑问、请告知我们。

    谢谢。此致、
    Teja。

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

    您好、

       希望您能提供具体的使用示例程序。 您提到的两个函数是否可以添加到我在上面提交的代码中?有关这两个函数的参数、特别是  

    void EnetAppUtils_addHostPortEntry(Enet_Handle hEnet, uint32_t coreId, uint8_t *macAddr) 

    函数中、第一个参数被定义 ti_enet_open_close.c 为静态结构变量、我无法在应用中直接使用该变量。 希望您能提供一个与该 netif_set_ipaddr 函数类似的具体示例。

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

    您好、Wanglili、

    您可以使用 API enet_getHandle (Enet_Type enetType、uint32_t instId) 获取 henet 信息。 enetType 和 instId 在各种应用中广泛可用。 这些是 cpsw 实例的给定应用中的固定值。 因此、您可以从 app_main.c 中获取这些值

    此致、
    Teja。

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

    您好、

      感谢您的建议。我可能解释不够清楚我的问题。 我们使用基于 SDK 8.6 的 MCU+SDK 版本进行开发、并将 CPSW 以太网用作两个独立的以太网接口、每个接口都有自己的 MAC 地址。 它们在加电时具有默认初始地址、我们希望在运行时通过接收配置文件来修改它们各自的 MAC 地址。 以前、我们仅修改了 LwIP 层的 MAC、但根据您提供的方法、我们如何将其映射到 CPSW 的两个以太网接口?

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

    您好、Wanglili、

    如果我理解正确、您希望在运行时根据从网络接收到的信息更改两个接口的 MAC 地址。 这可以通过上述方法来实现。 我想了解这个用例、因为基于网络分配 MAC 地址不是我们通常建议维护网络的方式。

    此致、
    Teja。

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

    您好、

       您是对的。 我们可能需要在运行过程中重新配置网络参数、因此该功能是必需的。

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

    您好、

    根据您的要求、上述方法应该适用。 它将删除作为主机端口地址的旧条目、并将新的 MAC 地址更新到查找表中。 您必须在硬件(查找表)和软件(在 Netif hwaddr 中)中更新 MAC 地址。

    此致、
    Teja。

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

    您好、

      根据您的建议、我修改它,它很好. 非常感谢!

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

    您好、Wanglili、

    感谢您的回答。 请将相应的响应标记为“已解决您的问题“、以便其他用户也可以从中受益。

    谢谢。此致、
    Teja。