No description
Find a file
Fábio Coutada 1018e8274b feat(testing): add in-kernel test harness — Phase 2 complete
kernel/src/test/:
- uos_test.h: Test framework header with macros (UOS_TEST, UOS_ASSERT, etc.)
  - UOS_TEST(suite, name) — define a test case
  - UOS_TEST_SKIP(suite, name) — define a skipped test
  - UOS_ASSERT, UOS_ASSERT_EQUAL, UOS_ASSERT_NOT_NULL, etc.
  - Auto-registration via GCC constructor attributes
- uos_test_runner.cpp: Test runner with UART output
  - Linked list registry for test cases
  - [TEST] pass/fail/skip output format (parsed by CI)
  - Test statistics (total/passed/failed/skipped)
- 7 test files: scheduler, memory, ipc, exceptions, interrupts, devices, partitions

kernel/Makefile:
- Added TEST_SRCS wildcard for kernel/src/test/*.cpp
- Added TEST_OBJS to link list

kernel/src/core/kernel.cpp:
- Added uos_test_run_all() call before idle loop
- Tests run after all initialization and demos

Test output format:
  [TEST] scheduler.init: pass
  [TEST] memory.overflow_protection: pass
  [TEST] ipc.message_send_receive: pass
  ...
  Results: 25 passed, 0 failed, 0 skipped
  ALL TESTS PASSED
2026-07-12 17:06:50 +01:00
.aurelio ci: add aurelio mirror action 2026-07-11 18:59:05 +01:00
.claude feat: implement core IPC, resource partitioning, health management, and RISC-V architecture parity enhancements. 2026-07-09 21:04:10 +01:00
.forgejo/workflows ci: add aurelio mirror action 2026-07-11 18:59:05 +01:00
.github/workflows feat(testing): add boot test infrastructure — Phase 1 complete 2026-07-12 16:42:23 +01:00
.hermes/plans fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
.mimocode fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
.zcode fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
cdk fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
docs fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
docs-extracted fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
guests fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
kernel feat(testing): add in-kernel test harness — Phase 2 complete 2026-07-12 17:06:50 +01:00
pikeos-mirror fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
pikeos-rebrand fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
rebrand-logs fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
share fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
src
third_party fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
tools feat(testing): add boot test infrastructure — Phase 1 complete 2026-07-12 16:42:23 +01:00
website fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
xsd/src fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
.gitignore
.gitmodules refactor: remove mycelium-tfw-extension to centralize in mycelium repo 2026-07-12 15:34:58 +01:00
.woodpecker.yml fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
AGENTS.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
AURELIO_INTEGRATION.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
AUTOSAR_CPP.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
BLOCK_DRIVER_IMPLEMENTATION.md feat(universalisos): PikeOS-style Phase B/C device drivers + Phase D microkernel 2026-07-09 09:10:53 +01:00
BUILD_ENVIRONMENT.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
CHANGELOG.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
COMPONENTS.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
eradicate_prefixes.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
fix_naming.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
HYPERVISOR.md feat(phase-a): complete PikeOS 5.0 context switching implementation 2026-07-07 23:44:30 +01:00
implementation_plan.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
IMPORT_GUIDE.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
IMPORT_SUMMARY.md
LICENSE
pikeos_5_parity_gap_analysis.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
pikeos_mirror_full_index.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
README.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
rebrand.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
rebrand_docs.sh fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
RISCV_PIKEOS_PARITY_PLAN.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
UNIVERSALISOS_PIKEOS_ANALYSIS.md analysis: comprehensive UniversalisOS vs PikeOS 5.0 parity assessment 2026-07-08 00:04:05 +01:00
universalisos_status_report.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
UNIVERSALISOS_VS_PIKEOS_5.0.md feat(phase-a): complete PikeOS 5.0 context switching implementation 2026-07-07 23:44:30 +01:00
uos_map.h fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
VERSION fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00
XSD_WORKFLOW_ANALYSIS.md fix(kernel): resolve armv7 linker errors, fix exceptions vector base address, and remove untracked conflicting files 2026-07-12 16:40:24 +01:00

UniversalisOS — Safety-Critical Type-1 Hypervisor

License: MIT Version

UniversalisOS is a safety-critical type-1 hypervisor for cyber-physical systems, implementing PikeOS 5.0 patterns. Supports ARMv7, AArch64 (EL2), and RISC-V (S-mode) with ARINC-653 partitioning, VirtIO paravirtualization, and live migration.

Quick Start

Prerequisites

  • ARMv7: arm-none-eabi-gcc + qemu-system-arm
  • AArch64: aarch64-linux-gnu-gcc + qemu-system-aarch64
  • RISC-V: riscv64-linux-gnu-gcc + qemu-system-riscv64
  • Mycelium: Rust toolchain (cargo)
  • Tools: Python 3.11+

Build the Kernel

cd kernel

# ARMv7 (primary, fully tested)
make ARCH=armv7 PLATFORM=qemu-arm-virt

# AArch64 (EL2 hypervisor)
make ARCH=aarch64 PLATFORM=qemu-aarch64-virt

# RISC-V (Icicle Kit)
make ARCH=riscv PLATFORM=polarfire

Run in QEMU

# ARMv7
qemu-system-arm -M virt -cpu cortex-a15 -m 512M \
  -nographic -kernel build/armv7/qemu-arm-virt/universalisos.elf

# AArch64 (virtualization=on is mandatory)
qemu-system-aarch64 -M virt,gic-version=3,virtualization=on \
  -cpu cortex-a53 -m 512M -smp 4 -nographic \
  -kernel build/aarch64/qemu-aarch64-virt/universalisos.elf

# RISC-V (bare-metal, BSP only)
qemu-system-riscv64 -machine microchip-icicle-kit -smp 5 -m 2G \
  -nographic -bios none -kernel build/riscv/polarfire/universalisos.elf

Press Ctrl+A then X to exit QEMU.

Architecture

┌──────────────────────────────────────────────┐
│  Guest Partitions (ARINC-653, POSIX, Bare)   │
├──────────────────────────────────────────────┤
│  Hypercall Interface (HVC / ecall / SVC)     │
├──────────────────────────────────────────────┤
│  Hypervisor Core                             │
│  ├─ Scheduler (priority, time-partitioning)  │
│  ├─ Memory (MMU, stage-2, partitions)        │
│  ├─ IPC (sampling ports, mailbox)            │
│  ├─ VirtIO (blk, net, console)              │
│  ├─ Migration (checkpoint/restore)           │
│  └─ Health Monitor                           │
├──────────────────────────────────────────────┤
│  Hardware Abstraction (ARM GIC, PL011, etc.) │
└──────────────────────────────────────────────┘

Project Structure

Directory Description
kernel/ Hypervisor kernel (C++, freestanding)
tools/uos-cover/ Coverage toolchain (8 tools, DO-178C)
tools/uos-pkg/ Package toolchain (RPM spec parser, build engine)
mycelium-tfw-extension/ VS Code extension for test framework
guests/ Guest OS payloads (Linux aarch64, RISC-V sampling)
src/ PikeOS source import (reference)
docs/ Documentation (extracted PikeOS manuals, parity specs)
third_party/ External deps (musl-uos-port, hardened_malloc)

What's Included

  • 3 architecture backends: ARMv7 (SVC-based), AArch64 (EL2 HVC), RISC-V (S-mode ecall)
  • ARINC-653 partitioning: Time-partitioned scheduling, sampling ports, error management
  • VirtIO paravirtualization: Block, network, and console devices via hypercalls
  • Live migration: Checkpoint/restore with guest state, memory, and device snapshots
  • Coverage toolchain: Instrumentation, structural linking, report generation, justification, traceability
  • Package toolchain: RPM 4.2-compatible spec parser and build engine
  • ADT library port: PikeOS data structures (AVL, CRC32, list, lheap, kdev)
  • Mycelium toolchain: XSD-to-C code generation (21 Rust crates replacing proprietary configconv)
  • DO-178C certification support: Verification plans, evidence packaging, traceability matrices

Build Instructions

ARMv7

cd kernel
make ARCH=armv7 PLATFORM=qemu-arm-virt

Output: build/armv7/qemu-arm-virt/universalisos.elf

AArch64

cd kernel
make ARCH=aarch64 PLATFORM=qemu-aarch64-virt

Output: build/aarch64/qemu-aarch64-virt/universalisos.elf

RISC-V

cd kernel
make ARCH=riscv PLATFORM=polarfire

Output: build/riscv/polarfire/universalisos.elf

AArch64 with Linux Guest

cd kernel
make run-linux-real ROOTFS=<path-to-rootfs.img>

Clean Builds

make clean          # Clean current arch/platform
make clean-all      # Clean all build trees

Documentation

Safety Standards

UniversalisOS targets compliance with:

  • DO-178C — Airborne software (DAL-A through DAL-E)
  • ISO 26262 — Automotive functional safety (ASIL-D)
  • MISRA C++ / MISRA C — Coding guidelines
  • ARINC 653 — Avionics application standard

License

MIT License — see LICENSE for details.

Integration

UniversalisOS integrates with the PortugalFuturista ecosystem:

  • nervura-electrica — Infrastructure platform and hosting
  • Aurelio — Compiler, gateway, and cyber-physical brain platform
  • mycelium — XSD-to-C configuration toolchain