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

时间:2024-03-24 14:17:50

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分区。
[RK3288][Android7.1] 调试笔记 --- LAN MAC地址无法写入成功


注:

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

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

参考:

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