Blog:
NXP iMX8X双以太网配置

2020年4月28日星期二

简介

NXP iMX8X 是 NXP 近期发布的基于 Cortex-A35 和 Coretex-M4 异构多核架构的 Arm 处理器,支持两路 MAC 控制器,可以通过外置百兆或者千兆 PHY 芯片扩展两路以太网接口,本文就采用 Toradex 基于 NXP iMX8X SoC 的 Arm 核心板模块 Colibri iMX8X 示例扩展两路以太网。

第一路以太网

Colibri iMX8X 模块已经通过模块上面部署的一个 Microchip KSZ8041NL 百兆 PHY 芯片默认支持了第一路百兆以太网

KSZ8041NL 的参考电路请参考这里(原理图示例的 SoC MAC 端来自 Toradex VF61 Arm 模块的定义,在 iMX8X 或者其他平台上面不能直接引用,请只参考 PHY 一侧的连接),PHY Address 配置为2。

基于上述配置的第一步以太网对应的 device tree 节点定义和 pinmux 定义请参考如下,内核基于 4.14.159 版本

# arch/arm64/boot/dts/freescale/fsl-imx8qxp-colibri.dtsi

&fec1 node节点定义请参考这里

&fec1 pinmux定义请参考这里

第二路以太网

第二路以太网通过模块预留的 RMII 或者 RGMII 接口连接百兆 PHY 或者千兆 PHY 来扩展,Colibri iMX8X RMII 或者 RGMII 接口管脚定义请参考手册5.3章节。

同样使用 KSZ8041NL 百兆 PHY 扩展的参考电路请参考这里(原理图示例的 SoC MAC 端来自 Toradex VF61 ARM 模块的定义,在 iMX7 或者其他平台上面不能直接引用,须按照上面手册定义连接),如需要连接千兆PHY,请参考所使用的千兆 PHY(如 Microchip KSZ9031RNL)手册进行连接。PHY Address配 置为默认的1。

  • 通过 ENET2 RMII 接口连接 KSZ8041N L百兆 PHY 的 device tree 配置参考如下 patch,注意如下:
    由于iMX8X ENET1和ENET2 两路MAC共享同一路MDIO总线,因此两路PHY的节点都放在&fec1节点mdio下面,通过不同的PHY Address来区分。
  • ENET2 Pinmux和lcd功能冲突,因此如果使用ENET2,则要将lcd 功能关闭

https://github.com/simonqin09/Colibri_iMX8X_2nd_Ethernet/blob/master/0001-colibri-imx8x-rmii-ksz8041-support_20200424.patch

详细下载和编译Kernel源代码,以及部署新的设备树到模块的方法说明请参考这里

总结

本文基于 NXP iMX8X 示例了双路以太网的设计和配置思路,同时对于其他支持双路 MAC 的 NXP i.MX Arm 处理器(如iMX8)的配置思路也都是一致的,只是具体的 clock 和 pinmux 定义等要做对应的适配。

作者: 秦海,技术销售工程师,韬睿(上海)

评论

Please login to leave a comment!
Have a Question?