本文檔介紹如何簡易修改迅為- iMX6 開發(fā)板 Android4.4 系統(tǒng)的 MAC 地址,在網(wǎng)絡通信中, 會用到 MAC 地址,開發(fā)板源碼中默認的 MAC 地址全部一樣,這樣會引起沖突,導致網(wǎng)絡通 信故障。 iMX6 的 uboot 和 kernel 源碼中默認帶有通過環(huán)境變量設置 MAC 地址的源碼,只需要 簡單修改,即可添加上設置 MAC 地址功能。另外請注意,如果 MAC 地址不合法,在內(nèi)核代碼中會糾正,導致設置的 MAC 地址和系 統(tǒng)啟動之后的 MAC 地址不一樣。 1.uboot 源碼修改uboot uboot 源碼在源碼包解壓得到文件夾“bootable/bootloader/uboot-imx”下,進入目 錄使用命令“vim lib_arm/board.c”打開文件。 uboot 在“stdio_init (); /* get the devices list going. */”這一行代碼下添加調(diào)用獲取 MAC 地址的環(huán)境變量的函數(shù),如下圖所示。 修改之后的源碼如下: //add by rty 20180724 eth_initialize(gd->bd); //add end 保存“l(fā)ib_arm/board.c”退出。 然后使用命令“vim drivers/net/mxc_fec.c”打開文件,如下圖所示,將“static int fec_get_hwaddr(struct eth_device *dev, unsigned char *mac)”修改。 修改之后的代碼如下: 保存退出,uboot 就可以獲取環(huán)境變量中的 ethaddr 參數(shù)。 2.kernel 源碼修改 kernel 源碼在源碼包解壓得到文件夾“kernel_imx”下,進入目錄使用命令“vim arch/arm/mach-mx6/mx6_fec.c”打開文件。 如下圖所示,將“void __init imx6_init_fec(struct fec_platform_data fec_data)”函 數(shù)修改。 修改之后的源碼如下: 3.測試 編譯代碼,燒寫鏡像,進入 uboot 模式,如下圖所示,使用命令“printenv”,可以查 閱到環(huán)境變量“ethaddr=22:33:56:18:89:67”,默認的 MAC 地址是“22:33:56:18:89:67”。 重啟之后,進入 android,在控制臺使用命令“ip link show”,如下圖所示。這個 MAC 地址和 uboot 設置的地址相同。 重啟開發(fā)板,進入 uboot 模式,然后使用命令“setenv ethaddr 00:11:22:33:44:55”重 新設置 MAC 地址,接著使用“saveenv”命令保存環(huán)境變量,如下圖所示。 如下圖所示,在 uboot 中使用命令“printenv”,MAC 地址在 uboot 環(huán)境變量中設置 為“ethaddr=00:11:22:33:44:55” 重啟開發(fā)板,進入 android 系統(tǒng),再次使用“ip link show”命令查閱 MAC 地址,如下 圖所示,MAC 地址已經(jīng)修改過來了。
|