在imx6ull平台下,有一些特殊功能的寄存器,称为OCOTP Hardware Register,在数据手册中可以找到关于它的描述:
可以找到3个跟MAC 地址有关的寄存器,位置为Bank4 Word2-4:
在系统中,我们也可以找到它们的踪迹:
在kernel源码arch/arm/mach-imx/common.c中,mac地址的获取过程如下:
接下来验证一下,在uboot中设置那3个寄存器的值(这里我只是测试,所以用fuse override代替fuse prog,因为prog烧录后便不能再更改了),然后让系统启动后执行ifconfig查看mac地址:
验证成功,从上面的测试可以知道寄存器OCOTP_MAC0-2的值和网口的mac地址之间的关系,而这几个寄存器的值可以通过在uboot中执行fuse prog/override xxxxxxxx xxxxxxxx xxxxxxxx 设置。而在uboot源码中,调用run_command("fuse prog/override 4 2 xxxxxxxx xxxxxxxx xxxxxxxx");来实现。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!