No description
MC/DC (Modified Condition/Decision Coverage) test cases for DO-178C compliance across all critical modules: test_scheduler_mcdc.cpp (275 lines): - S-6: scheduler_add_task() — null + queue full (compound OR) - S-10: scheduler_preempt() — compound AND - S-13: task_unblock() — null + state check (compound OR) - S-14: scheduler_check_deadlines() — 3-way AND - S-15: scheduler_priority_inherit() — null + comparison - S-17: scheduler_check_time_partition() — null + time exceeded - S-18: scheduler_context_switch_complete() — null + failure - S-19: scheduler_get_stats() — null check - S-20: task_get_info() — compound OR test_ipc_mcdc.cpp (281 lines): - IPC-2: uos_sampling_write() — argument validation (4 decisions) - IPC-3: uos_sampling_read() — compound AND (validity + freshness) - IPC-7: uos_queuing_send() — validation + blocking + full - IPC-8: uos_queuing_recv() — validation + blocking + empty - IPC-10: uos_shmem_get() — compound AND in lookup - IPC-12: uos_ev_wait() — complex blocking logic - IPC-13: uos_secure_vault_demo() — 3-way AND test_memory_mcdc.cpp (183 lines): - MM-3: mm_map_page() — compound null check - MM-7: mm_add_region_to_domain() — compound null check - MM-8: mm_handle_data_abort() — 4-way if-else-if - MM-9: mm_print_statistics() — ternary operators - Integer overflow/underflow boundary tests test_partitions_mcdc.cpp (325 lines): - PART-5: partition_configure() — compound AND-NOT - PART-6: partition_start() — 4-way compound AND-NOT - PART-14: partition_validate_safety() — 3 independent checks - PART-15: partition_is_active() — compound AND - PART-13: partition_find_by_name() — string match loop - PART-1: partition_state_to_string() — all 13 switch cases test_unreachable_justification.cpp (221 lines): - 9 formally justified unreachable paths - Risk assessment: 6 LOW, 3 MEDIUM, 0 HIGH - All paths justified for DO-178C compliance Total: 1,285 lines of MC/DC test cases covering 58 decision points with 218 individual test cases across 4 critical modules. |
||
|---|---|---|
| .aurelio | ||
| .claude | ||
| .forgejo/workflows | ||
| .github/workflows | ||
| .hermes/plans | ||
| .mimocode | ||
| .zcode | ||
| cdk | ||
| docs | ||
| docs-extracted | ||
| guests | ||
| kernel | ||
| pikeos-mirror | ||
| pikeos-rebrand | ||
| rebrand-logs | ||
| share | ||
| src | ||
| third_party | ||
| tools | ||
| website | ||
| xsd/src | ||
| .gitignore | ||
| .gitmodules | ||
| .woodpecker.yml | ||
| AGENTS.md | ||
| AURELIO_INTEGRATION.md | ||
| AUTOSAR_CPP.md | ||
| BLOCK_DRIVER_IMPLEMENTATION.md | ||
| BUILD_ENVIRONMENT.md | ||
| CHANGELOG.md | ||
| COMPONENTS.md | ||
| eradicate_prefixes.sh | ||
| fix_naming.sh | ||
| HYPERVISOR.md | ||
| implementation_plan.md | ||
| IMPORT_GUIDE.md | ||
| IMPORT_SUMMARY.md | ||
| LICENSE | ||
| pikeos_5_parity_gap_analysis.md | ||
| pikeos_mirror_full_index.md | ||
| README.md | ||
| rebrand.sh | ||
| rebrand_docs.sh | ||
| RISCV_PIKEOS_PARITY_PLAN.md | ||
| UNIVERSALISOS_PIKEOS_ANALYSIS.md | ||
| universalisos_status_report.md | ||
| UNIVERSALISOS_VS_PIKEOS_5.0.md | ||
| uos_map.h | ||
| VERSION | ||
| XSD_WORKFLOW_ANALYSIS.md | ||
UniversalisOS — Safety-Critical Type-1 Hypervisor
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
- docs/API.md — Hypercall interface, toolchain CLI reference
- docs/CONTRIBUTING.md — Build prerequisites, code style, PR process
- COMPONENTS.md — Component architecture and safety matrix
- HYPERVISOR.md — Type-1 hypervisor design specifications
- CHANGELOG.md — Version history and release notes
- kernel/README.md — Kernel build and run guide
- UNIVERSALISOS_VS_PIKEOS_5.0.md — PikeOS 5.0 parity roadmap
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