SoC : : Architecture/: : i.MX

i.MX 9 BSP Porting Guide - Porting Ethernet

Jay.P Morgan 2024. 4. 30. 23:43

 

  18.1  Intro

 

  이 장에서는 Ethernet controller driver를 i.MX 6/7/8/9 시리즈 프로세서에 포팅하는 방법을 설명합니다. 현재 i.MX 플랫폼은 세 가지 이더넷 컨트롤러를 사용합니다. 해당 관계는 다음 표를 참조하세요.

 

  ※ 표 9.  i.MX 플랫폼에 사용되는 이더넷 컨트롤러

Platforms FEC EQoS NETC
i.MX 6 Series - -
i.MX 7Solo/Dual - -
i.MX 8M Mini/Nano/Quad - -
i.MX 8M Plus -
i.MX 8QuadXPlus/QuadMax - -
i.MX 8DualX/DXL -
i.MX 93 -
i.MX 95 - -

 

  모든 i.MX 플랫폼은 표준 네트워크 드라이버를 사용하여 이더넷 컨트롤러를 작동하므로 포팅 프로세스가 단순화됩니다. 이식은 다음 세 가지 영역을 해결해야 합니다.

     • 핀 구성
     • 소스 코드
     • 이더넷 연결 구성

 

 

  18.1.1  Pin Configuration


FEC 및 EQoS 이더넷 컨트롤러는 세 가지 표준 물리적 미디어 인터페이스를 지원합니다.
     • MII (Media Independent Interface, 미디어 독립 인터페이스)
     • RMII (Reduced Media Independent Interface, 축소된 미디어 독립 인터페이스)
     • 4-bit 축소 기가비트 MII (RGMII)

NETC 이더넷 컨트롤러는 다음을 지원합니다.
     • RMII
     • RGMII
     • Serial Gigabit MII (SGMII, 직렬 기가비트 MII) 및 오버클럭된 SGMII(OC-SGMII)
     • Universal Serial 10기가비트 MII (범용 직렬 USXGMII)
     • 10 Gigabit framer interface (XFI)

  또한 이더넷 컨트롤러에는 외부 이더넷 트랜시버 연결을 위한 다양한 표준 MAC-PHY(physical) 인터페이스에 대한 지원이 포함되어 있습니다. 다음 표에는 i.MX 플랫폼에서 지원하는 이더넷 컨트롤러 인터페이스가 나열되어 있습니다.

 

  ※ 표 10.  i.MX 플랫폼을 지원하는 MAC-PHY 인터페이스 

Platforms MII
(10/100Mbps)
RMII
(10/100Mbps)
RGMII
(10/100/1000Mbps)
SGMII/USXGMII/XFI
(1/2.5/5/10Gbps)
i.MX 6SL/UL/ULL - -
i.MX 6Solo/SoloX -
i.MX 6Dual/DualLite/ DualPlus -
i.MX 6Quad/QuadPlus -
i.MX 7Solo/Dual -
i.MX 8M Quad - -
i.MX8M Mini/Nano/Plus - -
i.MX 8QuadXPlus/ QuadMax - -
i.MX 8DualX/DXL √ (only EQoS) -
i.MX 93 - -
i.MX 95 -

  여기에는 장치 기능에 대한 간략한 개요가 제공됩니다. 자세한 내용은 관련 애플리케이션 프로세서 참조 설명서의 이더넷 장을 참조하세요.


MII 모드에는 IEEE 802.3 표준에 의해 정의되고 EMAC에서 지원되는 18개의 신호가 있습니다. MII, RMII 및 RGMII 모드는 18개 신호의 하위 집합을 사용합니다. 이러한 신호는 다음 표에 나열되어 있습니다.

 

  ※ 표 11. MII RMII 및 RGMII 모드의 핀 사용

