Development

(Last updated: 2009-10-01)

Table of Contents

Roadmap

The prex development phase is divided into the following 3 stages:

1) Version 0.1 - 0.4

Focus: Kernel Quality
  • Port kernel to some different h/w platforms
  • Freeze primal kernel API
  • Increase kernel stability
  • Build driver framework

2) Version 0.5 - 1.0

Focus: Application Availability
  • Develop standard system servers (boot, proc, fs, and exec)
  • Build POSIX application framework
  • Port shell or some valuable UNIX applications
  • Improve OS security

3) Version 1.1 - 2.0

Focus: Network Connectivity
  • Develop networking server (net)
  • Port various protocol stacks
  • Support more h/w platforms

Current Ports

Prex currently supports the following platforms.

Table 1. Support Platforms
Name Arch Platform Emulator Toolchain
x86-pc IA32 PC Bochs, QEMU, VMware, Virtual PC GCC, PCC, SunCC
x86-pc IA32 PC (MMU-less) Bochs, QEMU, VMware, Virtual PC GCC, PCC, SunCC
arm-gba ARM7TDMI Game Boy Advance VisualBoyAdvance GCC, DevKitAdvance
arm-integrator ARM9 Integrator/CP QEMU GCC, YAGARTO
ppc-prep PowerPC PReP (MMU-less) QEMU GCC

Project Status

Work Completed

  • Task/thread control
  • Round Robin & FIFO scheduler
  • Kernel thread
  • Idle thread
  • Physical page allocator
  • Kernel memory allocator
  • Virtual memory allocator
  • Memory protection (MMU)
  • Shared memory
  • MMU-less system support
  • Object name space
  • IPC messaging mechanism
  • Nested interrupt service routine
  • Prioritized interrupt service thread
  • Dedicated interrupt stack
  • Mutex with priority inheritance
  • Deadlock detection for mutex
  • Condition variables
  • Counting semaphores
  • Alarm timer
  • Sleep timer
  • Periodic timer
  • Device I/O interface
  • Event logging interface
  • Fault trapping
  • System call library
  • Dynamic voltage scaling
  • CPU voltage monitor
  • Power policy
  • System suspend timer
  • LCD off timer
  • ELF relocation by task loader
  • Recursive mutex locking
  • Getting system information
  • Kernel monitoring utility
  • DPC (Deferred Procedure Call)
  • dmesg - diagnostic message
  • 'configure' script for build
  • File system server
  • Embedded VFS
  • devfs - device file system
  • ramfs - RAM file system
  • arfs - archive file system
  • fatfs - FAT file system
  • fifofs - FIFO file system
  • UNIX pipe
  • Boot server
  • Process server
  • Exec server
  • Init process
  • Power server
  • multi-threaded file system
  • Signal emulation
  • POSIX system call emulation
  • CmdBox - embedded UNIX utils
  • TTY
  • libc embedded
  • ANSI-C comliant source code
  • Capability based security
  • Resource limit
  • Tiny shell
  • Pathname-based access control
  • fstab - file system table
  • Shell script loader

Work In Progress

  • Kernel debugger
  • System call trace
  • Disk management utility
  • New driver framework

Plan for the Future

  • Shared interrupt
  • Execution in ROM (XIP)
  • Tick-less kernel
  • High resolution timer
  • Device object filtering
  • FPU support
  • pthread library (subset)
  • Directory name cache in fs
  • OS image de-compression by boot loader
  • Raw I/O permission in user space
  • romfs - ROM file system
  • isofs - CD file system
  • ffs - flash file system
  • Embedded TCP/IP
  • Network server
  • USB support