Innovative Approach to Electronics DesignInnovative Approach to Electronics Design
FX-RTOS is not a monolithic program. It defines a set of loosely coupled components for building your own OS. Configuration utility analyses components dependencies and builds an image (library) that exactly matches application needs without any extra overhead.
Multiple implementations of a single component interface are allowed. An appropriate implementation may be chosen during configuration to fit application system requirements. Some of the components may be used separately, without the OS itself.
Configuration process relays on special dependency injection technique. A component source code is not affected by configuring the OS.
Configuring is performed at compile time, so resulting machine code is almost optimal.
FX-RTOS was initially designed with multiprocessing in mind. Thus, the amount of global variables shared between processors is reduced to minimum, there are no global system-wide locks. Therefore, the system performance scales well with number of processors.
For multiprocessor case specially designed components are used, so it does not affect performance of uniprocessor systems.
Many embedded systems are event-driven and may be represented as a set of event handlers. A handler, if already running, never waits. Such systems may be implemented with threads, but threads are too heavyweight and have redundant functionality that isn’t used in this simple case.
FX-RTOS provides a special profile for such systems. Threads are removed and replaced with event service routines (ESR) similar in some aspects to program interrupts. Using ESR instead of threads reduces code size by 40%, increases performance and reduces RAM usage (in contrast with threads, ESR may share a single stack)
As several implementations of a single component interface are allowed, the kernel functionality may be extended or modified with components, developed by OS user or community.
FX-RTOS supports several techniques facilitating interrupt handling:
By configuring the OS, the system designer may decide to include an appropriate combination of these facilities into the target system depending on preferred application design principles and requirements. Interrupt handlers (ISR) run on special interrupt stack (this reduces stack size should be reserved for threads).