[under working]Rust Embedded Networking in Practice: Cotton, Embassy, and Where WIZnet Fits
Rust remains a minority in embedded systems, but its HAL and async ecosystem is growing. This article explains Cotton’s role and WIZnet’s low-cost path to impac
Overview
In embedded systems, C still dominates.
MicroPython and CircuitPython continue to grow in education and prototyping.
Rust, by contrast, remains a small slice of the overall market.
Yet something important is happening beneath the surface.
Across multiple platforms and projects, Rust’s embedded ecosystem is not just “alive”, but structuring itself:
HALs are stabilizing, async execution is converging around Embassy, and networking stacks are becoming reusable across targets.
This article does not argue that Rust will replace C.
Instead, it examines where Rust is growing, what kind of architecture that growth favors, and how WIZnet can position W5500 to benefit from this trend with minimal effort.
1. Rust in Embedded: Small Share, Clear Signals
Public embedded surveys still place C and C++ at the top, with Python variants steadily expanding their footprint. Rust rarely appears as a top-tier language by percentage.
However, looking only at market share hides important signals:
RP2040 HAL crates have accumulated steady version releases over multiple years.
ESP32 Rust HALs show high download counts and growing dependency graphs.
Embassy’s async executor and network stack have existed since 2020 and are still actively updated today.
These are not indicators of a fad.
They are indicators of long-term consolidation.
Rust in embedded today resembles an early infrastructure phase: small in numbers, but increasingly opinionated in structure.
2. Three Platforms Where Rust Is Converging
Rust’s embedded momentum is not evenly distributed. It is concentrated around three families of platforms.
STM32
Strong industrial presence
Mature Rust HALs
Clear fit for deterministic, wired networking
STM32 represents “production-oriented Rust”.
ESP32
Built-in Wi-Fi
Expanding Rust support through esp-hal
Increasing demand for hybrid wired/wireless designs
ESP32 represents “connectivity-first Rust”.
RP2040 (Raspberry Pi Pico)
Education and maker adoption
Simple hardware model
Excellent Rust onboarding experience
RP2040 represents “future developers learning Rust by default”.
Across all three, the same pattern appears:
Rust users expect portable HALs, async execution, and composable networking components.
3. Cotton: Not a Product, but a Reference World
This is where the Cotton project becomes useful.
Cotton is not a WIZnet product, nor is it intended to be a universal stack.
It is better understood as a reference architecture showing how far Rust embedded networking can be decomposed.
Within Cotton:
cotton-netif treats network interface changes as asynchronous events.
cotton-ssdp separates discovery logic from transport.
cotton-unique isolates device identity generation.
cotton-usb-host demonstrates a no-std, no-alloc, async USB host stack.
cotton-w5500 uses W5500 in MACRAW mode as a smoltcp network device.
The key idea is not any single crate, but explicit separation of concerns.
Cotton shows that, in Rust, networking is no longer a monolithic stack but a set of interchangeable roles.
This makes Cotton valuable not as “the solution”, but as a map of what is possible.
4. Embassy and the Reality Track
Most real products will not adopt Cotton wholesale.
What they will adopt is the execution model that has emerged as the de facto standard: Embassy.
Embassy provides:
A stable async executor
Platform-specific HAL integrations
An async network stack layered on smoltcp
Importantly, Embassy already includes support for WIZnet devices through embassy-net-wiznet.
This places W5500 directly inside the main growth axis of Rust embedded networking.
From a strategic perspective, this matters more than any single feature.
5. Two Tracks, One Strategy
From a WIZnet point of view, the ecosystem naturally splits into two tracks:
The Reality Track
Hardware TCP offload
Socket-oriented programming
STM32 / ESP32 / RP2040 production designs
Embassy-based async execution
This is where most customers live today.
The Reference Track
MACRAW + smoltcp
Deterministic, inspectable networking
Security-oriented or research-driven designs
Cotton as a conceptual guide
This is where future architectures are explored.
Crucially, these tracks do not compete.
They reinforce each other.
6. Minimal Investment, Maximum Impact
The temptation is to over-engineer: rewrite full stacks, port entire C libraries, or create a “perfect” Rust networking SDK.
None of that is necessary.
A minimal, high-impact strategy looks like this:
Anchor on Embassy
Treat embassy-net-wiznet as the primary integration point.
Improve examples, documentation, and reliability testing.
Provide Golden Path Examples
One clear example each for STM32, ESP32, and RP2040.
Same structure, different HALs.
“Copy, build, run” experience.
Position Cotton as a Reference
Not required, not official, not enforced.
A demonstration of advanced separation and future direction.
This approach avoids fragmentation while quietly establishing WIZnet as a natural default in Rust embedded networking.
Conclusion
Rust will not replace C in embedded systems overnight.
But it is steadily shaping how future embedded systems are structured.
Cotton shows the architectural horizon.
Embassy defines the execution reality.
STM32, ESP32, and RP2040 anchor the present and future developer base.
By focusing on integration rather than reinvention, WIZnet can secure a durable position in this ecosystem with surprisingly little effort.
The goal is not to own the standard,
but to stand on the path where the standard is forming.
Overview
임베디드 세계에서 C는 여전히 절대적이다.
MicroPython과 CircuitPython은 교육과 프로토타이핑 영역을 넓히고 있다.
Rust는 아직 전체 시장에서 작은 비중을 차지한다.
그러나 중요한 변화가 있다.
Rust 임베디드 생태계는 단순히 “존재”하는 단계를 넘어,
구조를 갖추기 시작했다.
HAL은 안정화되고, async 실행 모델은 Embassy로 수렴하며,
네트워킹은 재사용 가능한 구성 요소로 분해되고 있다.
이 글의 목적은 Rust가 C를 대체할 것이라고 주장하는 데 있지 않다.
대신 어디에서 Rust가 성장하고 있는지,
그 성장이 어떤 아키텍처를 요구하는지,
그리고 WIZnet이 이 흐름 속에서 어떤 위치를 선택해야 하는지를 정리한다.
1. 작은 비중, 그러나 분명한 성장 신호
공개된 임베디드 설문에서 Rust는 여전히 상위 언어에 포함되지 않는 경우가 많다.
하지만 점유율만으로는 중요한 신호를 놓치게 된다.
RP2040용 Rust HAL은 수년간 꾸준히 릴리즈를 이어왔다.
ESP32 Rust HAL은 높은 다운로드 수와 의존성 증가를 보인다.
Embassy executor는 2020년에 시작해 지금도 활발히 유지되고 있다.
이는 일시적 유행이 아니라, 장기 인프라가 형성되고 있다는 신호다.
2. Rust가 모이고 있는 세 가지 플랫폼
Rust 임베디드의 성장은 특정 플랫폼에 집중되어 있다.
STM32
산업·상용 중심
성숙한 Rust HAL
유선 네트워크와의 높은 적합성
→ 실전형 Rust
ESP32
Wi-Fi 내장
Rust 지원 빠른 확장
유선/무선 혼합 설계 수요
→ 연결 중심 Rust
RP2040
교육·메이커 중심
Rust 진입 장벽 낮음
차세대 개발자 유입 통로
→ 미래 인력 기반
이 세 축 모두에서 공통적으로 요구되는 것은
이식 가능한 HAL, async 실행 모델, 조립 가능한 네트워크 구성이다.
3. Cotton의 의미: 정답이 아닌 지도
Cotton은 제품도, 표준도 아니다.
Cotton은 Rust 임베디드 네트워킹이 어디까지 분해될 수 있는지 보여주는 참조 세계다.
인터페이스 변화는 이벤트로 다룬다 (cotton-netif)
디스커버리는 전송과 분리된다 (cotton-ssdp)
디바이스 정체성은 별도로 관리된다 (cotton-unique)
USB Host조차 async/no-std/no-alloc로 분리된다
W5500은 MACRAW 모드로 smoltcp에 연결된다
Cotton의 핵심은 기능이 아니라 경계 설계다.
“이렇게 써야 한다”가 아니라
“이렇게까지 분리할 수 있다”를 보여준다.
4. 현실의 선택: Embassy
대부분의 실제 제품은 Cotton을 그대로 채택하지 않는다.
대신 Embassy를 채택한다.
Embassy는:
async 실행 모델
플랫폼별 HAL 통합
smoltcp 기반 네트워크 스택
을 제공한다.
중요한 점은,
WIZnet 장치가 이미 Embassy 네트워크 축에 포함되어 있다는 것이다.
(embassy-net-wiznet)
이는 W5500이 Rust 임베디드 네트워킹의 중심 경로에 이미 올라와 있음을 의미한다.
5. 두 개의 트랙, 하나의 전략
WIZnet 관점에서 생태계는 자연스럽게 두 트랙으로 나뉜다.
현실 트랙
HW TCP 오프로딩
소켓 기반 프로그래밍
STM32/ESP32/RP2040 상용 설계
Embassy 기반 async 실행
참조 트랙
MACRAW + smoltcp
결정 가능하고 분석 가능한 네트워크
보안·연구·특수 목적
Cotton이 상징하는 방향성
이 둘은 경쟁 관계가 아니다.
서로를 강화한다.
6. 최소 투자로 최대 영향력을 얻는 방법
대규모 포팅이나 재개발은 필요 없다.
가장 효율적인 전략은 다음과 같다.
Embassy 중심 전략
embassy-net-wiznet을 핵심 통합 지점으로 유지
예제, 문서, 안정성 강화
3플랫폼 골든 패스 제공
STM32 / ESP32 / RP2040 공통 구조
HAL만 다른 동일한 예제
Cotton은 레퍼런스로 유지
강요하지 않고, 방향성만 제시
이 방식은 생태계를 분열시키지 않으면서
WIZnet을 자연스러운 선택지로 만든다.
맺음말
Rust는 당장 C를 대체하지 않는다.
그러나 미래의 임베디드 시스템이 어떻게 구조화될지는 이미 바뀌고 있다.
Cotton은 그 미래의 윤곽을 보여주고,
Embassy는 현재의 실행 기반을 제공하며,
STM32·ESP32·RP2040은 개발자 흐름을 만들어낸다.
WIZnet이 해야 할 일은 표준을 소유하는 것이 아니라,
표준으로 가는 길 위에 먼저 서는 것이다.
그리고 그 길은 이미 열려 있다.
