瑞芯微RGMII的配置

文章讲述了网络设备配置中的关键点,包括MAC和PHY的时钟配置,特别是125M和25M时钟的来源与问题,以及delay配置对通信稳定性的影响。此外,还提到了UDP丢包测试,通过调整Linux系统接收buffer解决了丢包问题,并对比了Linux与Windows下iperf测试的差异。
摘要由CSDN通过智能技术生成

主要配置项

 

     除去复位等信号,我们主要关注两大块的配置:

    时钟配置

     MAC 采用125M时钟,PHY采用25M时钟。

       主要配置时钟源,这个和具体硬件连线强相关。例如125M时钟可以来源于soc内部的PLL,也可以由对端PHY 提供。

      由对端PHY 提供时,由于MAC 和PHY是两个器件,对于125M这个时钟的走线要注意,毕竟是高速时钟。

      而网上一些资料显示rk家内部的125M时钟在某些型号上存在问题,在做实际上要和厂家确认。 

   delay的配置

    分为tx_delay 和rx_delay,可以由phy和mac侧进行配置。

    例如我们上图中 phy侧硬件启用了rx_delay,则rx由PHY侧进行 配置;而tx由MAC进行配置。

    RK家提供了测试工具,可以尽快测试出合适的delay值。

    delay值的影响:比如默认delay值为0x44,在通过hub和PC互联时没有问题,而和pc直接连接时,协商就有问题,有时不能协商,有时为100M

     所以已经要用测试工具找到合适的delay值

配置实战

    

&mdio0 {
	rgmii_phy0: phy@1 {
		compatible = "ethernet-phy-ieee802.3-c22";
		motorcomm,clk-out-frequency-hz = <125000000>;
		reg = <0x1>;		
	};
};

&gmac0 {
	// Use rgmii-rxid mode to disable rx delay inside Soc
	phy-mode = "rgmii-rxid";
	clock_in_out = "input";

	snps,reset-gpio = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>;
	snps,reset-active-low;
	// Reset time is 20ms, 100ms for rtl8211f 
	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
			&gmac0_clkinout>;

	tx_delay = <0x35>;
	// rx_delay = <0x4f>;

	phy-handle = <&rgmii_phy0>;
	status = "okay";
};

针对上述配置的解释:

1.  这里有两个部分,一部分为mac,一部分为phy,两者通过phy-handle进行了关联

2.  在gmac里面,启用了管脚 gmac0_clkinout,即125M时钟由PHY通过此管脚提供给GMAC

3.  在phy侧,启用clk-out-frequency-hz   125M时钟的配置,以便PHY驱动进行时钟的输出使能配置。这个具体的配置项字段要看具体phy的驱动。

UDP丢包测试

测试丢包

测试命令

iperf -s -u

iperf -c 192.168.10.10 -u -i 1 -b 1000M -t 60

结果丢包7.x%

buffer修改

而修改接收buffer

echo  6291456 >/proc/sys/net/core/rmem_default 

则丢包问题解决。

修改/etc/sysctl.conf

net.core.rmem_max=6291456    6M

net.core.rmem_default=6291456

linux 与windows差异

在linux下,iperf -s -u 默认的窗口大小只有204K,通过命令

iperf -s -u -w 4M也不能增大此窗口,只能通过上述命令修改。

而在windows下,则可以通过iperf -s -u -w 4M 对接收buffer进行临时修改测试。

RK3588以太网配置涉及到dts配置和调试步骤。在dts配置中,需要设置phy-mode为"rgmii-rxid",并配置相关的pin脚。此外,还需要设置tx_delay和phy-handle等参数。具体的配置步骤如下: 1. 在dts文件中进行配置设置相关参数: ``` &gmac1 { phy-mode = "rgmii-rxid"; pinctrl-names = "default"; pinctrl-0 = <&gmac1_miim &gmac1_tx_bus2 &gmac1_rx_bus2 &gmac1_rgmii_clk &gmac1_rgmii_bus &gmac1_clkinout>; tx_delay = <0x43>; phy-handle = <&rgmii_phy1>; status = "okay"; }; &mdio1 { rgmii_phy1: phy@1 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <0x1>; }; }; ``` 2. 编译并烧写配置文件,进行调试。 总结起来,RK3588以太网配置需要在dts文件中设置相关参数,包括phy-mode、pinctrl和tx_delay等。然后进行编译和烧写,最后进行调试。 [2<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [RK3588-RJ45以太网调试笔记](https://blog.csdn.net/weixin_44710103/article/details/128901748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [RK3588平台开发系列讲解(以太网篇)PHY状态机](https://blog.csdn.net/qq_33487044/article/details/104073283)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

proware

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值