IPQ40xx修改默认的MAC地址
QSDK默认情况下是从ART分区读入MAC地址并初始化系统,主要通过fdt_fixup_ethernet函数修改fdt的mac对应的local-mac-address实现,修改后的代码默认从ethaddr读取mac地址并初始化系统,如果ethaddr的地址无效则继续使用ART分区的地址,这个方案只使用LAN口和WAN的MAC地址,无线的MAC地址可在系统起来后从LAN作为基地址计算写入UCI文件即可,此代码是QSDK SPF11.1的uboot修改方案
Index: board/qca/arm/common/ethaddr.c =================================================================== --- board/qca/arm/common/ethaddr.c (revision 108) +++ board/qca/arm/common/ethaddr.c (working copy) @@ -103,6 +103,43 @@ uchar *mac_addr; char ethaddr[16] = "ethaddr"; char mac[64]; + + /* + * if ethaddr valid + */ + if (eth_getenv_enetaddr("ethaddr", enetaddr)) { + mac_addr = enetaddr; + snprintf(mac, sizeof(mac), "%x:%x:%x:%x:%x:%x", + mac_addr[0], mac_addr[1], + mac_addr[2], mac_addr[3], + mac_addr[4], mac_addr[5]); + printf("ENV Base MAC: %s\n", mac); + for (i = 0; i < CONFIG_IPQ_NO_MACS; i++) { + if (0 == i) { + continue; + } + if (0xFF == mac_addr[5]) { + mac_addr[5] = 0x00; + if (0xFF == mac_addr[4]) { + mac_addr[4] = 0x00; + mac_addr[3] = mac_addr[3] + 1; + } else { + mac_addr[4] = mac_addr[4] + 1; + } + } else { + mac_addr[5] = mac_addr[5] + 1; + } + snprintf(mac, sizeof(mac), "%x:%x:%x:%x:%x:%x", + mac_addr[0], mac_addr[1], + mac_addr[2], mac_addr[3], + mac_addr[4], mac_addr[5]); + snprintf(ethaddr, sizeof(ethaddr), "eth%daddr", i); + setenv(ethaddr, mac); + printf("Set tmp env %s=%s From ENV\n", ethaddr, mac); + } + return; + } + /* Get the MAC address from ART partition */ ret = get_eth_mac_address(enetaddr, CONFIG_IPQ_NO_MACS); for (i = 0; (ret >= 0) && (i < CONFIG_IPQ_NO_MACS); i++) { @@ -120,6 +157,7 @@ mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); setenv(ethaddr, mac); + printf("Set tmp env %s=%s From ART\n", ethaddr, mac); } snprintf(ethaddr, sizeof(ethaddr), "eth%daddr", (i + 1)); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律