---
title: "A Sober Look at the W7500P – a Microcontroller with an Embedded TCP/IP Stack"
url: "https://maker.wiznet.io/lawrence/projects/a-sober-look-at-the-w7500p--a-microcontroller-with-an-embedded-tcp-ip-stack/"
markdown_url: "https://maker.wiznet.io/lawrence/projects/a-sober-look-at-the-w7500p--a-microcontroller-with-an-embedded-tcp-ip-stack/md"
type: "UCC: User Created Content"
author: "Vadimatorikda"
author_url: "https://habr.com/en/articles/569960/"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Vadimatorikda"
original_url: "https://habr.com/en/articles/569960/"
published: "2025-12-18"
language: "en"
tags: ["W7500P", "RTOS", "Cortex-M0", "vsrtos", "GCC"]
hardware: ["WIZnet W7500P"]
likes: 0
views: 786
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# 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.

Original author: Vadimatorikda (source: https://habr.com/en/articles/569960/)

## Components

- **WIZnet W7500P** x 1 ([docs](https://docs.wiznet.io/Product/iMCU/W7500P/overview))

## Documents and links

- [vsrtos](https://gitlab.com/vadimatorikda/vsrtos) (code)

## Article

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

#### 1. 개요 (Overview)

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

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

![Module boards based on W5500 and W7500p chips](https://habrastorage.org/r/w1560/getpro/habr/upload_files/e5c/bd8/944/e5cbd89440e0d1847757d4b8effa0ad5.jpg)

#### 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>

![](https://maker.wiznet.io/upload/ckeditor5/410871174%5F1766137119%2Epng)

##### 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://maker.wiznet.io/upload/ckeditor5/410871174%5F1766137201%2Epng)
<https://habr.com/en/articles/569960/comments/>

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

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

**회의적 시각:** 일부 유저는 이미 `PIC18F67J60`나 `PIC32` 시리즈처럼 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.

---

Source: https://maker.wiznet.io/lawrence/projects/a-sober-look-at-the-w7500p--a-microcontroller-with-an-embedded-tcp-ip-stack/
