EmuOS: A Gateway to Computing History EmuOS (part of the Emupedia project) is a non-profit, browser-based meta-resource designed to archive and preserve classic video games and software from the 1990s and earlier. It serves as an interactive museum of computing history, allowing users to experience vintage operating systems and software without the need for complex local installations. Core Purpose and Vision The primary goal of the Emupedia community is to digitally collect and preserve "abandonware," shareware, and open-source ports that are no longer in production. By hosting these on a user-friendly web interface, EmuOS ensures that early digital culture remains accessible to modern audiences for educational purposes. User Experience and Features Emulated Desktops : Upon visiting the site, users can choose between simulated versions of classic operating systems like Windows 95, 98, or ME . Instant Playability : The platform provides "ready-to-play" versions of iconic titles such as Doom , Quake 2 , and original Microsoft Solitaire directly in the browser. Functionality : Users can move, maximize, and close windows just like a real PC. Some games even support browser prompts for file system access or cloud-based saves, though performance depends on the user's hardware capabilities. Safety and Accessibility EmuOS v1.0 - Emupedia
Report on EMUOS v2: A Lightweight Embedded Operating System 1. Executive Summary EMUOS v2 is a lightweight, ROM-based embedded operating system designed for resource-constrained microcontroller units (MCUs) and system-on-chip (SoC) platforms. It is the second major iteration of the EMUOS kernel, focusing on improved real-time responsiveness, modular driver support, and minimal memory footprint. EMUOS v2 is typically deployed in industrial control, consumer electronics, and IoT edge devices where deterministic performance and low power consumption are critical. 2. Core Architecture EMUOS v2 follows a monolithic kernel architecture with modular loadable components. Key architectural traits include:
ROM-executable code : Critical kernel functions execute directly from read-only memory, reducing RAM usage. Static memory allocation : No dynamic heap allocation after boot; all tasks and queues are defined at compile time. Priority-based preemptive scheduler : Supports up to 32 priority levels with round-robin within same-priority tasks. Minimal context switch overhead : Switch time measured in microseconds (typically < 5 µs on Cortex-M4 at 100 MHz).
The kernel is written primarily in C99 with small inline assembly sections for context switching and interrupt handling. 3. Key Features in v2 Compared to the initial EMUOS v1, version 2 introduces several enhancements: | Feature | EMUOS v1 | EMUOS v2 | |---------|----------|----------| | Max tasks | 16 | 64 | | Interrupt nesting | Not supported | Fully nested with configurable priority | | IPC mechanisms | Message queues only | Message queues + event flags + mailboxes | | Tickless idle | No | Yes (reduces power in sleep modes) | | Hardware abstraction | Basic | Layered HAL for ARM, RISC-V, and Xtensa | | Static stack analysis | Manual | Built-in stack watermark checking | | Mutex with priority inheritance | No | Yes | | Runtime task creation | No | Limited (via preallocated control blocks) | 4. Memory Footprint A minimal EMUOS v2 configuration (scheduler + 4 tasks + 2 queues) requires approximately: emuos v2
Code (ROM) : 6–12 KB (depending on enabled features) Data (RAM) : 200–500 bytes (kernel globals) + per-task stack (user configurable) Interrupt vector table : External (provided by BSP)
This makes EMUOS v2 suitable for MCUs with as little as 4 KB RAM and 32 KB flash, such as the Cortex-M0 or small RISC-V cores. 5. Real-Time Performance Measured on a typical ARM Cortex-M4F @ 100 MHz: | Metric | Value | |--------|-------| | Max interrupt latency (worst-case) | 2.1 µs | | Context switch (task to task) | 1.8 µs | | Semaphore give/take (no wait) | 1.2 µs | | Message queue send/receive (4-byte msg) | 2.4 µs | | Tick period jitter | < 0.5 µs (with tickless mode disabled) | These numbers meet hard real-time requirements for most control loops (e.g., motor control, sensor fusion at 1–10 kHz). 6. Supported Hardware Platforms EMUOS v2 has been ported to:
ARM Cortex-M (M0, M3, M4, M7, M23, M33) RISC-V (RV32IMC cores like SiFive E2/E3 series) Cadence Tensilica Xtensa (ESP32-S3, LX7) AVR (ATmega series, limited configuration) EmuOS: A Gateway to Computing History EmuOS (part
Board support packages (BSPs) are available for STM32, NXP LPC, Raspberry Pi Pico (RP2040), and ESP32-S3. 7. Development Ecosystem
Toolchain : GCC (arm-none-eabi, riscv-none-embed, xtensa-esp32-elf) Build system : CMake + Python configuration scripts Debugging : GDB + OpenOCD; integrated memory usage reports Simulation : QEMU (Cortex-M3 and RISC-V virt board) support Host OS : Linux (primary), Windows via WSL or MSYS2
The kernel includes a emus_config.h header for compile-time feature selection (e.g., disable mutexes to save code space). 8. Comparison with Other Embedded RTOSes | OS | Min ROM | Min RAM | Preemptive | IPC | Priority Inheritance | Tickless | |----|---------|---------|------------|-----|----------------------|-----------| | EMUOS v2 | 6 KB | 0.5 KB | Yes | Yes | Yes | Yes | | FreeRTOS | 9 KB | 1 KB | Yes | Yes | Yes | Yes | | Zephyr (micro) | 20 KB | 10 KB | Yes | Yes | Yes | Yes | | Mbed OS | 30 KB | 15 KB | Yes | Yes | Limited | No | | bare metal | 0 KB | 0 KB | No | No | N/A | N/A | EMUOS v2 targets the lower end of the RTOS spectrum, competing with FreeRTOS in footprint but offering a more compact API and stricter static allocation model. 9. Limitations By hosting these on a user-friendly web interface,
No dynamic task creation after boot in standard config (optional build flag enables limited creation from pre-allocated TCB pool). No built-in TCP/IP stack – must integrate external lwIP or similar. No file system – relies on BSP or middleware. Single address space – no MMU support, not suitable for Linux-class applications. Community smaller than FreeRTOS or Zephyr; less third-party middleware.
10. Use Cases Typical applications for EMUOS v2 include: