本文檔介紹如何簡易修改迅為- iMX6 開發板 Android4.4 系統的 MAC 地址,在網絡通信中, 會用到 MAC 地址,開發板源碼中默認的 MAC 地址全部一樣,這樣會引起沖突,導致網絡通 信故障。 iMX6 的 uboot 和 kernel 源碼中默認帶有通過環境變量設置 MAC 地址的源碼,只需要 簡單修改,即可添加上設置 MAC 地址功能。另外請注意,如果 MAC 地址不合法,在內核代碼中會糾正,導致設置的 MAC 地址和系 統啟動之后的 MAC 地址不一樣。 1.uboot 源碼修改uboot uboot 源碼在源碼包解壓得到文件夾“bootable/bootloader/uboot-imx”下,進入目 錄使用命令“vim lib_arm/board.c”打開文件。 uboot 在“stdio_init (); /* get the devices list going. */”這一行代碼下添加調用獲取 MAC 地址的環境變量的函數,如下圖所示。
news2018072501.png (137.56 KB, 下載次數: 31)
下載附件
2018-7-25 10:26 上傳
修改之后的源碼如下: //add by rty 20180724 eth_initialize(gd->bd); //add end 保存“lib_arm/board.c”退出。 然后使用命令“vim drivers/net/mxc_fec.c”打開文件,如下圖所示,將“static int fec_get_hwaddr(struct eth_device *dev, unsigned char *mac)”修改。
news2018072502.png (149.27 KB, 下載次數: 34)
下載附件
2018-7-25 10:26 上傳
修改之后的代碼如下:
news2018072503.png (47.26 KB, 下載次數: 37)
下載附件
2018-7-25 10:26 上傳
保存退出,uboot 就可以獲取環境變量中的 ethaddr 參數。 2.kernel 源碼修改 kernel 源碼在源碼包解壓得到文件夾“kernel_imx”下,進入目錄使用命令“vim arch/arm/mach-mx6/mx6_fec.c”打開文件。 如下圖所示,將“void __init imx6_init_fec(struct fec_platform_data fec_data)”函 數修改。
news2018072504.png (143.39 KB, 下載次數: 36)
下載附件
2018-7-25 10:26 上傳
修改之后的源碼如下:
news2018072505.png (55.27 KB, 下載次數: 38)
下載附件
2018-7-25 10:26 上傳
3.測試 編譯代碼,燒寫鏡像,進入 uboot 模式,如下圖所示,使用命令“printenv”,可以查 閱到環境變量“ethaddr=22:33:56:18:89:67”,默認的 MAC 地址是“22:33:56:18:89:67”。
news2018072506.png (152.97 KB, 下載次數: 36)
下載附件
2018-7-25 10:26 上傳
重啟之后,進入 android,在控制臺使用命令“ip link show”,如下圖所示。這個 MAC 地址和 uboot 設置的地址相同。
news2018072507.png (78.54 KB, 下載次數: 51)
下載附件
2018-7-25 10:26 上傳
重啟開發板,進入 uboot 模式,然后使用命令“setenv ethaddr 00:11:22:33:44:55”重 新設置 MAC 地址,接著使用“saveenv”命令保存環境變量,如下圖所示。
news2018072508.png (76.35 KB, 下載次數: 40)
下載附件
2018-7-25 10:26 上傳
如下圖所示,在 uboot 中使用命令“printenv”,MAC 地址在 uboot 環境變量中設置 為“ethaddr=00:11:22:33:44:55”
news2018072509.png (146.07 KB, 下載次數: 42)
下載附件
2018-7-25 10:26 上傳
重啟開發板,進入 android 系統,再次使用“ip link show”命令查閱 MAC 地址,如下 圖所示,MAC 地址已經修改過來了。
news2018072510.png (101.45 KB, 下載次數: 48)
下載附件
2018-7-25 10:26 上傳
|