本文共 1010 字,大约阅读时间需要 3 分钟。
项目要求可以自己设定MAC地址,下面介绍具体的实现方法。 在RTCS初始化时,有函数:ENET_get_mac_address,此函数返回MAC地址,但是此函数的具体使用方法没有在文档中介绍,查看其源码,其原型在enaddr.c中出现: uint32_t ENET_get_mac_address return _bsp_get_mac_address(device,value,address); } 次函数只是简单的调用了函数_bsp_get_mac_address,此函数在init_enet.c中。在这个函数里使用BSP_DEFAULT_ENET_OUI给MAC地址的高3字节赋值,用自身IP地址的低3字节给MAC地址低3字节赋值。 const _enet_address _enet_oui = BSP_DEFAULT_ENET_OUI; bool _bsp_get_mac_address if (device >= BSP_ENET_DEVICE_COUNT) address[0] = _enet_oui[0]; address[1] = _enet_oui[1]; address[2] = _enet_oui[2]; address[3] = (value & 0xFF0000) >> 16; address[4] = (value & 0xFF00) >> 8; address[5] = (value & 0xFF); } 所以,可以通过 BSP_DEFAULT_ENET_OUI宏定义MAC地址的高3字节,但是此宏在BSP中也已经调用,所以在更改时,必须对BSP进行重新编译才会起效果。好在MAC地址在定义时,高3字节为厂家标识,对于同一个厂家而言,MAC地址的高3字节是不需要改变的,这样我们只需编译1次即可。MAC地址的低3字节,我们可以任意修改,修改后传递给 ipcfg_init_device函数即可。调用程序如下: 原创性文章,转载请注明出处 。 CSDN: 。