Releases: Rompass/openc6-bios
Releases · Rompass/openc6-bios
Release list
OpenC6 BIOS v2.0-ME: Hardware PMP Isolation, LP-Core Supervisor & Preemptive Multitasking
OpenC6 BIOS v2.0-ME is a major architectural milestone, transforming the firmware from an ABI prototype into a true bare-metal microkernel and execution platform for the ESP32-C6 (RV32IMAC).
Key Architectural Systems
1. Hardware PMP Isolation & U-Mode Sandbox
- Untrusted user payloads execute strictly in unprivileged RISC-V User Mode (
U-Mode). - Hardware Top-of-Range (TOR) Physical Memory Protection registers isolate the execution arena, completely shielding kernel SRAM, MMIO peripherals, and critical system structures.
- Dedicated vectored interrupt trampoline resolves upstream FreeRTOS context-switch privilege leakage bugs on RISC-V.
- Dynamic arena allocation managing internal SRAM headroom.
2. Autonomous Out-of-Band Management Engine (LP-Core ME)
- Autonomous supervisor firmware deployed directly to the Low-Power (ULP) RISC-V coprocessor.
- Autonomous hardware SchedUtil frequency governor scaling HP core clock dividers (80 / 120 / 160 MHz) via direct PCR register manipulation.
- Hardware watchdog enforcement (15-second hardware lockup reset) and real-time on-die junction thermal tracking (thermal throttling at 55 deg C, emergency soft-off at 75 deg C).
- Hardware-debounced power button state machine with emergency 3-second hard reset.
3. Preemptive Multitasking & ZSWAP Memory Compression
- Integrated process manager (
proc_manager) supporting up to 8 concurrent processes. - Custom Next-Fit contiguous 4 KB page allocator with bitmap tracking.
- Comprehensive shell job control: background execution (
boot <path> bg), foreground switching (fg,bg), process suspension (suspend/Ctrl+X), and clean socket-aware termination (kill). - ZSWAP Engine: Suspended processes are compressed into RAM via the custom ZC6 v4 algorithm (~1.2 KB match-finder footprint), releasing physical 4 KB pages back to the arena.
- Transparent on-the-fly execution and decompression of
.zc6archives.
4. File System & Tooling Enhancements
- Log-structured circular Flash VFS (
openc6_fs) with dynamic wear-leveling and RAM node indexing. - Companion C++ host loader (
openc6_loader) for streaming compiled flat binaries over native USB Type-C directly into VFS. - Standalone C99 TUI auto-installer (
make setup) featuring zero external dependencies, automated dependency resolution, and guided flashing for Arch Linux and Debian/Ubuntu systems.
Artifacts and Binaries
- Precompiled payloads and reference implementations are available in
tools/example/. - Complete development specifications and ABI system call tables are detailed in
docs/payload_development.md.
OpenC6 BIOS v1.0.1: Micro UNIX Shell & ABI Core Release
OpenC6 BIOS v1.0.1
Second working build for ESP32-C6. Implements a stable bare-metal ABI jump table to decouple payload binaries from heavy ESP-IDF APIs.
What works:
Boot selection matrix via physical GPIO 9 button.
Micro UNIX shell over UART1 for raw openc6_fs manipulation (ls, cd, mkdir, cat, rm, write, boot).
ABI exports: hardware SHA256 engine, fixed-point math lookup tables, Wi-Fi routines etc.
Payload execution targets: internal volatile RAM or Flash XIP hardware mapping.