LwIP(Lightweight IP)는 임베디드 시스템에서 널리 사용되는 오픈 소스 TCP/IP 스택으로 스웨덴 컴퓨터 과학 연구소 (Swedish Institute of Computer Science)의 Adam Dunkels에 의해 처음 개발되었으며 현재는 전 세계 개발자 네트워크에 의해 개발 및 유지 관리되고 있습니다.
LwIP의 태생 자체가 적은 리소스를 사용하면서 Full Scale TCP/IP 스택을 사용하기 위한 목적으로 개발되어 주로 임베디드 시스템과 같이 리소스가 제한적인 환경에서 주로 사용되며 대략적으로 10KB의 램과 40KB의 롬이 사용될 수 있는 환경이면 사용 가능합니다.
LwIP에 대한 자세한 내용은 아래 홈페이지를 참고하시기 바랍니다.
지원되는 Protocol은 아래와 같습니다.
• IPv4 and IPv6 (Internet Protocol v4 and v6)
• ICMP (Internet Control Message Protocol) for network maintenance and debugging
• IGMP (Internet Group Management Protocol) for multicast traffic management
• UDP (User Datagram Protocol)
• TCP (Transmission Control Protocol)
• DNS (Domain Name Server)
• SNMP (Simple Network Management Protocol)
• DHCP (Dynamic Host Configuration Protocol)
• PPP (Point to Point Protocol)
• ARP (Address Resolution Protocol)
LwIP는 아래 3가지 API를 제공합니다.
- RAW API
- Netconn API
- Socket API
각 API 별 특징과 제공 함수는 아래와 같습니다.
RAW API
- Native LwIP로 event callback 형식으로 동작되며 최고의 성능을 제공하지만 사용하기가 조금 복잡합니다.
Netconn API
- High-level sequential API로 RTOS환경(MultiThread 환경)이 고려된 API입니다.
Socket API
- Windows, Linux 등에서 사용되는 socket 형식의 API입니다.
LwIP에서는 pbuf라는 구조체를 사용하여 Linked List 형식으로 패킷 버퍼를 관리합니다.
next 필드에 다음 버퍼 포인터를 가지고 있으며 패킷 데이터를 가리키는 payload와 데이터 length 등의 필드를 가지고 있습니다.
LwIP에는 사용되는 pbuf는 아래 3가지중의 하나의 형식으로 메모리를 할당받아서 사용됩니다.
PBUF_POOL (미리 할당되어져 있는 메모리풀에서 메모리를 얻어오며 패킷 수신 시 사용됩니다.)
PBUF_RAM (동적으로 메모리를 할당받아 사용되며 패킷 송신시 사용됩니다.)
PBUF_ROM (패킷내용이 변경되지 않는 constant data일 경우 사용될 수 있습니다.)
pbuf API
- LwIP의 pbuf에서 사용되는 API 함수들로 pbuf.c에서 사용됩니다.
'Hardware > STM32' 카테고리의 다른 글
[STM32F746G-DISCO] TCP echo client 테스트 (0) | 2024.07.20 |
---|---|
[STM32F746G-DISCO] lwIP를 사용하여 DHCP 서버에서 IP 할당받기 (0) | 2024.07.19 |
[STM32F746G-DISCO] MSC 사용하기 (Host Mode) (0) | 2024.07.18 |
[STM32F746G-DISCO] USB 키보드/마우스 사용하기 (Host Mode) (0) | 2024.07.18 |
[STM32F746G-DISCO] 외부 전원 사용 및 ST-Link 연결법 (0) | 2024.07.18 |
댓글