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

如果您身边有一款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,找到下图所示位置

RealARM 210开发板 u-boot传递mac地址到内核的方法_第1张图片

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

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);

加入后如下图所示:

RealARM 210开发板 u-boot传递mac地址到内核的方法_第2张图片

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


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

       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);
}

修改后如下图所示:

RealARM 210开发板 u-boot传递mac地址到内核的方法_第3张图片


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


启动板子进入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这个后面的值即可。

























你可能感兴趣的:(mac,内核,u-boot)