Chinaunix首页 | 论坛 | 博客
  • 博客访问: 261905
  • 博文数量: 90
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2018-10-15 14:13
个人简介

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

文章分类

全部博文(90)

文章存档

2024年(3)

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 5096 221 2022 chain_mode.c
20 -rwxrwxr-x 1 cros cros 16536 221 2022 common.h
4 -rwxrwxr-x 1 cros cros 3793 221 2022 descs_com.h
8 -rwxrwxr-x 1 cros cros 5612 221 2022 descs.h
16 -rwxrwxr-x 1 cros cros 12328 221 2022 dwmac1000_core.c #千兆MAC驱动代码
8 -rwxrwxr-x 1 cros cros 6758 221 2022 dwmac1000_dma.c
16 -rwxrwxr-x 1 cros cros 12678 221 2022 dwmac1000.h
8 -rwxrwxr-x 1 cros cros 6287 221 2022 dwmac100_core.c # 百兆MAC驱动代码
8 -rwxrwxr-x 1 cros cros 4582 221 2022 dwmac100_dma.c
8 -rwxrwxr-x 1 cros cros 5874 221 2022 dwmac100.h
8 -rwxrwxr-x 1 cros cros 5521 221 2022 dwmac_dma.h
4 -rwxrwxr-x 1 cros cros 2153 221 2022 dwmac-generic.c # 默认平台相关代码
12 -rwxrwxr-x 1 cros cros 11021 221 2022 dwmac-ipq806x.c
8 -rwxrwxr-x 1 cros cros 7260 221 2022 dwmac_lib.c
4 -rwxrwxr-x 1 cros cros 2377 221 2022 dwmac-lpc18xx.c
4 -rwxrwxr-x 1 cros cros 2457 221 2022 dwmac-meson.c
48 -rwxrwxr-x 1 cros cros 46819 221 2022 dwmac-rk.c # RK平台相关代码
12 -rwxrwxr-x 1 cros cros 8387 221 2022 dwmac-socfpga.c
12 -rwxrwxr-x 1 cros cros 11175 221 2022 dwmac-sti.c
8 -rwxrwxr-x 1 cros cros 4732 221 2022 dwmac-sunxi.c
12 -rwxrwxr-x 1 cros cros 10993 221 2022 enh_desc.c
4 -rwxrwxr-x 1 cros cros 943 221 2022 eth_mac_tinker.c
4 -rwxrwxr-x 1 cros cros 240 221 2022 eth_mac_tinker.h
4 -rwxrwxr-x 1 cros cros 3477 221 2022 Kconfig
4 -rwxrwxr-x 1 cros cros 890 221 2022 Makefile
12 -rwxrwxr-x 1 cros cros 11196 221 2022 mmc_core.c
8 -rwxrwxr-x 1 cros cros 4672 221 2022 mmc.h
8 -rwxrwxr-x 1 cros cros 7264 221 2022 norm_desc.c
8 -rwxrwxr-x 1 cros cros 4144 221 2022 ring_mode.c
24 -rwxrwxr-x 1 cros cros 22670 221 2022 stmmac_ethtool.c
8 -rwxrwxr-x 1 cros cros 4211 221 2022 stmmac.h
4 -rwxrwxr-x 1 cros cros 3903 221 2022 stmmac_hwtstamp.c
96 -rwxrwxr-x 1 cros cros 94530 221 2022 stmmac_main.c # 平台无关的MAC驱动代码
12 -rwxrwxr-x 1 cros cros 8477 221 2022 stmmac_mdio.c # MDIO总线驱动代码
8 -rwxrwxr-x 1 cros cros 7188 221 2022 stmmac_pci.c
12 -rwxrwxr-x 1 cros cros 11374 221 2022 stmmac_platform.c
4 -rwxrwxr-x 1 cros cros 1441 221 2022 stmmac_platform.h
8 -rwxrwxr-x 1 cros cros 5367 221 2022 stmmac_ptp.c
4 -rwxrwxr-x 1 cros cros 3126 221 2022 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 7410 221 2022 Kconfig
4 -rwxrwxr-x 1 cros cros 1757 221 2022 Makefile
20 -rwxrwxr-x 1 cros cros 18018 221 2022 mdio_bus.c # MDIO总线
32 -rwxrwxr-x 1 cros cros 32540 221 2022 phy.c # PHY状态机以及读写控制接口
40 -rwxrwxr-x 1 cros cros 40278 221 2022 phy_device.c # 通用默认phy驱动
8 -rwxrwxr-x 1 cros cros 4892 221 2022 realtek.c # realtek phy驱动

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

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


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

上一篇:namei.c详解

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

给主人留下些什么吧!~~