RealARM 210开发板 u-boot传递mac地址到内核的方法

本文详细介绍了如何通过两种方法修改Real210开发板系统启动时的MAC地址:直接修改内核配置文件和通过u-boot传递参数给内核。包括具体步骤、关键代码示例及验证方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果您身边有一款Real210的开发板,而且想修改系统启动后的mac地址。那么本记录提供两种方法。

第一种方法:直接修改mac的配置值

首先找到文件mach-smdkv210.c位置在/arch/arm/mach-s5pv210(在内核源码根目录下找起)

打开mach-smdkv210.c,使用vi、gedit、source insight都可以,搜索如下图所示的位置



直接修改.dev_addr的值即可。

第二种方法:通过u-boot传递ethaddr参数给内核进而修改mac

首先找到DM9000.c文件,路径是/drivers/net(在内核源码根目录下找起)

打开DM9000.c,找到下图所示位置


在它的前面加上下面的代码:

static unsigned char        dev_addr[MAX_ADDR_LEN]; /* hw address  */
static int __init netmac_boot_setup(char *str)
{
int i = 0;
char *buf, *tok;
char *whitespace = ":";
buf = str;
do {
  buf = buf + strspn(buf, whitespace);
tok = strsep(&buf, whitespace);
if (*tok == '\0') 
{
    break;
}
dev_addr[i++] = (unsigned char )simple_strtoul(tok, NULL, 16);
}while(buf);
    if (i != 6)
        return 0;
    return 1;
}
__setup("ethaddr=", netmac_boot_setup);

加入后如下图所示:


还有一个地方,找到下图所示位置:


把上图的代码注释掉,然后添加下面的代码:

       for (i = 0; i < ETH_ALEN; i ++)
{
if(dev_addr[i]!= 0)
break; 
}
if (i < ETH_ALEN){  //uboot has set the 'ethaddr' in the bootargs
memcpy(ndev->dev_addr, dev_addr, 6);
}
else if (!is_valid_ether_addr(ndev->dev_addr) && pdata != NULL) {
mac_src = "platform data";
memcpy(ndev->dev_addr, pdata->dev_addr, 6);
}

修改后如下图所示:



全部完成后保持,编译、下载到开发板。


启动板子进入u-boot命令行界面,输入下面这个指令:

setenv bootargs "console=ttySAC2,115200 noinitrd root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=2 rw init=/linuxrc ethaddr=00:09:c0:ff:ec:85"

也就是在原来的基础上加入了参数ethaddr=00:09:c0:ff:ec:85

确定,输入saveenv保存环境变量,重启,进入linux命令行

输入命令ifconfig看看是否是修改成了上面的mac。

如果是,那么恭喜你成功了。之后想修改mac只需要修改ethaddr这个后面的值即可。

























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值