By Toradex秦海

1). 简介

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

 

 

2). 第一路以太网

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

 

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

 

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

---------------------------------------

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

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

./ &fec1 pinmux定义请参考这里

---------------------------------------

 

 

3). 第二路以太网

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

 

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

 

c). 通过ENET2 RMII接口连接KSZ8041NL百兆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

 

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

 

 

4). 总结

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