Wiznet makers

lawrence

Published December 18, 2025 ©

114 UCC

9 WCC

30 VAR

0 Contests

0 Followers

0 Following

Original Link

A Sober Look at the W7500P – a Microcontroller with an Embedded TCP/IP Stack

Implemented UDP on WIZnet W7500P using custom lightweight 'vsrtos' and GCC. Proved low-cost IoT viability by overcoming HW constraints with optimized software.

COMPONENTS Hardware components

WIZnet - W7500P

x 1


PROJECT DESCRIPTION

W7500P와 독자 개발 RTOS(vsrtos)를 활용한 이더넷 제어 사례

1. 개요 (Overview)

본 문서는 기술 커뮤니티 Habr에 공개된 WIZnet W7500P 활용 프로젝트를 심층 분석한 리포트입니다. 해당 프로젝트는 제조사 표준(Keil) 환경이 아닌 GCC/CMake 기반의 오픈소스 툴체인을 구축하고, 독자 개발한 초경량 RTOS(vsrtos)를 탑재하여 안정적인 UDP 통신을 구현한 기술 검증(PoC) 사례입니다.

이는 W7500P가 저사양 리소스 환경에서도 멀티태스킹과 네트워크 처리를 효율적으로 수행할 수 있음을 증명하는 좋은 레퍼런스입니다.

Module boards based on W5500 and W7500p chips

2. 하드웨어 구성 및 특징

이 프로젝트는 One Chip IoT Solution으로서 W7500P의 강점에 주목했습니다.

SoC: WIZnet W7500P (ARM Cortex-M0 + Hardwired TCP/IP + Internal PHY)

하드웨어 선정 배경:

별도의 외부 PHY 칩이 필요 없어 PCB 공간 절약 및 BOM(자재) 비용 절감 가능.

MCU 코어와 TCP/IP 오프로드 엔진이 단일 칩에 통합되어 있어, 저가형 IoT 디바이스 설계에 최적화됨.

개발 보드: WIZwiki-W7500P 호환 보드 (비공식 클론 버전 사용, MicroSD 슬롯 추가 등 일부 수정됨).

 

3. 핵심 소프트웨어 기술: 'vsrtos' (Custom RTOS)

이 프로젝트의 가장 큰 기술적 차별점은 상용 OS나 Bare-metal 방식이 아닌, 개발자가 W7500P에 최적화하여 직접 설계한 vsrtos를 사용했다는 점입니다.

https://gitlab.com/vadimatorikda/vsrtos

3.1. vsrtos (Very Simple RTOS) 개요

개발 목적: Cortex-M0 기반의 제한된 자원(RAM)을 가진 MCU에서 오버헤드를 최소화하면서도 실시간성을 보장하기 위함.

설계 철학: 불필요한 미들웨어를 모두 제거한 초경량 마이크로 커널 구조.

3.2. 주요 아키텍처 및 특징

선점형 멀티태스킹 (Preemptive Multitasking):

SysTick 타이머를 기반으로 컨텍스트 스위칭을 수행합니다.

W7500P의 단일 코어 환경에서도 네트워크 처리와 장치 제어(LED 등)가 동시에 매끄럽게 동작하도록 스케줄링합니다.

FreeRTOS 스타일의 API:

개발자가 익숙한 FreeRTOS와 유사한 API 구조를 채택하여, 기존 임베디드 엔지니어가 쉽게 코드를 분석하고 이해할 수 있도록 설계되었습니다.

최적화된 메모리 관리:

W7500P의 RAM 블록 특성을 고려하여 커널이 사용하는 스택과 힙 메모리를 타이트하게 관리함으로써, 네트워크 버퍼 공간을 최대한 확보했습니다.

 

4. 시스템 구현 상세

RTOS 위에서 실제 애플리케이션과 네트워크 스택은 다음과 같이 구성되었습니다.

4.1. 메모리 맵 (Memory Map) 전략

W7500P의 듀얼 RAM 블록 구조를 효율적으로 활용하여 시스템 안정성을 높였습니다.

RAM Block 0 (16KB): 사용자 애플리케이션 코드, vsrtos 커널, 태스크 스택 영역으로 할당.

