Brise

STM32 Ethernet(MAC) 구조 본문

MCU

STM32 Ethernet(MAC) 구조

naudhizb 2020. 10. 20. 21:02
반응형

STM32 MCU의 일부 제품군은 이더넷 통신이 가능한 Peripheral을 가지고 있다.
Ethernet 주변장치는 OSI 7계층에서 Data link Layer 부분의 역할을 수행한다.


Ethernet 블록 다이어그램을 보면 위와 같은 구조로 되어 있는 것을 알 수 있으며, 크게 좌측의 DMA블록, 중간의 MAC블록, 우측의 PHY블록 3가지 부분으로 이루어져 있음을 알 수 있다.
이더넷의 경우 고속으로 동작하기 때문에 CPU가 데이터를 받는 동작을 수행하면 데이터를 송수신하면서 처리하기 어려워 송수신 부분은 DMA로 처리하는 것으로 보인다.


STM32 MCU는 PHY인터페이스로 MII와 RMII 통신을 지원하며, PHY 설정을 위해서 MDC/MDIO 인터페이스를 지원한다.

일반적으로 MII인터페이스를 사용하는 phy의 경우 25Mhz를, RMII 인터페이스를 사용하는 인터페이스의 경우 50Mhz를 필요로 하는 것으로 보인다. (RMII의 경우 25Mhz입력을 받는 경우가 있으나, 내부에서 PLL을 통하여 50Mhz로 클럭을 올리는 듯 하다.)

STM사에서는 자사의 평가보드(Evaluation, Discovery, Nucleo)에 이더넷 연동을 위하여 LAN8742(RMII), DP83848(MII)를 사용하며, CubeMX 인터페이스 또한 해당 2가지 Phy를 기준으로 만들어져 있다.

물론 유저가 다른 Phy를 연결하여 쓸 수도 있지만, CubeMX가 생성해주는 코드를 일부 변경하여야 할 수 있음을 양지하자.


IEEE 802.3에서 정의하고 있는 MAC프레임의 구조는 위와 같다.
일반적으로 Preamble, SFD, FCS의 경우 HW에서 평가되고 제거되기 때문에 유저 코드에서는 Destination MAC addr부터 볼 수 있다고 이해하면 편리하다.

MAC레이어 프로토콜을 구현하기 위하여 빨간색으로 표기된 Length/Type을 파싱하여 EtherType을 판별하여야 한다.

논외로 802.1Q 표준을 위하여(상위 레이어 표준) EtherType이 0x8100인 경우 추가로 802.1Q VLAN을 위한 데이터가 삽입될 수 있다.


Data Link Layer에서 데이터의 최소 길이가 정의되어 있기 때문에 데이터 길이가 적은 경우 MAC 주변장치에서 자동적으로 패딩을 넣는다.

만약 여러 포트를 운용하기 위한 3-Port Switch와 같은 Phy를 이용하는 경우 전송 방향을 정의하기 위하여 Tail-tag 모드를 사용하는 경우가 있는데, 이 경우 SW에서 데이터의 최소 길이를 맞추어 주고, Tail-tag를 추가하여야 한다.

STM32의 일부 MCU에서는 네트워크 시간 동기화를 위한 IEEE1588 PTP를 지원한다.

Ethernet DMA 구조는 전송과 수신을 위하여 전용으로 할당된 FIFO 버퍼를 가지고 있다.(시리즈에 따라 없을 수도 있음)


DMA의 정책에 따라 Threshold모드와 Store and Forward모드가 있다.
종류에 따라 성능이 달라질 수 있을 것으로 보인다.

반응형
Comments