RealARM 210开发板 u-boot传递mac地址到内核的方法
如果您身邊有一款Real210的開(kāi)發(fā)板,而且想修改系統(tǒng)啟動(dòng)后的mac地址。那么本記錄提供兩種方法。
第一種方法:直接修改mac的配置值
首先找到文件mach-smdkv210.c位置在/arch/arm/mach-s5pv210(在內(nèi)核源碼根目錄下找起)
打開(kāi)mach-smdkv210.c,使用vi、gedit、source insight都可以,搜索如下圖所示的位置
直接修改.dev_addr的值即可。
第二種方法:通過(guò)u-boot傳遞ethaddr參數(shù)給內(nèi)核進(jìn)而修改mac
首先找到DM9000.c文件,路徑是/drivers/net(在內(nèi)核源碼根目錄下找起)
打開(kāi)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);
加入后如下圖所示:
還有一個(gè)地方,找到下圖所示位置:
把上圖的代碼注釋掉,然后添加下面的代碼:
? ? ? ?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);
}
修改后如下圖所示:
全部完成后保持,編譯、下載到開(kāi)發(fā)板。
啟動(dòng)板子進(jìn)入u-boot命令行界面,輸入下面這個(gè)指令:
setenv bootargs "console=ttySAC2,115200 noinitrd root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=2 rw init=/linuxrc ethaddr=00:09:c0:ff:ec:85"
也就是在原來(lái)的基礎(chǔ)上加入了參數(shù)ethaddr=00:09:c0:ff:ec:85
確定,輸入saveenv保存環(huán)境變量,重啟,進(jìn)入linux命令行
輸入命令ifconfig看看是否是修改成了上面的mac。
如果是,那么恭喜你成功了。之后想修改mac只需要修改ethaddr這個(gè)后面的值即可。
總結(jié)
以上是生活随笔為你收集整理的RealARM 210开发板 u-boot传递mac地址到内核的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下修改mac
- 下一篇: RealARM210 V3.2硬件版本