RAM Block 1 (32KB): WIZnet Hardwired TCP/IP 소켓의 TX/RX 버퍼 전용으로 할당하여 메모리 충돌 원천 차단.

4.2. 태스크(Task) 구성 및 동작

시스템은 크게 두 가지 핵심 태스크로 나뉘어 병렬 동작합니다.

Task 1 (System Monitor): 1Hz 주기로 LED를 제어하며 시스템 생존 신호(Heartbeat) 표시.

Task 2 (Network I/O): 500ms 주기로 UDP 패킷을 송신.

특이사항: vsrtos의 스케줄링 덕분에 네트워크 지연이 발생하더라도 시스템 모니터링 태스크(LED)에는 영향을 주지 않음.

 

5. 개발 환경의 시사점 (Challenge & Solution)

이 프로젝트는 WIZnet이 공식 제공하는 환경(Keil)을 벗어나 **오픈소스 생태계(GCC)**를 개척했다는 점에서 의미가 큽니다.

난관 (Pain Point): W7500P의 데이터시트 내용 부족 및 레지스터 상세 정보 미흡.

공식 제공 라이브러리가 Keil 컴파일러에 종속적이라 GCC에서 바로 컴파일되지 않음.

해결 (Solution):

라이브러리 역분석을 통해 숨겨진 설정값(Magic Number)을 파악하고 레지스터 직접 제어 코드로 변환.

CMake 기반의 빌드 시스템을 자체 구축하여 Linux/Windows 환경 어디서든 GCC로 빌드 가능하게 함.

 

6. 결론

본 프로젝트는 W7500P가 저비용 IoT 시장뿐만 아니라, 엔지니어링 역량이 높은 고급 사용자들에게도 매력적인 커스터마이징 소재가 될 수 있음을 보여줍니다. 특히, vsrtos와 같은 경량 RTOS와의 결합은 칩셋의 하드웨어 한계를 소프트웨어적으로 극복하는 사례입니다.

 

[Maker Voice] 개발자들의 주요 피드백 및 이슈 분석

해당 프로젝트(기사)에 달린 44개의 댓글을 통해 현업 엔지니어들이 W7500P와 같은 '하드웨어 TCP/IP MCU'를 어떻게 바라보는지 분석했습니다.


https://habr.com/en/articles/569960/comments/

1. W7500P의 포지셔닝에 대한 논쟁 (vs PIC/STM32)

가장 뜨거운 주제는 **"굳이 이 칩을 써야 하는가?"**였습니다.

회의적 시각: 일부 유저는 이미 PIC18F67J60PIC32 시리즈처럼 MAC/PHY가 통합된 MCU가 시장에 존재하며, Microchip의 TCP/IP 스택이 훨씬 문서화가 잘 되어 있고 안정적이라는 점을 지적했습니다. W7500P는 단순한 "Ethernet-to-Serial" 컨버터 용도로만 국한될 수 있다는 우려도 있었습니다.

옹호적 시각 (작성자 및 일부): 최근 STM32 등 범용 MCU의 가짜(Fake) 칩 이슈와 수급 불안정을 고려할 때, W7500P는 공급 안정성과 가격 경쟁력 면에서 대안이 될 수 있음을 시사했습니다. 또한, 외부 PHY가 필요 없어 BOM(자재비)과 PCB 공간 절약이 큰 장점임이 재확인되었습니다.

2. 하드웨어 성능 및 설계 이슈 (Real World Issues)

데이터시트만으로는 알 수 없는 실무적인 이슈들이 공유되었습니다.

속도 한계: Cortex-M0 (48MHz)의 한계와 DMA 미지원(TCP 데이터 복사 시 CPU 개입)으로 인해, 100Mbps 대역폭을 모두 활용하기 어렵다는 지적이 있었습니다. 작성자는 "실측 시 약 30Mbps 수준"이라고 언급하며, 고성능 웹 서버보다는 제어 및 모니터링 용도에 적합함을 인정했습니다.

문서화 오류 (Documentation Bug): SysTick 클럭 소스 설정과 관련된 레지스터 정보가 데이터시트와 실제 동작이 다르다는 점이 발견되었습니다. 이는 개발자가 직접 레퍼런스 매뉴얼과 씨름해야 하는 '진입 장벽'으로 작용합니다.

