linux网络驱动框架-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 263863
  • 博文数量: 90
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 665
  • 用 户 组: 普通用户
  • 注册时间: 2018-10-15 14:13
个人简介

搭建一个和linux开发者知识共享和学习的平台

文章分类

全部博文(90)

文章存档

2024年(4)

2023年(24)

2022年(27)

2019年(8)

2018年(27)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: 嵌入式

2023-07-26 19:36:02

有线网络的硬件框架如下图所示 ,cpu通过mac控制phy进行网络数据的收发。

我们知道,linux内核中实现了tcp/ip协议栈的完整内容,其参考了iso制定的osi网络模型,但又做了适当的精简,对比如下图。

内核中的传输层,网络层和网络接口层的llc子层属于纯协议,跟硬件平台无关,驱动开发人员无需修改,搞清楚各层功能即可,真正需要修改的是mac控制器驱动和phy控制器驱动。rk3288 soc内置mac使用的是designware的ip, 跟st的mac一样, 所以mac代码复用了st的大部分,代码文件如下:
cros@cros-pc:~/work/asus/debian_kernel$ ls drivers/net/ethernet/stmicro/stmmac/ -ls
total
468
8 -rwxrwxr-x 1 cros cros 50962212022 chain_mode.c
20 -rwxrwxr-x 1 cros cros 165362212022 common.h
4 -rwxrwxr-x 1 cros cros 37932212022 descs_com.h
8 -rwxrwxr-x 1 cros cros 56122212022 descs.h
16 -rwxrwxr-x 1 cros cros 123282212022 dwmac1000_core.c #千兆mac驱动代码
8 -rwxrwxr-x 1 cros cros 67582212022 dwmac1000_dma.c
16 -rwxrwxr-x 1 cros cros 126782212022 dwmac1000.h
8 -rwxrwxr-x 1 cros cros 62872212022 dwmac100_core.c # 百兆mac驱动代码
8 -rwxrwxr-x 1 cros cros 45822212022 dwmac100_dma.c
8 -rwxrwxr-x 1 cros cros 58742212022 dwmac100.h
8 -rwxrwxr-x 1 cros cros 55212212022 dwmac_dma.h
4 -rwxrwxr-x 1 cros cros 21532212022 dwmac-generic.c # 默认平台相关代码
12 -rwxrwxr-x 1 cros cros 110212212022 dwmac-ipq806x.c
8 -rwxrwxr-x 1 cros cros 72602212022 dwmac_lib.c
4 -rwxrwxr-x 1 cros cros 23772212022 dwmac-lpc18xx.c
4 -rwxrwxr-x 1 cros cros 24572212022 dwmac-meson.c
48 -rwxrwxr-x 1 cros cros 468192212022 dwmac-rk.c # rk平台相关代码
12 -rwxrwxr-x 1 cros cros 83872212022 dwmac-socfpga.c
12 -rwxrwxr-x 1 cros cros 111752212022 dwmac-sti.c
8 -rwxrwxr-x 1 cros cros 47322212022 dwmac-sunxi.c
12 -rwxrwxr-x 1 cros cros 109932212022 enh_desc.c
4 -rwxrwxr-x 1 cros cros 9432212022 eth_mac_tinker.c
4 -rwxrwxr-x 1 cros cros 2402212022 eth_mac_tinker.h
4 -rwxrwxr-x 1 cros cros 34772212022 kconfig
4 -rwxrwxr-x 1 cros cros 8902212022 makefile
12 -rwxrwxr-x 1 cros cros 111962212022 mmc_core.c
8 -rwxrwxr-x 1 cros cros 46722212022 mmc.h
8 -rwxrwxr-x 1 cros cros 72642212022 norm_desc.c
8 -rwxrwxr-x 1 cros cros 41442212022 ring_mode.c
24 -rwxrwxr-x 1 cros cros 226702212022 stmmac_ethtool.c
8 -rwxrwxr-x 1 cros cros 42112212022 stmmac.h
4 -rwxrwxr-x 1 cros cros 39032212022 stmmac_hwtstamp.c
96 -rwxrwxr-x 1 cros cros 945302212022 stmmac_main.c # 平台无关的mac驱动代码
12 -rwxrwxr-x 1 cros cros 84772212022 stmmac_mdio.c # mdio总线驱动代码
8 -rwxrwxr-x 1 cros cros 71882212022 stmmac_pci.c
12 -rwxrwxr-x 1 cros cros 113742212022 stmmac_platform.c
4 -rwxrwxr-x 1 cros cros 14412212022 stmmac_platform.h
8 -rwxrwxr-x 1 cros cros 53672212022 stmmac_ptp.c
4 -rwxrwxr-x 1 cros cros 31262212022 stmmac_ptp.h
rtl8211e phy芯片的驱动代码如下:
cros@cros-pc:~/work/asus/debian_kernel$ ls drivers/net/phy/ -ls
total
520
8 -rwxrwxr-x 1 cros cros 74102212022 kconfig
4 -rwxrwxr-x 1 cros cros 17572212022 makefile
20 -rwxrwxr-x 1 cros cros 180182212022 mdio_bus.c # mdio总线
32 -rwxrwxr-x 1 cros cros 325402212022 phy.c # phy状态机以及读写控制接口
40 -rwxrwxr-x 1 cros cros 402782212022 phy_device.c # 通用默认phy驱动
8 -rwxrwxr-x 1 cros cros 48922212022 realtek.c # realtek phy驱动

各文件中核心函数及其功能描述如下:

除此之外,还有一个最重要的部分就是phy状态机,该部分代码位于phy.c中,我画了一张图描述状态机的状态转移,如下图:


阅读(364) | 评论(0) | 转发(0) |
0

上一篇:namei.c详解

下一篇:linux设备树常用of_xxx api

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图