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
C continues to dominate embedded firmware, while MicroPython and CircuitPython steadily expand in education and prototyping. Rust, in comparison, still represents a small portion of the embedded market.
Nevertheless, important structural changes are underway. Hardware abstraction layers are stabilizing, async execution is converging around Embassy, and networking components are increasingly designed to be reusable and composable across platforms.
This article does not claim that Rust will replace C. Instead, it examines where Rust adoption is growing, what architectural direction this growth implies, and how WIZnet can position the W5500 to achieve meaningful impact with minimal investment. The Cotton project is used as a reference point to illustrate both present realities and future possibilities.
1. Rust in Embedded: Small Share, Clear Signals
Most publicly available embedded surveys still list C and C++ as the dominant languages, with Python variants continuing to grow. Rust rarely appears among the top languages when measured purely by market share.
However, market share alone does not tell the full story.
Across several indicators, Rust’s embedded ecosystem shows consistent and sustained activity:
RP2040 Rust HALs have accumulated steady releases over multiple years.
ESP32 Rust HALs show significant download counts and expanding dependency graphs.
Embassy’s async executor and networking components, first introduced around 2020, remain actively maintained.
These signals suggest long-term consolidation rather than a temporary experiment. Rust in embedded systems today is small in scale, but increasingly coherent in structure.
2. Three Platforms Where Rust Is Converging
Rust’s embedded momentum is concentrated around three major platform families.
STM32
STM32 remains a cornerstone of industrial and commercial embedded systems. Its Rust HAL ecosystem is relatively mature, and its deterministic execution model aligns well with wired Ethernet designs. This platform represents production-oriented Rust adoption.
ESP32
ESP32 platforms include built-in Wi-Fi, yet demand for stable wired Ethernet continues to increase, particularly in hybrid networking designs. Rust support through esp-hal is expanding rapidly, positioning ESP32 as a bridge between wireless-first systems and deterministic wired networking.
RP2040 (Raspberry Pi Pico)
RP2040 has become a popular entry point for new developers. Its straightforward hardware model and accessible Rust tooling make it a natural environment for learning and experimentation, effectively nurturing future embedded Rust developers.
Across all three platforms, developer expectations converge on portable HALs, async execution, and modular networking components.
3. Cotton: A Reference, Not a Product
Cotton is not a WIZnet product, nor is it intended to be a universal networking stack. Its significance lies in serving as a reference architecture that demonstrates how embedded networking can be decomposed in Rust.
Within the Cotton project:
Network interface changes are treated as asynchronous events.
Discovery logic is separated from transport mechanisms.
Device identity generation is isolated as its own concern.
A no-std, no-alloc, async USB host stack coexists with networking components.
W5500 is used in MACRAW mode as a smoltcp network device.
The core value of Cotton is not any individual crate, but its explicit separation of responsibilities. Cotton illustrates how embedded networking in Rust can be structured as a set of well-defined roles rather than a monolithic stack.
4. Embassy and the Reality Track
Most production systems will not adopt Cotton in its entirety. Instead, they gravitate toward Embassy, which has emerged as the de facto async execution model in Rust embedded development.
Embassy provides:
A stable async executor
Tight integration with platform-specific HALs
A networking stack layered on smoltcp
Notably, Embassy already supports WIZnet devices through embassy-net-wiznet. This places the W5500 directly within the main growth axis of Rust embedded networking, a strategically significant position.
5. Two Tracks, One Coherent Strategy
From a WIZnet perspective, the ecosystem naturally divides into two complementary tracks.
The Reality Track
This track includes hardware TCP offload, socket-oriented programming, production designs on STM32, ESP32, and RP2040, and Embassy-based async execution. It reflects where most customers operate today.
The Reference Track
This track includes MACRAW-based designs, smoltcp-driven stacks, deterministic and inspectable networking, and security- or research-focused architectures. Cotton serves as a representative example of this direction.
These tracks do not compete with each other. Instead, they reinforce one another by connecting immediate practical needs with future architectural exploration.
6. Minimal Investment, Maximum Impact
It may be tempting to pursue large-scale efforts such as rewriting entire stacks or fully porting legacy C libraries. However, such approaches are neither necessary nor cost-effective.
A high-impact, low-investment strategy consists of:
Anchoring Rust networking support around Embassy as the primary integration point
Providing clear, copy-and-run reference examples for STM32, ESP32, and RP2040
Positioning Cotton as an advanced reference rather than a mandatory framework
This approach minimizes fragmentation while establishing WIZnet as a natural and trusted choice within the Rust embedded ecosystem.
Conclusion
Rust will not replace C in embedded systems in the near term. However, it is steadily reshaping how embedded systems are architected.
Cotton outlines the architectural horizon. Embassy defines the execution reality. STM32, ESP32, and RP2040 anchor developer momentum.
WIZnet does not need to own the standard. It only needs to stand where the standard is forming.
Overview
임베디드 펌웨어 영역에서는 여전히 C 언어가 압도적인 비중을 차지하고 있습니다. MicroPython과 CircuitPython은 교육 및 프로토타이핑 분야에서 점진적으로 영역을 넓히고 있습니다. Rust는 아직 전체 시장에서 작은 비중에 머물러 있는 것이 사실입니다.
그러나 이러한 표면적인 점유율과는 달리, Rust 임베디드 생태계 내부에서는 분명한 구조적 변화가 관측되고 있습니다. HAL 계층은 점차 안정화되고 있으며, 비동기 실행 모델은 Embassy를 중심으로 수렴하고 있고, 네트워킹 구성 요소들은 플랫폼 간 재사용을 전제로 설계되기 시작하였습니다.
본 글의 목적은 Rust가 C를 대체할 것이라고 주장하는 데 있지 않습니다. 대신 Rust가 어떤 영역에서 성장하고 있는지, 그 성장이 어떠한 아키텍처적 방향성을 요구하는지, 그리고 WIZnet이 최소한의 투자로 이 흐름 속에서 의미 있는 영향력을 확보할 수 있는 방안을 살펴보고자 합니다. 이를 위해 Cotton 프로젝트를 하나의 기준점으로 활용하였습니다.
1. 작은 비중이지만 분명한 성장 신호
공개된 다수의 임베디드 개발자 설문 조사에서는 여전히 C와 C++가 최상위 언어로 분류되며, Python 계열 언어들이 그 뒤를 잇고 있습니다. Rust는 이러한 통계에서 상위 언어로 명시되지 않는 경우가 많습니다.
그러나 단순한 점유율 수치만으로는 중요한 흐름을 놓치기 쉽습니다.
RP2040용 Rust HAL은 수년에 걸쳐 꾸준히 릴리즈를 이어오고 있습니다.
ESP32용 Rust HAL은 높은 다운로드 수와 함께 의존 크레이트 수가 지속적으로 증가하고 있습니다.
Embassy async executor와 네트워크 구성 요소는 2020년경부터 시작되어 현재까지도 활발히 유지·개선되고 있습니다.
이러한 지표들은 일시적인 유행이 아니라, 장기적인 생태계 정착을 의미하는 신호로 해석할 수 있습니다. Rust 임베디드는 아직 규모는 작지만, 점차 구조를 갖추어 가고 있는 단계에 있습니다.
2. Rust가 수렴하고 있는 세 가지 플랫폼
Rust 임베디드 생태계의 성장은 모든 플랫폼에서 동일하게 나타나지는 않습니다. 특히 다음 세 가지 플랫폼을 중심으로 수렴하는 경향이 확인됩니다.
STM32
STM32는 산업 및 상용 임베디드 시스템의 핵심 플랫폼입니다. Rust HAL 생태계가 비교적 성숙해 있으며, 결정성이 중요한 유선 네트워크 환경과도 잘 부합합니다. 이는 STM32가 실전형 Rust 적용의 대표적인 사례임을 의미합니다.
ESP32
ESP32는 기본적으로 Wi-Fi를 내장하고 있지만, 안정적인 유선 네트워크에 대한 요구 역시 지속적으로 존재합니다. esp-hal을 중심으로 Rust 지원이 빠르게 확장되고 있으며, 무선과 유선을 함께 사용하는 하이브리드 설계의 중요 플랫폼으로 자리 잡고 있습니다.
RP2040 (Raspberry Pi Pico)
RP2040은 교육 및 메이커 분야에서 널리 사용되고 있으며, 단순한 하드웨어 구조와 우수한 Rust 진입 경험을 제공합니다. 이는 차세대 임베디드 개발자들이 Rust를 자연스럽게 접하게 되는 기반이 되고 있습니다.
이 세 플랫폼 전반에서 공통적으로 요구되는 요소는 이식 가능한 HAL, 비동기 실행 모델, 그리고 조합 가능한 네트워크 구성입니다.
3. Cotton의 의미: 해답이 아닌 지도
Cotton은 제품이나 표준을 지향하는 프로젝트가 아닙니다. Cotton의 가치는 Rust 임베디드 네트워킹이 어디까지 분해될 수 있는지를 보여주는 참조 구조에 있습니다.
Cotton에서는 다음과 같은 설계가 확인됩니다.
네트워크 인터페이스의 변화는 이벤트로 처리됩니다.
디스커버리 로직은 전송 계층과 분리되어 있습니다.
디바이스 정체성은 별도의 구성 요소로 관리됩니다.
no-std, no-alloc 기반의 비동기 USB Host 스택이 네트워크 구성과 병존합니다.
W5500은 MACRAW 모드로 smoltcp 네트워크 장치로 사용됩니다.
Cotton의 핵심은 개별 기능이 아니라, 역할과 책임의 명확한 분리에 있습니다. Cotton은 “이렇게 사용해야 한다”기보다는 “이렇게까지 설계할 수 있다”는 가능성을 제시합니다.
4. 현실의 선택지: Embassy
대부분의 실제 제품에서는 Cotton 전체를 채택하지 않습니다. 대신 Embassy를 중심으로 한 비동기 실행 모델을 선택하고 있습니다.
Embassy는 비동기 executor, 플랫폼별 HAL 통합, 그리고 smoltcp 기반 네트워크 스택을 제공합니다. 특히 embassy-net-wiznet을 통해 WIZnet 장치가 이미 이 생태계의 핵심 축에 포함되어 있다는 점은 중요한 의미를 갖습니다.
이는 W5500이 Rust 임베디드 네트워킹의 성장 경로 위에 이미 자리 잡고 있음을 보여줍니다.
5. 두 개의 트랙, 하나의 전략
WIZnet의 관점에서 보면, Rust 임베디드 네트워킹은 자연스럽게 두 가지 트랙으로 나뉩니다.
현실 트랙
HW TCP 오프로딩, 소켓 기반 프로그래밍, STM32·ESP32·RP2040 기반의 상용 설계, 그리고 Embassy 중심의 비동기 실행 모델이 이에 해당합니다. 이는 현재 다수의 고객이 위치한 영역입니다.
참조 트랙
MACRAW 기반 설계, smoltcp 활용, 결정 가능하고 분석 가능한 네트워크 구조, 보안 및 연구 목적의 아키텍처가 이에 해당합니다. Cotton은 이 방향성을 대표합니다.
이 두 트랙은 경쟁 관계가 아니라, 서로를 보완하는 관계입니다.
6. 최소 투자로 최대 영향력을 확보하는 방법
대규모 스택 재작성이나 전면적인 포팅은 필수적이지 않습니다. 오히려 다음과 같은 접근이 가장 효율적입니다.
Embassy를 중심으로 Rust 네트워크 통합을 유지·강화합니다.
STM32, ESP32, RP2040에 대해 동일한 구조의 참조 예제를 제공합니다.
Cotton은 고급 참조 아키텍처로 유지하여 방향성을 제시합니다.
이와 같은 전략은 생태계의 분열을 방지하면서도, WIZnet을 자연스러운 선택지로 자리매김하게 합니다.
맺음말
Rust는 단기간에 C를 대체하지는 않을 것입니다. 그러나 임베디드 시스템의 구조와 설계 방식은 이미 변화하고 있습니다.
Cotton은 미래의 설계 지평을 보여주고, Embassy는 현재의 실행 기반을 제공하며, STM32·ESP32·RP2040은 개발자 흐름을 형성하고 있습니다.
WIZnet이 해야 할 일은 표준을 소유하는 것이 아니라, 표준이 형성되는 길목에 서는 것입니다.
