type
status
date
slug
summary
tags
category
icon
password

🤓 基本原理

在uboot启动阶段通过I2C接口读取EEPROM中提前设置好的MAC地址,并将该MAC地址设置到ethaddreth1addr环境变量后,uboot在common/fdt_support.c中会将环境变量设置ethernet@fe010000ethernet@fe2a0000设备树节点下的local-mac-address属性中,之后在内核启动后gmac驱动中会获取网卡相应节点下该属性值,并设置到mac中。
uboot相关代码
驱动:kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
 
参考:

📝 相关配置

  1. 增加ID_EPPROM支持
    1. u-boot/board/freescale/common下的sys_eeprom.ceeprom.h拷贝到board/rockchip/evb_rk3568/evb_rk3568.c目录下,并修改Kconfig,增加以下内容
      并在该文件夹下的Makefile中加入
       
  1. 修改uboot内容
    1. 修改uboot下的config文件
      1. eeprom的型号为AT24C512,地址长度为2个字节。I2C总线为5,设备地址为0x51。
    2. 修改设备树文件
      1. 设备树文件目录:arch/arm/dts/rk3568-nanopi-r5s.dtsi
        在I2C5节点下增加eeprom节点
  1. 修改相关驱动
    1. sys_eeprom.c
      1. 修改eeprom结构体SN号数组长度为13位
        prog_eeprom函数中修改每次写入页大小为128字节,写入时间为10ms
        mac_read_from_eeprom函数中注释以下语句,改为强制设置mac地址
    2. cmd/i2c.c
      1. 修改i2c默认字长为2
        修改do_i2c_read函数下强制offest_len为2
    3. drivers/i2c/i2c-uclass.c
      1. 修改i2c_set_chip_offset_len函数下强制offest_len为2
 
rk3568 读取eeprom中MAC地址并设置rk3568 读取eeprom中MAC地址并设置
INvain
INvain
如果有一天
Announcement
type
status
date
slug
summary
tags
category
icon
password
⌨️分享编程和嵌入式知识
-- 感谢您的支持 ---