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分区不会因为刷系统而一起被刷掉。