本文作者:烟火之旅

RK系列核心板+JL6110,国产交换机芯片适配指导

烟火之旅 2026-04-18 5190

前言:

在工业物联网和边缘计算场景中,多网口需求日益普遍。传统方案依赖进口交换芯片,不仅成本高昂,供应链风险也不容忽视。景略半导体(JLSemi)推出的JL6110国产交换机芯片,以其低功耗、高集成度的特性,成为国产化替代的理想选择。

本文基于眺望电子RK3568核心板平台,详细记录JL6110交换机芯片的MAC-to-MAC适配全过程,涵盖设备树配置、驱动移植、调试技巧及性能验证,为同类项目提供实战参考。

一、MAC-to-MAC连接架构

1.1硬件连接方式

SoC内部MAC控制器与交换机芯片MAC采用RGMII直连方案:

MAC0--RGMII-- MAC1TXD[3:0] → RXD[3:0]TX_EN → RX_DVTX_CLK → RX_CLKRXD[3:0] ← TXD[3:0]RX_DV ← TX_ENRX_CLK ← TX_CLK

1.2关键Strap Pin配置

JL6110的SMI_SEL引脚为典型Strap Pin(启动配置脚),用于选择管理接口类型:

SMI_SEL_1 SMI_SEL_0 模式
0 0 I2C(LSB地址模式)
0 1 I2C(MSB地址模式)
1 0 MDIO / SMI(推荐)
1 1 Lite I2C

推荐配置为10(MDC/MDIO模式),与RK3568 GMAC控制器兼容。

50ef7414-3a3c-11f1-ab55-92fbcf53809c.png二、设备树配置详解

RK3568支持双GMAC控制器,均可配置为MAC-to-MAC模式:

&gmac0 { status ="okay"; phy-mode ="rgmii"; clock_in_out ="output"; assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>; assigned-clock-rates = <0>, <125000000>; snps,reset-gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; snps,reset-active-low; snps,reset-delays-us = <0 10000 2000000>; pinctrl-names ="default"; pinctrl-0= <&gmac0_miim             &gmac0_tx_bus2             &gmac0_rx_bus2             &gmac0_rgmii_clk             &gmac0_rgmii_bus>; tx_delay = <0x4a>; //rx_delay = <0>; fixed-link{ speed = <1000>; full-duplex; };};&gmac1 { status ="okay"; phy-mode ="rgmii"; clock_in_out ="output"; assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; assigned-clock-rates = <0>, <125000000>; snps,reset-gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>; snps,reset-active-low; snps,reset-delays-us = <0 10000 2000000>; pinctrl-names ="default"; pinctrl-0= <&gmac1m1_miim             &gmac1m1_tx_bus2             &gmac1m1_rx_bus2             &gmac1m1_rgmii_clk             &gmac1m1_rgmii_bus>; tx_delay = <0x4a>; //rx_delay = <0x20>; fixed-link{ speed = <1000>; full-duplex; };};&mdio0 {rgmii_phy0: phy@0{compatible ="ethernet-phy-ieee802.3-c22";reg = <0x0>;};};&mdio1 {rgmii_phy1: phy@0{compatible ="ethernet-phy-ieee802.3-c22";reg = <0x0>;};};

关键配置说明:

- fixed-link节点表示MAC-to-MAC直连,无需外部PHY

- phy-handle属性需注释掉,避免驱动尝试外部PHY通信

- tx_delay值需根据实际PCB走线调整(通常0x4a-0x50)

三、JL6110驱动移植

3.1内核配置

移植JL6110 SDK后,需在内核配置中启用SMI interface支持:

Device Drivers → Network device support → Ethernet driver support →JLSemi Switch Support → SMI interface

3.2驱动适配

JL6110驱动使用port_mdio_read/port_mdio_write函数与硬件通信,需适配为RK3568内核的mdiobus_read/mdiobus_write接口:

externstructmii_bus*jl_mii_bus, *jl_mii_bus1;voidport_mdio_write(jl_io_desc_t*io_desc, jl_uint8 phy, jl_uint8 reg, jl_uint16 val){ if((io_desc->smi.mdio.bus_id &0xffffff)==0) { mdiobus_write(jl_mii_bus, (int)phy, (u32)reg, val); }elseif((io_desc->smi.mdio.bus_id &0xffffff)==1){ mdiobus_write(jl_mii_bus1, (int)phy, (u32)reg, val); }}jl_uint16port_mdio_read(jl_io_desc_t*io_desc, jl_uint8 phy, jl_uint8 reg){ intdata =0; if((io_desc->smi.mdio.bus_id &0xffffff)==0) { data =mdiobus_read(jl_mii_bus, (int)phy, (u32)reg); }elseif((io_desc->smi.mdio.bus_id &0xffffff)==1){ data =mdiobus_read(jl_mii_bus1, (int)phy, (u32)reg); } return(jl_uint16)(data &0xffff);}

四、调试与验证

4.1驱动加载检查

正常加载后,内核日志应显示:

5107df54-3a3c-11f1-ab55-92fbcf53809c.png

网口驱动正常如下打印信息:

4.2PHY ID验证

通过debug接口读取芯片ID确认通信正常:

echo-r -a0x244008 -s1> /proc/jlmdio/debug # 应返回0x937Cecho-r -a0x24400C -s1> /proc/jlmdio/debug # 应返回0x4031

4.3功能实测

4.3.1 动态IP获取

将网线插入6个RJ45的任意一个,可执行以下命令手动获取 IP 地址:

ifconfig eth0 upudhcpc -ieth0ping www.baidu.com-Ieth0 -c5

5123ee10-3a3c-11f1-ab55-92fbcf53809c.png

4.3.2 iperf带宽测试

iperf-c192.168.0.7-t5-i1

512abae2-3a3c-11f1-ab55-92fbcf53809c.png

带宽稳定在900Mbps以上。

4.3.3 光口测试&交换机功能测试

将光模块和光纤插上SFP1(系统节点为eth1),测试方法与电口测试方法一致。交换机其余网口之间可互通。

总结

通过本文介绍的MAC-to-MAC适配方案,眺望电子RK3568核心板可稳定驱动JL6110国产交换机芯片,实现:

双GMAC控制器同时工作

12路千兆电口+1路光口扩展

驱动层完整适配,内核级稳定运行

iperf实测带宽900Mbps+

国产化替代不仅是供应链安全的选择,更是技术自主可控的必经之路。眺望电子将持续深耕国产化生态适配,为工业嵌入式领域提供可靠、可控的硬件解决方案。更多资料获取可以关注我们公众号或者同事联系获取。