---
title: "atarix"
url: "https://maker.wiznet.io/irina/projects/atarix/"
markdown_url: "https://maker.wiznet.io/irina/projects/atarix/md"
type: "UCC: User Created Content"
author: "dlworrell"
author_url: "https://github.com/dlworrell/atarix"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "dlworrell"
original_url: "https://github.com/dlworrell/atarix"
published: "2026-06-15"
language: "en"
likes: 0
views: 230
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# atarix

> Capability-based, trust-nothing OS architecture on a W65C816S CPU card + ECP5 FPGA fabric. W5500 handles netboot/NTP during Rev A bring-up.

Original author: dlworrell (source: https://github.com/dlworrell/atarix)

## Article

### 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, 이기종 컴퓨팅 실험, 그리고 레트로-모던 워크스테이션 설계를 지원하는 것입니다

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

### 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를 구상할 때 참고할 수 있는 일반적인 흐름 예시**입니다.

```plaintext
[전원/리셋]
  -> 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.

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

## 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 as `READ`, `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.

```plaintext
[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 Northbridge
```

> Note: The W5500 is SPI-based, so the `CLK / MOSI / MISO / CS / RESET / INT` pins 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>

---

Source: https://maker.wiznet.io/irina/projects/atarix/
