The Prex project is an open source initiative to provide a portable real-time operating system for embedded systems.
This project originally started to make a royalty-free OS for mobile phones and PDA in order to spread open source movement to such proprietary OS field. And now, the project target has been shifted to the wider area of real-time and embedded systems.
Prex is designed specifically for small memory footprint platforms. It is written in C language based on traditional micro-kernel architecture. The Prex kernel provides only fundamental features for task, thread, memory, ipc, exception, and synchronization.
The other basic OS functions, process, file system, application loading, and networking, are provided by the user mode servers. In addition, Prex provides a POSIX emulation layer in order to reuse the existing applications.
Prex is an open source royalty-free OS for mobile phones and PDA.
This design allows system to perform both of the native real-time task and the generic *NIX process simultaneously without degrading the real-time performance. Furthermore, it helps the platform designer to construct OS by choosing suitable server tasks for their target requisition.
Prex is royalty-free software released under BSD License.
Here are some key features of "Prex":
· Task and thread control: preemptive priority scheduling with 256 priority levels
· Memory management: virtual address mapping, shared memory, memory protection, with MMU
· IPC: synchronous message passing among threads, object name space in kernel
· Exception: framework for POSIX signal emulation
· Synchronization: semaphores, condition variables, and mutexes with priority inheritance
· Timers: sleep timers, alarm timers
· Interrupt: nested interrupt service routines, and prioritized interrupt service threads
· Device I/O: minimum synchronous I/O interface
· Real-time: low interrupt latency, high resolution timers, periodic timers, and scheduling quantum control
· Cross platform portability: well defined architecture dependent layer and driver-kernel interface
· Modular design: OS servers and BSP module separated from kernel
· Small memory footprint: kernel size < 25k bytes
· Low power consumption: control of processor idle state, support of DVS (Dynamic Voltage Scaling)
· Disk-less: on-core kernel, no memory page swapping
· Instantly available: minimal OS boot time, system suspend/resume, kernel warm restart
· File systems: VFS framework, RAM/FAT/Flash file systems optimized for embedded systems
· Networking: TCP/IP stack, BSD socket interface
· POSIX emulation: signal, process, file I/O, real-time extensions, pthread, etc
· Debug: event logging, GDB remote debug
What's New in This Release: [ read full changelog ]
· This release adds a new security framework that enables pathname-based access control.
· It can assign the set of specific capabilities for any application depending on its role.