zoukankan      html  css  js  c++  java
  • RK: rk3288 以太网mac 地址 生成

    一.先上一份日志 

    1.1.eth_mac_idb

     lowmemorykiller: lowmem_shrink: convert oom_adj to oom_score_adj:
     lowmemorykiller: oom_adj 0 => oom_score_adj 0
     lowmemorykiller: oom_adj 1 => oom_score_adj 58
     lowmemorykiller: oom_adj 2 => oom_score_adj 117
     lowmemorykiller: oom_adj 3 => oom_score_adj 176
     lowmemorykiller: oom_adj 9 => oom_score_adj 529
     lowmemorykiller: oom_adj 15 => oom_score_adj 1000
     acc_open
     acc_release
     phy_power_on: enable = 1
     11111111  err = 0
     Read the Ethernet MAC address from IDB:e2:76:1e:08:31:07
     eth0: device MAC address e2:76:1e:08:31:07
     phy_rtl8201f_led_fixup in
     libphy: stmmac: probed
     eth0: PHY ID 001cc816 at 0 IRQ 0 (stmmac-0:00) active
    

    1.2.etherm_addr_from_cpuid

     lowmemorykiller: lowmem_shrink: convert oom_adj to oom_score_adj:
     lowmemorykiller: oom_adj 0 => oom_score_adj 0
     lowmemorykiller: oom_adj 1 => oom_score_adj 58
     lowmemorykiller: oom_adj 2 => oom_score_adj 117
     lowmemorykiller: oom_adj 3 => oom_score_adj 176
     lowmemorykiller: oom_adj 9 => oom_score_adj 529
     lowmemorykiller: oom_adj 15 => oom_score_adj 1000
     acc_open
     acc_release
     phy_power_on: enable = 1
     11111111  err = 0
     Read the Ethernet MAC address from IDB:00:00:00:00:00:00
     etherm_addr_from_cpuid system_serial_low=75cef2b1,system_serial_high=4666831a
     the vendor enable_mac=0x1
     use mac from vendor!
     the vendor mac e2:76:1e:08:31:23
     eth0: device MAC address e2:76:1e:08:31:23
     phy_rtl8201f_led_fixup in
     libphy: stmmac: probed
     eth0: PHY ID 001cc816 at 0 IRQ 0 (stmmac-0:00) active
    

     二.分析一下源码  驱动读取MAC address流程    

    stmmac_check_ether_addr
               eth_mac_idb
               etherm_addr_from_cpuid
               eth_hw_addr_random    

    2.1.Z:K_R32X_RK3288_ANDROID5.1K_R32X_RK3288_ANDROID5.1kerneldrivers etethernet ockchipgmacstmmac_main.c

    static void stmmac_check_ether_addr(struct stmmac_priv *priv)
    {
    	if (!is_valid_ether_addr(priv->dev->dev_addr)) {
    		priv->hw->mac->get_umac_addr((void __iomem *)
    					     priv->dev->base_addr,
    					     priv->dev->dev_addr, 0);
    		if (!is_valid_ether_addr(priv->dev->dev_addr))
                   //rk 烧写工具 eth_mac_idb(priv->dev->dev_addr); if (!is_valid_ether_addr(priv->dev->dev_addr))
                  //cpuid 计算 lan Mac 地址 etherm_addr_from_cpuid(priv->dev->dev_addr); if(!is_valid_ether_addr(priv->dev->dev_addr))
                  //随机生成 eth_hw_addr_random(priv->dev); } pr_warn("%s: device MAC address %pM ", priv->dev->name, priv->dev->dev_addr); }

    2.2. Z:K_R32X_RK3288_ANDROID5.1K_R32X_RK3288_ANDROID5.1kerneldrivers etethernet ockchipeth_mac.c 

    2.2.1.eth_mac_idb  

    int eth_mac_idb(u8 *eth_mac)
    {
    	int i;
    	int err = 0;
    	memset(eth_mac, 0, 6);
    	err = eth_mac_read_from_IDB(eth_mac);
    	if (err)
    		return -1;
    	printk("Read the Ethernet MAC address from IDB:");
    	for (i = 0; i < 5; i++)
    		printk("%2.2x:", eth_mac[i]);
    	printk("%2.2x
    ", eth_mac[i]);
    
    	return 0;
    }
    

    2.2.2.etherm_addr_from_cpuid md5 加密

     // Apply md5 process to system_serial_mac  

      

      

  • 相关阅读:
    阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
    阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排
    阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
    阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知
    阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式
    阶段3 2.Spring_08.面向切面编程 AOP_6 四种常用通知类型
    阶段3 2.Spring_08.面向切面编程 AOP_5 切入点表达式的写法
    阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
    阶段3 2.Spring_08.面向切面编程 AOP_3 spring基于XML的AOP-编写必要的代码
    阶段3 2.Spring_08.面向切面编程 AOP_2 spring中的aop术语和细节
  • 原文地址:https://www.cnblogs.com/crushgirl/p/14592652.html
Copyright © 2011-2022 走看看