RK3588 MAC控制器 IP核
stmmac-platform:是通用层,负责处理所有使用Synopsys DWMAC IP核的芯片的共性操作。
dwmac-rockchip:是平台特定层(也叫“胶水层”),负责处理Rockchip芯片独有的硬件特性。
stmmac-platform- 通用平台驱动
- 角色:这是一个通用驱动,并非Rockchip独有。
- 作用:它为所有集成Synopsys DesignWare MAC (DWMAC) IP核的SoC提供了一个标准化的平台适配层。它负责:
- 解析设备树(Device Tree)中的通用属性,例如寄存器地址、中断号、时钟等。
- 执行DWMAC IP核所需的通用初始化序列。
- 提供标准的probe(探测)、remove(移除)等函数,作为连接真正核心驱动(stmmac)和具体平台驱动(如dwmac-rockchip)的桥梁。
- 依赖关系:它直接依赖于最核心的 stmmac(或stmmac-core)驱动,该驱动实现了MAC层的所有通用操作(数据包收发、DMA控制、设备管理等)。
可以把它想象成一个“通用适配器”,一头连接标准接口(stmmac-core),另一头准备连接各种具体的平台(如Rockchip、STMicroelectronics、Amlogic等)。
dwmac-rockchip - Rockchip平台驱动
- 角色:这是一个平台特定驱动,是Rockchip为其自家SoC(如RK3288, RK3328, RK3399, RK3588等)编写的“胶水层”(Glue Layer)。
- 作用:它负责处理Rockchip芯片上与集成和配置DWMAC IP核相关的所有独有硬件特性。具体包括:
- 时钟管理:配置Rockchip特有的GRF(General Register File)寄存器,以设置正确的PHY接口时钟(如RGMII、RMII、SGMII等)。
- 电源管理:控制以太网控制器的供电域。
- 引脚复用:通过Rockchip的Pinctrl系统,将SoC的引脚设置为以太网功能。
- 硬件初始化:执行只有Rockchip芯片才需要的特殊初始化步骤,例如调整信号驱动强度、延迟值等,以确保物理信号的稳定性。
- 处理平台特定数据:解析设备树中Rockchip特有的属性(例如 phy-mode = "rgmii", clock_in_out = "input")。
- 依赖关系:它依赖于 stmmac-platform驱动,并向其注册自己提供的平台特定操作。
可以把它想象成“Rockchip专用转接头”,它插在“通用适配器”(stmmac-platform)上,告诉通用层如何在Rockchip这块主板上正确工作。
总结
| 驱动名称 | 性质 | 职责 | 源代码文件 (通常位于) |
|---|---|---|---|
| dwmac-rockchip | 平台专用 | 处理Rockchip芯片特有的硬件设置 | drivers/net/ethernet/stmicro/stmmac/dwmac-rockchip.c |
| stmmac-platform | 通用适配 | 处理所有DWMAC IP核的通用初始化流程 | drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c |
| stmmac(core) | 核心功能 | 实现MAC的所有通用操作和数据流处理 | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
使用的RK3588芯片,其内部的千兆以太网控制器是通过授权集成Synopsys的DesignWare Ethernet MAC IP而来的。而Linux内核中的stmmac驱动,正是为操作这个IP核而编写的通用软件接口。
本文来自博客园,作者:潇汀,转载请注明原文链接:https://www.cnblogs.com/allalonewithyou/p/19081405,个人邮箱:yaonie4444@foxmail.com

浙公网安备 33010602011771号