Direction EMAC pin name MII usage RMII usage RGMII usage
In/Out MDIO Management Data Input/Output Management Data
Input/output
Management Data Input/Output
Out MDC Management Data Clock General output Management Data Clock
Out TXD[0] Data out, bit 0 Data out, bit 0 Data out, bit 0
Out TXD[1] Data out, bit 1 Data out, bit 1 Data out, bit 1
Out TXD[2] Data out, bit 2 Not Used Data out, bit 2
Out TXD[3] Data out, bit 3 Not Used Data out, bit 3
Out TX_EN Transmit Enable Transmit Enable Transmit Enable
Out TX_ER Transmit Error Not Used Not Used
In CRS Carrier Sense Not Used Not Used
In COL Collision Not Used Not Used
In TX_CLK ransmit Clock Not Used Synchronous clock reference (REF_
CLK, can connect from PHY)
In RX_ER Receive Error Receive Error Not Used
In RX_CLK Receive Clock Not Used Synchronous clock reference (REF_
CLK, can connect from PHY)
In RX_DV Receive Data Valid Receive Data Valid and generate CRS RXDV XOR RXERR on the falling edge of FEC_RX_CLK.
In RXD[0] Data in, bit 0 Data in, bit 0 Data in, bit 0
In RXD[1] Data in, bit 1 Data in, bit 1 Data in, bit 1
In RXD[2] Data in, bit 2 Not Used Data in, bit 2
In RXD[3] Data in, bit 3 Not Used Data in, bit 3K

 

SGMII/USXGMII/XFI 인터페이스의 경우 다음 세 쌍의 차동 신호를 사용합니다.
     • Receive
     • Transmit
     • PHY clock (i.MX 95는 내부적으로 Serdes 사용을 위한 클록 신호를 생성할 수 없으므로, 이 156.25MHz 클록 신호는 외부에서 제공됩니다.)

i.MX 플랫폼에는 물리적 I/O 핀보다 더 많은 기능이 있으므로 I/O 핀 멀티플렉싱을 사용합니다.

모든 모듈에는 specific pad setting이 필요합니다. 각 패드에는 ALT mode라고 하는 최대 8개의 다중화 옵션이 있습니다. 자세한 설명은 SoC Application Processor Reference Manual의 IOMUX 장을 참조하세요.

Note:

  외부 이더넷 PHY가 있는 설계에는 물리적 클록을 활성화하기 전에 이더넷 PHY를 재설정하기 위해 간단한 GPIO로 구성된 외부 핀이 필요할 수 있습니다. 그렇지 않으면 일부 PHY가 올바르게 작동하지 않습니다.

 

 

  18.1.2  Ethernet Configuration


  이 섹션에서는 Ethernet driver Bring-up 이에 대해 설명합니다. 이더넷 MAC 구성 및 전이중(full-duplex) 흐름 제어 사용 등에 대한 자세한 내용은 SoC 애플리케이션 프로세서 참조 매뉴얼의 이더넷 장을 확인하세요.

  이더넷 드라이버 브링업 시에 다음 사항을 유의하십시오.

     • MAC에서 사용하는 모든 I/O 핀을 dts 파일에서 올바르게 구성합니다.
     • 물리적 입력 클럭과 전원을 확인하세요. 클럭과 전원 입력이 정상이면 물리적 LED1과 LED2가 켜집니다.
     • MAC tx_clk에 올바른 클럭 입력이 있는지 확인하십시오. 그렇지 않으면 MAC이 작동할 수 없습니다.
     • i.MX 95의 10G 포트를 사용하는 경우 Serdes에 올바른 156.25MHz 클록 입력이 있는지 확인하십시오. 그렇지 않으면 Serdes가 작동하지 않습니다.
     • MAC 주소가 설정되어 있고 유효한지 확인하세요.

  기본적으로 이더넷 드라이버는 dts 파일의 이더넷 노드 속성 "local-mac-address"에서 MAC 주소를 가져옵니다. dts에 속성이 없으면 드라이버는 fuse에서 MAC 주소를 가져옵니다. FEC 컨트롤러의 경우 퓨즈가 MAC 주소를 태우지 않으면 드라이버는 부트로더가 설정한 이더넷 레지스터에서 MAC 주소를 가져옵니다. 다른 두 이더넷 컨트롤러의 경우 임의의 MAC 주소가 생성되어 사용됩니다. 합법적인 MAC 주소가 존재하지 않으면 MAC이 오작동합니다. 이 예에서는 bootargs의 "fec.macaddr=0x00,0x01,0x02,0x03,0x04,0x05"와 같이 커널용 U-Boot 명령줄에 MAC 주소를 추가합니다.

  이더넷 드라이버와 하드웨어는 Ethernet autonegotiation을 위한 IEEE 표준을 준수하도록 설계되었습니다.