2. Layerscape SoC与网络子系统
Layerscape 系列是 NXP 面向网络与嵌入式基础设施的 64 位 ARM SoC 家族,其网络子系统的设计思路高度一致:由 SerDes 提供高速串行通道,经以太网控制器(EC / DPAA 前端)形成 MAC 层,再通过接口类型与外部 PHY 或光模块连接,最后由时钟与复位体系保证各域同步启动与稳定运行。理解这一条链路,是后续学习报文解析、分发与转发的前提。
典型型号与网络能力定位
LS1043A、LS1046A、LS1088A、LX2160A 是课程中最常出现的四个代表。它们共享 DPAA(Data Path Acceleration Architecture)思想,但规模与定位差异明显。
| 型号 | CPU 核心 | 典型以太网能力 | SerDes 规模 | 定位 |
|---|---|---|---|---|
| LS1043A | 4×Cortex-A53 | 最多 5 个 1G + 1 个 10G | 4 lane,最高 10G | 入门级边缘网关、工业路由 |
| LS1046A | 4×Cortex-A72 | 最多 8 个 1G/2.5G + 2 个 10G | 8 lane,最高 10G | 中端交换/安全网关 |
| LS1088A | 8×Cortex-A53 | 最多 8 个 1G/10G 组合 | 8 lane,最高 10G | 多口汇聚、vCPE |
| LX2160A | 16×Cortex-A72 | 最多 16 个 25G/100G 组合 | 24 lane,最高 25G | 高端核心、5G UPF、数据中心 |
表中“最多”指芯片可配置上限,实际可用数量取决于 SerDes 通道分配、封装引脚与板级设计。例如 LS1046A 的 8 条 SerDes lane 可拆分为 8×1G、2×10G+4×1G 等多种组合,一旦在 RCW(Reset Configuration Word)中确定协议分配,就不能在运行时随意更改。
SerDes 与以太网 MAC 的关系
SerDes(Serializer/Deserializer)是物理层的高速串行收发器,负责并串转换、时钟恢复与均衡。它本身不解析以太网帧,只提供“管道”。以太网 MAC 控制器位于 SerDes 之上,负责帧的成帧/解帧、CRC 校验、流控、地址过滤,并通过 MII/GMII/XGMII 等内部接口与 SerDes 侧的 PCS/PMA 对接。
在 Layerscape 中,MAC 通常由 DPAA 的 EC(Ethernet Controller)或 mEMAC 实现,每个 MAC 对应一个网络接口(如 eth0、eth1)。MAC 与 SerDes 的绑定关系由设备树(Device Tree)描述,典型节点包含 phy-handle、phy-mode、fixed-link 等属性。例如:
ethernet@1 {
compatible = "fsl,ls1046a-dpaa2-mac";
reg = <0x1 0x0 0x10000>;
phy-mode = "xgmii";
phy-handle = <&phy0>;
fixed-link {
speed = <10000>;
full-duplex;
};
};
其中 phy-mode 决定 MAC 与 PHY 之间的接口类型,常见取值包括 rgmii、sgmii、xgmii、usxgmii、2500base-x 等。选择错误会导致链路无法 up 或出现大量 CRC 错误。
网络接口与 PHY 连接方式
Layerscape 的网络接口连接分为三类:
- MAC 直连 PHY:最常见,MAC 通过 RGMII/SGMII 连接外部 PHY 芯片(如 Marvell 88E1512、TI DP83867),PHY 再驱动 RJ45 或光模块。此时需配置 MDIO 总线,由 MAC 通过 MDIO 读写 PHY 寄存器。
- MAC 直连光模块/SFP:10G 及以上常用 SGMII+/XFI 直接连接 SFP+ 笼子,无独立 PHY,链路状态通过 I2C 读取 SFP EEPROM 获取。
- MAC 背靠背或固定链路:芯片间互联或板内固定速率场景,使用
fixed-link描述,不经过 PHY 协商。
MDIO 是管理接口,不是数据通道。它由 MDC 时钟和 MDIO 数据线组成,MAC 作为主设备,PHY 作为从设备,通过 5 位 PHY 地址和 5 位寄存器地址访问。设备树中通常这样描述:
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@0 {
reg = <0>;
reset-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
};
};
PHY 复位通常由 GPIO 控制,复位时序要求:复位拉低至少 10ms,释放后等待 PHY 内部 PLL 锁定(典型 100ms 内),再开始 MDIO 访问。若忽略该时序,可能出现 PHY ID 读取为 0xffff 或链路不稳定。
时钟与复位体系
Layerscape 的时钟体系分为参考时钟、SerDes 时钟和内核时钟三部分。SerDes 参考时钟通常由外部晶振或时钟芯片提供,频率为 100MHz 或 125MHz,具体取决于协议:
- 1G SGMII/RGMII:125MHz 参考
- 10G XFI/SFI:156.25MHz 或 161.1328125MHz
- 25G:156.25MHz 参考,经内部 PLL 倍频
参考时钟的抖动(jitter)直接影响 SerDes 误码率。工程上要求 RMS 抖动小于 1ps(10G 以上),因此需选用低抖动时钟源,并在 PCB 上做好差分走线阻抗控制(100Ω±10%)。
复位体系包括上电复位(POR)、系统复位、模块复位三级。POR 由外部复位芯片或 PMIC 产生,释放后芯片读取 RCW 配置字,确定 SerDes 协议、启动模式、时钟分频等。RCW 通常存储在 NOR Flash 或 SD 卡中,由硬件引脚选择启动源。模块复位则通过 CCSR 寄存器或设备树中的 resets 属性控制,例如:
resets = <&reset 0 2>; /* 复位控制器 0,索引 2 */
调试时若网络接口不出现,应首先确认:RCW 中 SerDes 协议是否与板级一致、参考时钟是否起振、PHY 复位是否释放、MDIO 是否能读到 PHY ID。这四步是排查链路问题的基本顺序。
上图把 SerDes、MAC、DPAA、PHY 以及时钟复位的关系放在同一视图中。可以看到,参考时钟同时影响 SerDes 和 PHY,复位信号则分别作用于 SoC 内部模块和外部 PHY。MDIO 是跨域的慢速管理通道,与高速数据路径分离。实际调试时,若链路不通,按图中底部顺序逐级确认,通常能快速定位问题域。
phy-mode 必须与硬件实际连接一致。例如板级使用 SGMII 却写成 rgmii,内核会按 RGMII 时序驱动,导致链路无法建立。可通过 ethtool eth0 查看当前协商速率与双工模式,与预期对比。最后需要强调,Layerscape 的网络子系统不是孤立模块,它与 DPAA 的帧队列、缓冲区管理、硬件解析器紧密耦合。SerDes 和 MAC 只解决“帧进出”的问题,而“帧往哪里去、如何加速”由 DPAA 完成。下一阶段学习报文分发时,应始终把本节建立的信号链作为底层参照。