atarix
Capability-based, trust-nothing OS architecture on a W65C816S CPU card + ECP5 FPGA fabric. W5500 handles netboot/NTP during Rev A bring-up.
PROJECT DESCRIPTION
프로젝트가 하는 일
이 프로젝트(ATARIX, 제작자 @dlworrell)는 교체 가능한 CPU 카드, FPGA로 구현한 Fabric Northbridge, supervisor 관리 평면, 능력(capability) 기반 자원 접근, 명시적 보안 도큐트린, Sun/NuBus/UPA에서 영감을 받은 모듈형 백플레인을 중심으로 설계한 모듈형 실험 워크스테이션이자 운영체제 아키텍처 연구 프로젝트입니다.
초기 Rev A의 CPU 카드 타깃은 WDC W65C816S이지만, README는 이 프로세서를 "영구적인 아키텍처 제약이 아니라 구현 타깃"으로 규정합니다. 즉 공개 시스템 아키텍처를 바꾸지 않고도 향후 다른 CPU 카드를 추가할 수 있도록 설계되었습니다.
핵심은 trust-nothing(아무것도 신뢰하지 않는) 아키텍처입니다. 권한(authority)·신뢰·소유·영속성·정리(cleanup)가 모두 명시적이어야 하고, "연결성은 신뢰가 아니다", "코드 실행이 곧 권한은 아니다", "침해는 발생한다고 가정하고 반드시 격리(containment)한다" 같은 원칙을 따릅니다. 프로젝트는 코드가 아니라 아키텍처 자체를 산출물로 보고, 모든 하위 시스템은 구현 전에 아키텍처 리뷰를 거칩니다.
주요 목표는 운영체제 연구, FPGA 기반 시스템 아키텍처, 보안 디바이스 중재(mediation), 하드웨어 bring-up, 이기종 컴퓨팅 실험, 그리고 레트로-모던 워크스테이션 설계를 지원하는 것입니다
WIZnet이 들어가는 위치
이 프로젝트에서 사용되는(예정된) WIZnet 제품은 W5500입니다.
W5500은 ATARIX의 보안 코어나 Fabric Northbridge의 핵심 부품이 아닙니다. README의 Rev A 베이스라인에 따르면, W5500은 하드웨어 bring-up 단계에서 netboot(네트워크 부팅)와 NTP(시간 동기화) 를 지원하기 위한 초기 네트워킹 수단으로 사용될 가능성이 높습니다.
역할을 나누면 구조가 명확해집니다.
- WDC W65C816S (CPU 카드): 커널 실행, 인터럽트 처리 등 결정론적 실행
- ECP5 FPGA (Fabric Northbridge): 서비스 디스커버리, 메일박스 전송, DMA, 인터럽트 라우팅, 메모리 서비스 등 시스템 통합 지점
- RP2350 (Supervisor): 리셋, 복구, RTC, 워치독, 헬스 모니터링, 결함 로깅
- W5500 (네트워킹): bring-up 단계의 netboot 및 NTP — 시스템을 네트워크에서 끌어올리고 시간을 맞추는 초기 연결
bring-up 단계에서 안정적인 유선 Ethernet은 중요한데, W5500은 하드웨어 TCP/IP 스택, SPI 인터페이스, 8개 독립 socket, 32KB 내부 buffer를 제공하므로 호스트(또는 supervisor)가 복잡한 네트워크 프로토콜 처리를 떠안지 않고도 netboot/NTP를 구현하기 좋습니다. ATARIX의 trust-nothing 도큐트린 관점에서도, 네트워크 연결을 명시적이고 격리 가능한 객체로 다루는 설계와 잘 어울립니다("연결성은 신뢰가 아니다").
구현 메모
ATARIX는 대부분 C로 작성되며, 공개 C 인터페이스는 include/atarix/ 아래에 정리되어 있습니다. 주요 서브시스템은 다음과 같습니다.
- Discovery (
discovery.h): 디스커버리 와이어 포맷, magic/version 상수, 레코드 정렬/타입/플래그, CRC 커버리지 - Operations (
operations.h):READ,WRITE,CONTROL,RESET,BOOT,RECOVER,DELEGATE,REVOKE같은 표준 연산 식별자 - Rings (
rings.h): 권한 링(coarse-grained 보안 경계)과 와이어 포맷 매핑 - Capability: 범위 지정·취소·감사 가능하고 의도된 권한에 바인딩되는 능력 모델
- Mailbox: 객체 간 통신 전송 계층(전송 자체가 권한을 부여하지 않음)
네트워킹 관점에서 W5500은 보통 SPI로 호스트 MCU에 연결됩니다. 아래는 ATARIX 저장소의 코드가 아니라, W5500 netboot를 구상할 때 참고할 수 있는 일반적인 흐름 예시입니다.
[전원/리셋]
-> Supervisor(RP2350) 초기화
-> W5500 SPI 초기화 (CLK/MOSI/MISO/CS/RESET/INT)
-> 링크 업 확인 -> DHCP 또는 정적 IP
-> NTP로 시간 동기화
-> netboot: 네트워크에서 부팅 이미지 수신
-> Fabric Northbridge로 제어 이양참고: W5500은 SPI 기반이라
CLK / MOSI / MISO / CS / RESET / INT핀을 보드 사양과 펌웨어에서 동일하게 맞춰야 합니다. SPI 핀을 다른 장치와 공유하지 않는 것이 안정적입니다.
실전 팁 / 주의점
- 이 프로젝트는 아키텍처/연구 중심입니다. 완성된 워크스테이션 제품이 아니라, 사양(ATX-SPEC) 문서와 능력/링/메일박스 모델을 단계적으로 구현하는 단계입니다.
- W5500은 현재 bring-up 단계의 netboot/NTP 용도로 계획된 것이며, 보안 코어가 아닙니다. 역할을 혼동하지 마세요.
- bring-up에서는 네트워크 경로를 단순하게 유지하는 것이 디버깅에 유리합니다. 링크 업 → IP 획득 → NTP → netboot 순서를 단계별로 검증하세요.
- W65C816S는 구현 타깃일 뿐 아키텍처 제약이 아닙니다. 향후 CPU 카드 교체를 전제로 공개 인터페이스에 CPU 종속 세부사항을 흘리지 않는 것이 도큐트린입니다.
- 새 작업은 구현 전에 "권한을 만드는가/이양하는가/영속화하는가/노출하는가, 공격 표면을 늘리는가" 같은 질문(ARC-SEC)에 답해야 합니다.
유사 프로젝트
https://maker.wiznet.io/ssekim/projects/apache-nuttx-real-time-operating-system/
두 프로젝트는 모두 운영체제/시스템 소프트웨어 계층의 프로젝트이며, W5500을 네트워크 연결 수단으로 사용한다는 점에서 유사합니다. 다만 ATARIX는 새로운 능력 기반 보안 아키텍처를 바닥부터 설계하는 연구 프로젝트이고, NuttX는 표준 준수와 작은 풋프린트를 강조하는 성숙한 RTOS입니다.
유사점
| 항목 | 유사한 점 |
|---|---|
| 계층 | 둘 다 OS/시스템 소프트웨어 레벨의 프로젝트입니다. |
| 오픈소스 | 둘 다 오픈소스로 공개되어 있습니다. |
| 네트워킹 | 둘 다 W5500으로 Ethernet 연결을 제공/활용합니다. |
| 임베디드 타깃 | 둘 다 소형 임베디드/보드 환경을 대상으로 합니다. |
| 저수준 제어 | 둘 다 하드웨어에 가까운 저수준 제어를 다룹니다. |
차이점
| 항목 | ATARIX | Apache NuttX RTOS |
|---|---|---|
| 성격 | 신규 아키텍처 연구 프로젝트 | 성숙한 범용 RTOS |
| 핵심 가치 | 능력 기반 보안 + trust-nothing 도큐트린 | POSIX 호환성 + 작은 풋프린트 |
| CPU 방향 | 교체 가능한 CPU 카드(초기 W65C816S) | 다양한 MCU/SoC 포팅 |
| 통합 허브 | ECP5 FPGA Fabric Northbridge | 표준 커널 + 디바이스 드라이버 |
| W5500 역할 | bring-up netboot/NTP 네트워킹 | 일반 네트워크 스택 연결 |
| 산출물 관점 | 아키텍처가 곧 산출물 | 동작하는 RTOS 커널 |
FAQ
Q: ATARIX는 어떤 프로젝트인가요? A: 교체 가능한 CPU 카드와 ECP5 FPGA Fabric Northbridge, 능력 기반 보안을 중심으로 한 모듈형 실험 워크스테이션 / OS 아키텍처 연구 프로젝트입니다.
Q: 이 프로젝트에서 W5500은 어떤 역할인가요? A: Rev A 베이스라인 기준으로 hardware bring-up 단계의 netboot와 NTP를 위한 네트워킹 수단으로 사용될 가능성이 높습니다. 보안 코어 부품은 아닙니다.
Q: 왜 W65C816S 같은 오래된 CPU를 쓰나요? A: W65C816S는 Rev A의 구현 타깃일 뿐이며, 아키텍처는 CPU 카드를 교체할 수 있도록 설계되어 향후 다른 프로세서로 확장 가능합니다.
Q: 지금 어느 단계인가요? A: Discovery/Capability/Ring/Mailbox/Simulation 테스트가 통과한 상태(CI 40/40)이며, 현재 "Architecture Phase 2: Core System Semantics" 단계입니다.
What the Project Does
This project (ATARIX, created by @dlworrell) is a modular experimental workstation and operating-system research architecture built around interchangeable CPU cards, a Fabric Northbridge implemented in an FPGA, a supervisor management plane, capability-mediated resource access, an explicit security doctrine, and a Sun/NuBus/UPA-inspired modular backplane.
The initial Rev A CPU-card target is the WDC W65C816S, but the README treats this processor as "an implementation target, not a permanent architectural constraint." In other words, future CPU cards can be introduced without changing the public system architecture.
At its core is a trust-nothing architecture. Authority, trust, ownership, persistence, and cleanup must all be explicit, following principles such as "connectivity is not trust," "code execution does not imply authority," and "compromise is expected and must be contained." The project treats the architecture itself as the product, and every subsystem is reviewed against the architecture review process before implementation.
Its main goals are to support OS research, FPGA-based system architecture, secure device mediation, hardware bring-up, heterogeneous compute experiments, and retro-modern workstation design.
Where WIZnet Fits
The WIZnet product used (planned) in this project is the W5500.
The W5500 is not part of ATARIX's security core or the Fabric Northbridge. According to the README's Rev A baseline, the W5500 is likely used as the early networking means for netboot (network boot) and NTP (time synchronization) during hardware bring-up.
Separating the roles makes the structure clear:
- WDC W65C816S (CPU card): deterministic execution such as kernel execution and interrupt handling
- ECP5 FPGA (Fabric Northbridge): system integration point for service discovery, mailbox transport, DMA, interrupt routing, memory services, etc.
- RP2350 (Supervisor): reset, recovery, RTC, watchdog, health monitoring, fault logging
- W5500 (networking): netboot and NTP during bring-up — the early connection that pulls the system up from the network and sets the time
Stable wired Ethernet matters during bring-up, and since the W5500 provides a hardware TCP/IP stack, an SPI interface, eight independent sockets, and a 32 KB internal buffer, it is well suited to implementing netboot/NTP without forcing the host (or supervisor) to carry complex network protocol processing. It also fits ATARIX's trust-nothing doctrine, which treats network connectivity as an explicit, containable object ("connectivity is not trust").
Implementation Notes
ATARIX is written mostly in C, with its public C interface organized under include/atarix/. Key subsystems include:
- Discovery (
discovery.h): discovery wire format, magic/version constants, record alignment/types/flags, CRC coverage - Operations (
operations.h): canonical operation identifiers such asREAD,WRITE,CONTROL,RESET,BOOT,RECOVER,DELEGATE,REVOKE - Rings (
rings.h): privilege rings (coarse-grained security boundaries) and wire-format mappings - Capability: a capability model that is scoped, revocable, auditable, and bound to intended authority
- Mailbox: the transport layer for inter-object communication (transport itself grants no authority)
From a networking standpoint, the W5500 typically connects to a host MCU over SPI. Below is not code from the ATARIX repository, but a general flow you might reference when designing W5500 netboot.
[power/reset]
-> Initialize supervisor (RP2350)
-> Initialize W5500 over SPI (CLK/MOSI/MISO/CS/RESET/INT)
-> Confirm link up -> DHCP or static IP
-> Synchronize time via NTP
-> netboot: receive boot image from the network
-> Hand off control to the Fabric NorthbridgeNote: The W5500 is SPI-based, so the
CLK / MOSI / MISO / CS / RESET / INTpins must match between the board specification and firmware. It is more stable not to share the SPI pins with other devices.
Practical Tips / Pitfalls
- This is an architecture/research-focused project. It is not a finished workstation product, but a phase of progressively implementing specification (ATX-SPEC) documents and the capability/ring/mailbox models.
- The W5500 is currently planned for bring-up netboot/NTP, not as a security core. Do not conflate the roles.
- During bring-up, keeping the network path simple helps debugging. Verify link-up → IP acquisition → NTP → netboot step by step.
- The W65C816S is an implementation target, not an architectural constraint. The doctrine is to avoid leaking CPU-specific details into the public interface, anticipating future CPU-card swaps.
- New work must answer questions (ARC-SEC) such as "does this create/transfer/persist/expose authority, and does it increase attack surface?" before implementation.
Similar Project
https://maker.wiznet.io/ssekim/projects/apache-nuttx-real-time-operating-system/
Both projects are similar in that they are OS/system-software-level projects that use the W5500 as a means of network connectivity. However, ATARIX is a research project designing a new capability-based security architecture from the ground up, while NuttX is a mature RTOS emphasizing standards compliance and a small footprint.
Similarities
| Item | Similarity |
|---|---|
| Layer | Both are OS/system-software-level projects. |
| Open source | Both are released as open source. |
| Networking | Both provide/use Ethernet connectivity via the W5500. |
| Embedded target | Both target small embedded/board environments. |
| Low-level control | Both deal with low-level, close-to-hardware control. |
Differences
| Item | ATARIX | Apache NuttX RTOS |
|---|---|---|
| Nature | New architecture research project | Mature general-purpose RTOS |
| Core value | Capability-based security + trust-nothing doctrine | POSIX compatibility + small footprint |
| CPU direction | Interchangeable CPU cards (initially W65C816S) | Ports to many MCUs/SoCs |
| Integration hub | ECP5 FPGA Fabric Northbridge | Standard kernel + device drivers |
| W5500 role | Bring-up netboot/NTP networking | General network stack connectivity |
| Product view | The architecture is the product | A working RTOS kernel |
FAQ
Q: What kind of project is ATARIX? A: A modular experimental workstation / OS architecture research project centered on interchangeable CPU cards, an ECP5 FPGA Fabric Northbridge, and capability-based security.
Q: What role does the W5500 play here? A: Per the Rev A baseline, it is likely used as networking for netboot and NTP during hardware bring-up. It is not a security-core component.
Q: Why use an old CPU like the W65C816S? A: The W65C816S is only the Rev A implementation target; the architecture is designed so CPU cards can be swapped, allowing expansion to other processors later.
Q: What phase is it in now? A: Discovery/Capability/Ring/Mailbox/Simulation tests pass (CI 40/40), and it is currently in "Architecture Phase 2: Core System Semantics."
Documents
- GitHub Code: https://github.com/dlworrell/atarix
- Rev A Hardware Baseline: https://github.com/dlworrell/atarix/blob/main/docs/rev-a-hardware-baseline.md
