在本文中,我们将深入探讨如何在 Rockchip SoC 上使用设备树(DTS)来配置以太网接口。通过详细的代码示例和配置说明,我们将指导您完成网络接口的设置,确保您的嵌入式 Linux 系统能够高效地进行网络通信。
Rockchip SoC 以太网接口概述
Rockchip SoC 通常包含多个以太网 MAC 接口,可以通过 RGMII 或其他接口连接到外部 PHY 芯片。本节将概述这些接口的基本特性。
设备树配置详解
我们将通过一个具体的设备树配置示例,展示如何配置两个以太网 MAC 接口 gmac0
和 gmac1
。
gmac0 配置
&gmac0 {
// 配置 RGMII 模式并禁用 SoC 内部的接收延迟
phy-mode = "rgmii-rxid";
// 设置时钟信号由 SoC 输出
clock_in_out = "output";
// 使用 GPIO3 的 RK_PB7 作为 PHY 复位引脚,低电平有效
snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
// 复位延迟设置
snps,reset-delays-us = <0 20000 100000>;
// 引脚控制配置
pinctrl-names = "default";
pinctrl-0 = <&gmac0_miim
&gmac0_tx_bus2
&gmac0_rx_bus2
&gmac0_rgmii_clk
&gmac0_rgmii_bus>;
// 设置传输延迟
tx_delay = <0x33>;
// 关联 RGMII PHY0
phy-handle = <&rgmii_phy0>;
status = "okay";
};
gmac1 配置
&gmac1 {
// 同 gmac0,配置 RGMII 模式并禁用接收延迟
phy-mode = "rgmii-rxid";
clock_in_out = "output";
// 使用 GPIO2 的 RK_PC3 作为 PHY 复位引脚,高电平有效
snps,reset-gpio = <&gpio2 RK_PC3 GPIO_ACTIVE_HIGH>;
// 复位延迟设置
snps,reset-delays-us = <0 20000 100000>;
// 引脚控制配置
pinctrl-names = "default";
pinctrl-0 = <&gmac1_tx_bus2
&gmac1_rx_bus2
&gmac1_rgmii_clk
&gmac1_rgmii_bus>;
// 设置不同的传输延迟
tx_delay = <0x1c>;
// 注释掉的 phy-handle 表示可能不需要手动指定
// phy-handle = <&rgmii_phy1>;
status = "okay";
// 固定链路配置
fixed-link {
status = "okay";
speed = <1000>;
full-duplex;
};
};
配置注意事项
在配置设备树时,请注意以下几点:
- 确保所有 GPIO 引脚和 PHY 句柄与您的硬件设计相匹配。
- 根据需要调整传输和接收延迟设置。
- 如果使用固定链路配置,请确保链路状态、速度和双工模式设置正确。
结论
通过本文的指导,您应该能够为您的 Rockchip SoC 系统配置以太网设备树。正确的设备树配置对于确保网络接口的稳定运行至关重要。