Brise

STM32 LwIP 구조 - 1 본문

MCU

STM32 LwIP 구조 - 1

naudhizb 2020. 10. 18. 20:34
반응형

(OSI 구조와 유사하게)LwIP 구조는 크게 4가지 부분으로 나눌 수 있다.

  • OSI 7계층의 Physical 레이어와 Data Link 레이어와 매핑되는 Network Interface 레이어(PPPoE, PPPoS와 같은 기능을 담당하는 PPP모듈이 해당 레이어에 속한다고 볼 수 있다.)
  • OSI 7계층의 Network레이어와 매핑되어 라우팅과 네트워크 관리를 수행하는 Internet Layer
  • 전송 및 세션레이어와 매핑되어 연결을 수행하는 Transport 레이어
  • 그 위에 유저 응용에 따른 프로토콜이 있는 Application 레이어가 있다.

LwIP에서는 각 레이어 레벨에서 제공되어야 하는 프로토콜의 종류를 모듈별로 나누어 놓았다.

파일 매핑은 아래와 같이 수행된다.

<< netif >>

네트워크 인터페이스는 실제 이더넷이 연결되는 인터페이스를 관리한다.
각 네트워크 인터페이스는(임베디드 장치에서는 하나인 경우가 많지만) 링크드 리스트 형태로 관리되며, 구조체 내부에는 아래와 같은 정보들이 포함된다.

  • IP 정보(IP address, Netmask, Gateway)
  • 하드웨어 정보(MTU, HW addr, Flags)
  • 드라이버 인터페이스(Input, Linkoutput, Link_Callback)
  • 기타

netif의 네트워크 인터페이스 드라이버 함수들은 아래와 같다.

<< Memory Management >>

LwIP는 효율성과 유연성을 위하여 Heap과 Pool을 모두 사용한다.
일반적으로 Pool은 빠르고 효율적이지만 용량을 미리 잡아놓아야 하는 단점이 있고, Heap은 용량을 유연하게 사용할 수 있지만, 속도가 느린 단점이 있다.

LwIP에서는 수신 과정에서는 Pool을 이용한 메모리를, 송신에서는 Heap을 이용한 메모리를 사용한다.


Encapsulation을 수행할 때 copy가 발생하면 성능저하가 발생하므로 LwIP는 이를 방지하기 위한 구조를 가지고 있다.

수신을 위한 버퍼를 사용하는 경우 이미 패킷의 내용이 정해져있어 pool버퍼를 사용해도 문제가 없지만, 송신을 위한 경우 encapsulation을 수행하기 위하여 앞에 헤더가 추가되어야 한다. 이를 위하여 맨 처음 버퍼를 생성할 때 헤더를 위한 공간을 미리 확보하고 생성한다.


(Memory Leak을 막기 위해) pbuf는 항상 alloc과 free의 쌍으로 호출되어야 한다.

참고할만한 STM자료
AN3966 LwIP TCP/IP stack demonstration for STM32F4x7xx microcontrollers
AN3384 LwIP TCP/IP stack demonstration for STM32F2x7xx microcontrollers
AN3102 LwIP TCP/IP stack demonstration for STM32F107xx connectivity line microcontrollers
AN3968 STM32F407/STM32F417 in-application programming (IAP) over Ethernet
AN3226 STM32F107 In-Application Programming (IAP) over Ethernet
AN3376 STM32F2x7 In-Application Programming (IAP) over Ethernet
UM1709 STM32Cube Ethernet IAP example
UM1713 Developing applications on STM32Cube with LwIP TCP/IP stack

Reference:
https://www.stmcu.org.cn/document/list/index/category-1183
https://www.stmcu.org.cn/document/detail/index/id-218811
https://www.stmcu.org.cn/document/detail/index/id-218176
https://www.st.com/resource/en/user_manual/dm00103685-developing-applications-on-stm32cube-with-lwip-tcpip-stack-stmicroelectronics.pdf
https://www.st.com/resource/en/application_note/cd00255062-lwip-tcpip-stack-demonstration-for-stm32f107xx-connectivity-line-microcontrollers-stmicroelectronics.pdf

반응형
Comments