[RK3288][Android7.1] 调试笔记 --- LAN MAC地址无法写入成功

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kris_fei/article/details/84667261

Platform: RK3288
OS: Android 7.1
Kernel: v4.4.83

现象:

从android 6.0升级到7.1之后,使用UpgradeDllTool烧写LAN MAC重启后使用ifconfig命令查看LAN address不会发生变化。


原因:

6.0到7.1的LAN驱动发生了变化!

  • 6.0驱动读取MAC address流程:
stmmac_check_ether_addr -> stmmac_main.c
  eth_mac_idb -> eth_mac.c
    eth_mac_read_from_IDB -> 
      GetSNSectorInfo

也就是说address是从IDB获取, 而UpgradeDllTool也是写到IDB的,因此可以正常改写。

  • 7.1驱动读取MAC address流程:
stmmac_check_ether_addr -> stmmac_main.c
  priv->plat->get_eth_addr ->  
	rk_get_eth_addr -> dwmac-rk.c
	  rk_vendor_read ->  rk_vendor_storage.c
	    _vendor_read ->  在vendor_init_thread()@sdmmc_vendor_storage.c中注册
	      emmc_vendor_read 

它是从系统的vendor分区读取address的,而不是IDB分区。


解决方法:

使用anroid7.1中自带工具WNpctool,此工具会把MAC address烧写到vendor分区。
在这里插入图片描述


注:

vendor分区不会因为刷系统而一起被刷掉。

在这里插入图片描述

参考:

[RK3399][Android7.1] Vendor Storage区域知识及探讨

猜你喜欢

转载自blog.csdn.net/kris_fei/article/details/84667261