RK3588搭配RTL8367s搭建四网口千兆交换机的完整配置指南(含DTS详解)

RK3588与RTL8367s构建高性能四网口交换机的实战全解析

最近在折腾一个边缘计算网关项目,核心需求是要在一块板子上实现多网口的高速数据交换。市面上现成的方案要么太贵,要么性能达不到要求,于是把目光投向了瑞芯微的RK3588和瑞昱的RTL8367s这对组合。折腾了小半个月,从硬件选型、内核驱动适配到DTS配置,踩了不少坑,也积累了一些实战经验。这篇文章就是把这些过程整理出来,给同样想用这套方案搭建千兆交换机的朋友一个参考。无论你是嵌入式开发者,还是热衷于网络设备DIY的极客,相信都能从中找到有用的信息。

这套方案的核心思路,是利用RK3588 SoC内置的千兆以太网控制器(GMAC),通过RGMII接口连接RTL8367s这颗五口千兆交换芯片,从而扩展出四个独立的千兆以太网口。听起来简单,但要让Linux内核正确识别并驱动整个交换网络,DTS设备树的配置是关键,也是新手最容易迷糊的地方。我会从硬件连接原理讲起,逐步深入到两种主流的配置方式(MDIO和SMI),并分享调试过程中遇到的典型问题及其解决方法。

1. 硬件架构与选型考量

在动手写代码之前,搞清楚硬件是怎么连的,比什么都重要。RK3588本身通常提供至少一个千兆以太网MAC(媒体访问控制器),但它需要一个外部的PHY(物理层接口芯片)才能把数字信号变成能在网线上跑的模拟信号。而RTL8367s这类交换芯片,内部集成了多个PHY和一个交换引擎,它既能充当PHY,又能完成多个端口之间的数据交换。

RK3588与RTL8367s的典型连接方式如下:

  1. 数据通道:RK3588的GMAC通过RGMII(简化千兆媒体独立接口)与RTL8367s的CPU端口(通常是Port 6或Port 5)相连。RGMII接口包含数据线、控制线和时钟线,是千兆速率下常用的并行接口。
  2. 控制通道:RK3588需要配置和控制RTL8367s内部的寄存器,这就需要MDIO(管理数据输入输出)总线。MDIO是一个两线制的串行总线(MDC时钟线和MDIO数据线),主控制器(RK3588)通过它来读写交换芯片内部各个PHY的状态寄存器。

这里就引出了第一个关键选择:MDIO总线的实现方式。RK3588的SoC通常有硬件的MDIO控制器,我们直接使用它,这就是标准MDIO模式。但如果硬件设计时没有引出专用的MDIO引脚,或者你想用更灵活的GPIO来控制,那就需要采用SMI(串行管理接口)模式,即用两个普通的GPIO口来模拟MDIO的时序。两种方式在软件配置上差异很大。

关于芯片选型,瑞昱的8367系列型号不少,容易搞混。我们用的RTL8367s,通常有5个UTP口(内置PHY)和2个扩展口。扩展口可以配置为RGMII、SGMII等模式,用来连接主控。在采购或确认硬件时,最好通过读取芯片ID和版本号来最终确认。

// 一个读取RTL8367s芯片ID的示例代码片段
ret = rtl8367d_setAsicReg(unit, 0x13C2, 0x0249); // 写入magic number
if (ret != RT_ERR_OK) return ret;
ret = rtl8367d_getAsicReg(unit, 0x1300, &chip_id); // 读取0x1300寄存器,获取芯片ID
if (ret != RT_ERR_OK) return ret;
ret = rtl8367d_setAsicReg(unit, 0x13C2, 0x0000); // 恢复
if (ret != RT_ERR_OK) return ret;
// 类似地,从0x1301可以读取硅版本号

注意:不同型号的8367芯片,其寄存器地址和功能可能略有差异,务必以官方数据手册为准。上述代码仅为示意,实际驱动中可能已封装好相应的识别函数。

2. 内核准备与驱动基础

要让Linux系统支持我们的交换芯片,内核配置是第一步。RK3588的BSP(板级支持包)通常基于较新的内核,比如5.10或更高,这对我们来说是好事,因为对新硬件的支持更好。

必须确保内核配置中包含以下关键选项:

  • CONFIG_NET_DSA:这是分布式交换架构的核心,允许一个网络设备驱动管理多个物理端口。我们的RTL8367s就是作为DSA交换机挂载在系统中的。
  • CONFIG_NET_DSA_REALTEK:瑞昱DSA交换芯片的通用驱动支持。
  • CONFIG_NET_DSA_TAG_RTL4_A 等:数据包在CPU端口和交换芯片之间传输时需要的标签协议驱动,用于区分数据包属于哪个物理端口。
  • 相应的MDIO总线驱动或GPIO模拟MDIO的支持。

检查你的内核配置文件(.config),如果缺少上述选项,需要通过 make menuconfig 进入配置界面,在 Device Drivers -> Network device support -> Distributed Switch Architecture 下找到并启用它们。

编译并更新内核

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值