3. 소프트웨어 생태계 (Web Interface 구현 난이도)

Web Server 구현: 하드웨어 TCP/IP는 소켓 통신(Raw Socket)에는 유리하지만, 복잡한 웹 설정 페이지(HTTP Server)를 구현하기에는 라이브러리 지원이 부족하다는 의견이 지배적이었습니다.

오버헤드: DHCP나 복잡한 웹 기능을 구현하려면 결국 힙(Heap) 메모리를 많이 사용해야 하므로, W7500P의 적은 RAM 용량이 병목이 될 수 있다는 기술적 분석이 있었습니다.

4. 토론의 결론

토론은 W7500P의 역할을 '범용 고성능 MCU'가 아닌 '특수 목적용 칩'으로 좁히면서 마무리됩니다.

비추천 영역: 화려한 웹 설정 페이지가 필요하거나, 대용량 데이터 처리가 필요한 고성능 네트워크 장비. (이건 리눅스나 고성능 STM32/PIC로 가라)

강력 추천 영역 (Sweet Spot): 단순 센서 데이터 수집 및 전송 (MQTT, UDP 등).

기존 시리얼 장비를 이더넷으로 연결해주는 Serial-to-Ethernet 컨버터.

단가와 공간이 매우 중요한 소형 IoT 디바이스.

 

[AI 분석 및 시사점]

댓글 분석을 통해 얻은 인사이트는 "W7500P는 가성비가 훌륭한 'Ethernet Converter' 솔루션이지만, 범용 IoT MCU로 쓰기엔 스팩 및 SW 지원이 아쉽다"는 것입니다.

타겟 애플리케이션 명확화: 고성능 웹 서버보다는 센서 데이터 전송, 단순 제어기(I/O Control) 분야에 제안할 때 승산이 높음.

기술 지원 필요성: "문서가 부실하다"는 의견이 많으므로, 본 프로젝트와 같이 '바로 실행 가능한 GCC 예제'나 '검증된 레지스터 설정값'을 제공하는 것이 영업 및 기술 지원의 핵심 키(Key)가 될 것.

 


Ethernet Control Case Study: Utilizing W7500P and Custom RTOS (vsrtos)

1. Overview

This document provides an in-depth analysis of a WIZnet W7500P project published on the technical community, Habr. It highlights a Proof of Concept (PoC) that establishes an open-source toolchain based on GCC/CMake—deviating from the standard Keil environment—and implements stable UDP communication using a custom-developed, ultra-lightweight RTOS (vsrtos).

This serves as an excellent reference demonstrating that the W7500P can efficiently handle multitasking and network processing even in resource-constrained environments.

2. Hardware Configuration & Features

This project focused on the strengths of the W7500P as a ‘One Chip IoT Solution’.

SoC: WIZnet W7500P (ARM Cortex-M0 + Hardwired TCP/IP + Internal PHY)

Selection Rationale:

Cost & Space Efficiency: Eliminates the need for an external PHY chip, saving PCB space and reducing BOM (Bill of Materials) costs.

Optimized Design: The integration of the MCU core and TCP/IP offload engine into a single chip makes it optimized for low-cost IoT device design.

Development Board: WIZwiki-W7500P compatible board (An unofficial clone version was used, featuring modifications like an added MicroSD slot).

3. Core Software Technology: 'vsrtos' (Custom RTOS)

