- real-time operating system for embedded systems based on proprietary, reentrant, preemptive, layered kernel
- support for IA32, ARM and eSi-RISC architectures
- great modularity and scalability (MMU and non-MMU architectures, configurable cores)
- processes, threads, IPC
- virtual memory, resource protection
- virtual file system
- modern object formats (ELF)
- POSIX API, UN*X tools (shells, editors etc.)
- TCP/IP and USB support
- Smart Grid stacks – PRIME PHY/MAC, DLMS/COSEM
- reliability enhancements (error propagation barriers, SWIFI evaluators)
- proprietary operating system loader
Decomposition is crucial in advanced software projects. It allows maintaining the complexity on desired level and enables the cooperation between a team of developers. The preferred decomposition in any operating system is a layered architecture without “spaghetti” dependencies between modules.
Many existing operating systems are decomposed unintuitively. They consist of several different modules corresponding to particular operating system functionalities. Such decomposition highly increases an operating system architectural diagram complexity and makes an operating system hard to extend and difficult to use in application development.
Phoenix-RTOS consist of four main parts: kernel, kernel API libraries, libraries and set of applications. After a long evaluation process it has been decided to develop the kernel according to the monolithic kernel paradigm.
Reentrancy is an important feature of real-time and multithreaded applications. It allows executing the same routine simultaneously from different contexts. Ability to execute the same code concurrently from different contexts imposes less restriction on multitasking applications and improves response time.
The one of the important requirement for the reentrancy is fine-grained locking. Locking is required when two or more code execution streams attempt use shared data structures. Such structures may be shared using one common lock or dedicated locks for each of them.
The Phoenix-RTOS kernel is fully reentrant and keeps the non-interruptible critical sections at minimum. This greatly reduces interrupt response latency and increases accuracy of time constrained events processing.
In many cases an execution of the operating system kernel code demands an active locking and interrupt masking. During the execution of the critical section, a kernel is not able to receive, handle external events and distribute them to applications. An example of a critical section is a part of code executed inside the interrupt service routine performing memory allocation for driver or for network stack purposes.
The computational complexity of algorithms used inside locks may vary. To satisfy the real-time requirements, at preferred complexity for such algorithms is O(1). It means that the number of algorithm steps is limited and does not depend on the size of processed data structures.
The duration of critical sections inside the Phoenix-RTOS kernel varies from 80 to 3000 cycles (this value depends on the processor architecture and optimization of executable code).
Smart Grid Support
Due to modularity, portability, small footprint and advanced architecture Phoenix-RTOS ideally fits to Smart Grid solutions.
The combination of Phoenix-RTOS, Smart Grid software stacks and low-power processors will give customers a distinct commercial advantage in the upcoming Smart Grid market by allowing them to prepare fully integrated embedded smart grid solutions. We believe that Phoenix-RTOS will help to introduce the new generation of Smart Meters.
A very important feature of Phoenix-RTOS is POSIX compatibility. It enables an easy way to compile and run popular UN*X applications and libraries as well as significantly simplify the software development process. Moreover, POSIX programming abstractions are supported.
Phoenix-RTOS is equipped with a set of popular UN*X programmes like shells, editors, text and file processing utilities, network daemons etc.