Roadmap¶
Current state: Phases 0–6 are complete. 263 tests pass, RTEMS hello-world boots cleanly, and 10 RTEMS sptests reach
*** END OF TEST.Phase 7 is the "Run real RTEMS workloads" milestone. Phase 8 is the "System-level simulation" milestone.
Phase 7 — FPU, MMU, GDB, SMP, cache¶
Mission: maximise RTEMS testsuite coverage and enable interactive debugging of real guests.
Phase 7 exit criteria
- ≥ 80 % of RTEMS 5 sptests pass (uniprocessor, no MMU).
- ≥ 50 % of RTEMS 5 smptests pass (N=2 GR712RC, N=4 GR740).
- 100 % of fptests that do not require extended
fenvpass. - RTEMS 5 hello-world boots and completes cleanly with MMU enabled.
- A remote GDB session works against an RTEMS binary (breakpoints, single-step, register and memory inspection).
7.1 Advanced FPU (Berkeley SoftFloat 3e)¶
| Goal | Replace the FPU stub with a faithful IEEE-754 SPARC V8 FPU. Unblocks dozens of sptests that currently fail on FP-disabled traps. |
| Status | In progress — Tanda 1 core operations implemented; TEM-gated fp_exception trap and RTEMS fptest01 integration pending. |
| Key deliverables | fpu.hpp, fpu_handlers.hpp, softfloat_context.hpp and matching .cpp files in src/core/. Vendored third-party/softfloat3e/. |
| Dependencies | Phase 3 trap dispatch (done). |
7.2 SRMMU (SPARC V8 Reference MMU)¶
| Goal | Enable the RTEMS-with-MMU testsuite (process isolation, paging). Scope is RTEMS, not Linux. |
| Status | Pending |
| Key deliverables | mmu.hpp, mmu_pte.hpp, mmu.cpp, mmu_walker.cpp; ASI 0x4 register file; ASI 0x3 flush/probe; optional software TLB. |
| Dependencies | Trap system (done); 7.5 Cache Control Registers (prerequisite, shares the alternate-space dispatch path). |
7.3 GDB remote stub¶
| Goal | Enable interactive debugging of the guest via the GDB Remote Serial Protocol over TCP. |
| Status | Done — RSP over TCP, 9 GDB tests pass; conditional E2E with sparc-rtems5-gdb skips cleanly when absent. |
| Key deliverables | gdb_stub.hpp / gdb_stub.cpp in src/runtime/. Software breakpoints, multi-core thread exposure, vCont, Ctrl-C interrupt. |
| Dependencies | None. Recommended before 7.2 because debugging page-table failures without a debugger is unnecessarily difficult. |
7.4 SMP validation (GR712RC N=2, GR740 N=4)¶
| Goal | Validate the SMP-ready architecture by booting RTEMS smptests on dual-core and quad-core recipes. |
| Status | Pending |
| Key deliverables | gr740_config() factory; parameterised IrqMP for 1–4 CPUs; GR740 peripheral addresses; tests/integration/test_rtems_smptests.cpp. |
| Dependencies | 7.1 (FPU) and 7.2 (MMU) are desirable first, because several smptests use floating-point and/or MMU. |
7.5 Cache control registers (formal stubs)¶
| Goal | Replace ad-hoc cache-register patches with a formal, testable model of ASI 0x02. Caches are always disabled but frozen-coherent; writes are logged no-ops. |
| Status | Pending |
| Key deliverables | cache_control.hpp / .cpp in src/core/; CCR writable-bit masking; FI/FD self-clearing flush hints; ICS/DCS always read back 00. |
| Dependencies | None. Recommended immediately before 7.2 (MMU). |
Recommended Phase 7 order¶
7.1 FPU (finish TEM gating + fptest01)
↓
7.3 GDB (already done)
↓
7.5 Cache control (small, unblocks MMU)
↓
7.2 SRMMU (most complex; tackle with GDB available)
↓
7.4 SMP validation (needs FPU + MMU)
Phase 8 — System-level simulation¶
Mission: enable integration into European space industry simulation environments and turn Lince into a production simulation model.
| Step | Title | Goal | Status |
|---|---|---|---|
| 8.1 | Save / Restore lifecycle | Bit-exact Store() / Restore() for SMP2 compliance and checkpointing. |
Pending |
| 8.2 | PROM (boot ROM) | Immutable boot ROM at 0x00000000 for real boot flows (MKPROM2). |
Pending |
| 8.3 | Flash memory | Programmable non-volatile storage with optional host-file persistence. | Pending |
| 8.4 | GPIO (GRGPIO) | Pin-level connectivity with external models (sensors, actuators). | Pending |
| 8.5 | CAN bus (HurriCANe / OCAN) | Standard space-platform service bus with Rx/Tx mailboxes. | Pending |
| 8.6 | SpaceWire (GRSPW2) | High-speed DMA-based inter-model connectivity with RMAP support. | Pending |
| 8.7 | RegisterBank pattern | Internal refactor: replace bespoke switch-block MMIO with a declarative helper. |
Pending |
Phase 8 exit criteria
Store()→ modify guest →Restore()reproduces bit-exact state.- Cross-model demo: two
Emulatorinstances communicate over SpaceWire RMAP. INTEGRATION.mddocument describes how to wrap Lince in an SMP2 wrapper.
Dependency graph¶
Phase 6 (Done)
|
+---> 7.1 FPU ----------------------+
| (In progress) |
+---> 7.3 GDB Stub (Done) ---------+
| |
+---> 7.5 Cache Control (Pending) --+---> 7.2 SRMMU (Pending) --+
| |
+----------------------------+---> 7.4 SMP (Pending)
Phase 8 items land after Phase 7:
8.1 Save/Restore -> 8.2 PROM -> 8.3 Flash -> 8.4 GPIO -> 8.5 CAN -> 8.6 SpaceWire
8.7 RegisterBank is a background refactor (last priority).
Notes¶
- The master plan lives in
plans/phase7-roadmap.mdand its sub-plan files (phase7-fpu.md,phase7-mmu.md,phase7-gdb-stub.md,phase7-smp.md,phase7-cache-control.md). - The FPU plan (
phase7-fpu.md) still lists Tasks 1.10–1.12 as pending even though the master roadmap marks 7.1 broadly complete. The public status reflects the most conservative view: Tanda 1 core is done, TEM trap gating and RTEMS integration remain.