The significant technical differentiator of this project is the use of vsrtos, designed and optimized specifically for the W7500P by the developer, rather than using a commercial OS or a bare-metal approach. (Source: https://gitlab.com/vadimatorikda/vsrtos)

3.1. vsrtos (Very Simple RTOS) Overview

Development Purpose: To guarantee real-time performance while minimizing overhead on an MCU with limited resources (RAM) like the Cortex-M0.

Design Philosophy: An ultra-lightweight micro-kernel structure that strips away all unnecessary middleware.

3.2. Key Architecture & Features

Preemptive Multitasking:

Uses the SysTick timer for context switching.

It schedules network processing and device control (e.g., LED) to operate smoothly in parallel, even on the W7500P’s single-core environment.

FreeRTOS-Style API:

Adopts an API structure similar to FreeRTOS, allowing existing embedded engineers to easily analyze and understand the code.

Optimized Memory Management:

Tightly manages the kernel's stack and heap memory by considering the specific RAM block characteristics of the W7500P, thereby maximizing space for network buffers.

4. System Implementation Details

The actual application and network stack running on top of the RTOS are configured as follows:

4.1. Memory Map Strategy

Leveraged the W7500P’s dual RAM block structure to enhance system stability.

RAM Block 0 (16KB): Allocated for user application code, vsrtos kernel, and task stack areas.

RAM Block 1 (32KB): Dedicated solely to WIZnet Hardwired TCP/IP socket TX/RX buffers to fundamentally prevent memory conflicts.

4.2. Task Configuration & Operation

The system operates with two core tasks running in parallel.

Task 1 (System Monitor): Controls an LED at 1Hz to indicate a system heartbeat.

Task 2 (Network I/O): Transmits UDP packets every 500ms.

Note: Thanks to vsrtos scheduling, network delays do not affect the system monitoring task (LED).

5. Development Environment Implications (Challenge & Solution)

This project is significant for pioneering an Open-Source Ecosystem (GCC) outside of WIZnet’s official environment (Keil).

Pain Points: Insufficient content in the W7500P datasheet and a lack of detailed register information. Official libraries were dependent on the Keil compiler and did not compile directly with GCC.

Solutions:

Identified hidden settings (Magic Numbers) through library reverse engineering and converted them into direct register control code.

Built a custom CMake-based build system to enable GCC builds on both Linux and Windows environments.

6. Conclusion

This project demonstrates that the W7500P is an attractive material for customization not only for the low-cost IoT market but also for advanced users with high engineering capabilities. In particular, the combination with a lightweight RTOS like vsrtos is a prime example of overcoming hardware limitations through software.

 

[Market Voice] Developer Feedback & Issue Analysis

We analyzed 44 comments on the original article (Habr) to understand how field engineers perceive 'Hardware TCP/IP MCUs' like the W7500P. (Source: https://habr.com/en/articles/569960/comments/)

1. Positioning Debate (vs. PIC/STM32)

The hottest topic was "Is there a reason to use this chip?"

Skeptical View: Some users pointed out that MCUs with integrated MAC/PHY, like the PIC18F67J60 or PIC32 series, already exist, and Microchip’s TCP/IP stack is much better documented and stable. Concerns were raised that the W7500P might be limited to simple "Ethernet-to-Serial" converter applications.

Supportive View: Considering recent issues with fake chips and supply instability for general-purpose MCUs like STM32, the W7500P was suggested as an alternative due to supply stability and price competitiveness. Additionally, the elimination of an external PHY was reaffirmed as a major advantage for saving BOM costs and PCB space.

2. Hardware Performance & Design Issues (Real World Issues)

Practical issues not found in the datasheet were shared.

Speed Limitations: Due to the Cortex-M0 limits (48MHz) and lack of DMA support (CPU intervention required for TCP data copying), utilizing the full 100Mbps bandwidth is difficult. The author mentioned a "measured speed of about 30Mbps," acknowledging it is better suited for control and monitoring rather than high-performance web servers.

Documentation Bugs: Discrepancies between the datasheet and actual behavior regarding SysTick clock source settings were discovered. This acts as a barrier to entry, requiring developers to struggle with the reference manual.

3. Software Ecosystem (Web Interface Difficulty)

Web Server Implementation: While Hardware TCP/IP is advantageous for socket communication (Raw Socket), the consensus was that library support is lacking for implementing complex web configuration pages (HTTP Server).

Overhead: Technical analysis suggested that implementing DHCP or complex web functions requires significant Heap memory usage, making the W7500P’s small RAM capacity a potential bottleneck.

4. Conclusion of Discussion

The discussion concluded by narrowing down the W7500P’s role to a 'Special Purpose Chip' rather than a 'General Purpose High-Performance MCU'.

Not Recommended For: High-performance network equipment requiring fancy web configuration pages or large data processing. (Linux or high-end STM32/PIC are preferred here).

Sweet Spots:

Simple sensor data collection and transmission (MQTT, UDP, etc.).

Serial-to-Ethernet converters connecting legacy serial equipment to Ethernet.

Small IoT devices where unit cost and space are critical.

 

Documents
  • vsrtos

Comments Write