RTL8211F-CG硬件调试日志

本文详细解释了RGMII接口在千兆PHY中的应用,涉及时钟配置、PHY与MAC匹配、125MHz时钟来源、RGMII特性(如数据采样和时钟同步)以及Linux驱动框架。重点讲解了MAC的phy-mode设置、clock_in_out和clock_frequency参数,以及如何处理可能的问题如时钟过冲和PCB布局影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程:

1、首先保证PHY的25MHz外部晶振正常工作;

2、PHY产生125MHz时钟信号(CLKOUT)--->MAC;

CLKOUT :O ,125/25MHz Reference Clock Generated from Internal PLL.
This pin should be kept floating if this clock is not used by MAC.

3、MAC通过MDC、MDIO进行配置PHY;

如果没有MDC和MIDIO信号,或者不稳定,就要考虑PHY-->MAC (CLKOUT引脚)的125M时钟信号是否匹配,注意测量时钟的幅值和频率,通常需要串一个电阻例如22欧,进行匹配。

有些情况是RTL8211给MAC的125MHz参考钟过冲太大,将CPU对应的时钟输入管脚击穿了(可以测一下该管脚的对地阻抗是否正常,来判断是否是此原因)。

对于MAC端来说,驱动配置时,

  • phy-mode: 根据板上所使用的 PHY 的接口进行配置,一般千兆 PHY 为 RGMII, 百兆 PHY 为 RMII。
  • clock_in_out : input 表示由 PHY 提供,output 表示由 GMAC 提供。
  • clock-frequency:只有在时钟方向为input时才会使用到,RMII接口时,设为 50M,RGMII接口时设为125M。125M由外部 PHY (CLKOUT)提供,这是因为 RK 主控分出的 clock 不精准,会造成 GMAC 丢包或无法工作。由外部输入的时钟相对于内部 PLL 产生的时钟更加独立,不受内部分频策略的影响,因此更加稳定。而对于 PHY 来说,本身就需要一个 25M 的晶振作为时钟源。
  • tx_delay/rx_delay: RGMII 接口才需要去配置时序,因为时钟频率更高后更容易受到 PCBlayout走线,电磁干扰等影响,需要更加精确调整。如果有出现测试吞吐率不足的情况,可以适当调整这两个值,范围是 0x0—0x7F。
  • 从kernel 4.4 版本开始,各驱动尽可能使用官方 Linux kernel 的代码,官方kernel 中已包含了支持 RK 所使用的 GMAC 的代码框架(很多RK的驱动已经上传到官方kernel,也包括GMAC)。所以往后芯片的 GMAC 驱动会套用此框架。
  • 代码位置在 drivers/net/ethernet/stmicro/stmmac/。
    RK 平台相关代码主要位于dwmac-rk.c中。

 RGMII: Reduced Gigabit Media Independent Interface

 


RGMII相比于GMII减小将近一半的管脚数(24 → 12),通过以下两种方式:

  • 1000Mbps模式下,在时钟的/下边沿均采样数据
  • 取消不重要的如 CRSCOL 等信号

在RGMII接口中 MAC 在 TXC 上一直提供时钟信号,而不像在GMII接口中那样,10/100Mbps 模式下时钟是由 PHY 提供(TXCLK),而 1000Mbps 模式下时钟是由 MAC 提供(GTXCLK)。在RGMII中应用到源同步时钟,即数据与时钟信号是同步的。这要求在PCB设计中,要对时钟信号额外增加 1.5~2 ns 的延迟以保证接收端的建立/保持时间满足要求。在 RGMII v2.0 规范中有定义MAC/PHY内部延迟(RGMII-ID),由此避免PCB设计中再要增加这个延迟。

在RGMII接口中:

  • 1000Mbps 模式,数据在时钟的/下边沿均采样
  • 10/100Mbps 模式,数据仅在时钟上升沿采样

RXCTL 和 TXCLT 为复用的传输控制信号。RXCTL 在时钟的上升沿代表 RXDV,在时钟的下降沿代表(RXDV xor RXER);TXCTL 在时钟的上升沿代表 TXEN,在时钟的下降沿代表(TXEN xor TXER)。

RGMII v1.3 采用 2.5V CMOS 电平,RGMII v2 采用 1.5V HSTL 电平。

根据板上所使用的 PHY 的接口进行配置,一般千兆 PHY 为 RGMII, 百兆 PHY 为 RMII。

### RTL8822CU-CG 芯片调试命令和方法 对于RTL8822CU-CG芯片的调试,通常涉及多个方面的工作,包括但不限于驱动程序的适配、固件更新以及特定环境下的性能优化。针对该款芯片,在进行调试时可以参照如下几种常见操作: #### 添加必要的驱动支持文件 为了使RTL8822CU-CG能够在Linux环境下正常工作并便于后续调试,需向内核源码目录`/linux-4.1.15/drivers/bluetooth`下添加一系列与蓝牙功能相关的驱动模块,如`hci_h4.c`, `hci_ldisc.c`, `hci_rtk_h5.c`, `hci_uart.h`, `rtk_coex.c`, 和 `rtk_coex.h`等文件[^1]。 #### 获取最新版本驱动代码 建议从官方维护者处获取最新的驱动程序以确保兼容性和稳定性。可以通过Git工具克隆指定仓库来获得rtl88x2bu项目中的资源: ```bash git clone https://github.com/cilynx/rtl88x2bu.git cd rtl88x2bu ``` 接着按照说明文档完成配置及编译流程[^2]。 #### 使用dmesg查看日志信息 当遇到设备无法识别或其他异常情况时,利用`dmesg | grep -i bluetooth`命令可以帮助定位问题所在位置;此命令会过滤出所有含有“bluetooth”的消息记录,从而简化排查范围。 #### 应用btmon监控HCI事件 通过安装bluez-tools包可以获得更强大的诊断能力,其中包含了一个名为`btmon`的应用程序用于实时监听主机控制器接口(HCI)上的活动状况。启动方式为: ```bash sudo btmon & ``` 这将在后台运行,并持续报告任何发生的通信细节直至手动终止进程为止。 #### 执行hciconfig检查状态 另一个有用的工具叫做`hciconfig`,它允许用户查询当前已连接的无线网卡及其属性设置。执行不带参数的形式即可显示概览列表; 而如果想要深入了解某个具体实例,则可以在其后面附加相应的编号(例如`0`代表第一个发现的Bluetooth装置)作为选项传递进去: ```bash hciconfig hci0 up # 启用选定的蓝牙适配器 hciconfig # 列举所有可用的蓝牙硬件单元 ``` 以上便是围绕着RTL8822CU-CG开展的一些基础性的测试手段介绍。值得注意的是实际应用场景可能会更加复杂多变,因此上述指导仅供参考之用,在实践过程中还需灵活调整策略应对各种突发状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zsp_1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值