以太网驱动的流程浅析(四)-以太网驱动probe流程【原创】

以太网驱动的流程浅析(四)-以太网驱动probe流程

**Author:张昺华 Email:[email protected] Time:2019年3月23日星期六 **

此文也在我的个人公众号以及《Linux内核之旅》上有发表:以太网驱动流程浅析(三)-ifconfig的-19错误最底层分析

很喜欢一群人在研究技术,一起做有意思的东西,一起分享技术带给我们的快乐,也希望中国有更多的人热爱技术,喜欢一起研究、分享技术,然后可以一起用我们的技术来做一些好玩的东西,可以为这个社会创造一些东西来改善人们的生活。

如下是本人调试过程中的一点经验分享,以太网驱动架构毕竟涉及的东西太多,如下仅仅是针对加载流程和围绕这个问题产生的分析过程和驱动加载流程部分,并不涉及以太网协议层的数据流程分析。

【硬件环境】 Imx6ul

###【Linux kernel版本】 Linux4.1.15 ###【以太网phy】 Realtek8201f

1.1. 以太网驱动probe流程

1.1 以太网初始化

fec_main.c   fec_probe
=>fec_enet_mii_init

   =>of_get_child_by_name(pdev->dev.of_node, "mdio");
     of_mdiobus_register(fep->mii_bus, node);

			   =>rc = of_mdiobus_register_phy(mdio, child, addr);

				 => phy = get_phy_device(mdio, addr, is_c45);
				    rc = phy_device_register(phy);

搞驱动的都知道,probe是drvier的入口函数:

graph LR fec_probe -->fec_enet_mii_init fec_enet_mii_init -->of_get_child_by_name fec_enet_mii_init -->of_mdiobus_register of_mdiobus_register-->of_mdiobus_register_phy of_mdiobus_register_phy-->get_phy_device of_mdiobus_register_phy--> phy_device_register

4. 网址分享

http://stackoverflow.com/questions/5308090/set-ip-address-using-siocsifaddr-ioctl http://www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.commtrf2/ioctl_socket_control_operations.htm https://lkml.org/lkml/2017/2/3/396 linux PHY驱动 http://www.latelee.org/programming-under-linux/linux-phy-driver.html Linux PHY几个状态的跟踪 http://www.latelee.org/programming-under-linux/linux-phy-state.html 第十六章PHY -基于Linux3.10 https://blog.csdn.net/shichaog/article/details/44682931

### End

猜你喜欢

转载自www.cnblogs.com/sky-heaven/p/11942133.html