如果您身边有一款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这个后面的值即可。