RTEMS 6.1-rc6
Loading...
Searching...
No Matches
RTEMS

The Real-Time Executive for Multiprocessor Systems (RTEMS) is a multi-threaded, single address-space, real-time operating system with no kernel-space/user-space separation. It is capable to operate in an SMP configuration providing a state of the art feature set.

RTEMS and all third-party software distributed with RTEMS which may be linked to the application is licensed under permissive open source licenses. This means that the licenses do not propagate to the application software. Most of the original RTEMS code is now under the BSD 2-Clause license. Some code of RTEMS is under a legacy license, the [modified GPL 2.0 or later license with an exception for static linking](https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/LICENSE.md). It exposes no license requirements on application code. Everything necessary to build RTEMS applications is available as open source software. This makes you completely vendor independent.

RTEMS provides the following basic feature set:

  • API
    • POSIX with pthreads (enables a broad range of standard software to run on RTEMS)
    • Classic
    • C11 (including thread support)
    • C++11 (including thread support)
    • Newlib and GCC internal
  • Programming languages
    • C/C++/OpenMP (RTEMS Source Builder, RSB)
    • Ada (RSB, --with-ada)
    • Erlang
    • Fortran (RSB, --with-fortran)
    • Python and MicroPython
  • Parallel languages
  • Thread synchronization and communication
    • Mutexes with and without locking protocols
    • Counting semaphores
    • Binary semaphores
    • Condition variables
    • Events
    • Message queues
    • Barriers
    • Futex (used by OpenMP barriers)
    • Epoch Based Reclamation (libbsd)
  • Locking protocols
    • Transitive Priority Inheritance
    • OMIP (SMP feature)
    • Priority Ceiling
    • MrsP (SMP feature)
  • Scalable timer and timeout support
  • Lock-free timestamps (FreeBSD timecounters)
  • Responsive interrupt management
  • Thread-Local Storage (TLS) as specified by C11/C++11 and later standard revisions
  • Link-time configurable schedulers
    • Fixed-priority
    • Job-level fixed-priority (EDF)
    • Constant Bandwidth Server (experimental)
  • Clustered scheduling (SMP feature)
    • Flexible link-time configuration
    • Job-level fixed-priority scheduler (EDF) with support for one-to-one and one-to-all thread to processor affinities (default SMP scheduler)
    • Fixed-priority scheduler
    • Proof-of-concept strong APA scheduler
  • Focus on link-time application-specific configuration
  • Linker-set based initialization (similar to global C++ constructors)
  • Operating system uses fine-grained locking (SMP feature)
  • Dynamic memory allocators
    • First-fit (default)
    • Universal Memory Allocator (UMA, libbsd)
  • File systems
    • IMFS
    • FAT
    • RFS
    • NFSv2
    • JFFS2 (NOR flashes)
    • YAFFS2 (NAND flashes, GPL or commercial license required)
  • Device drivers
    • Termios (serial interfaces)
    • I2C (Linux user-space API compatible)
    • SPI (Linux user-space API compatible)
    • Network stacks (legacy, libbsd, lwIP)
    • USB stack (libbsd)
    • SD/MMC card stack (libbsd)
    • Framebuffer (Linux user-space API compatible, Qt)
    • Application runs in kernel-space and can access hardware directly
  • libbsd
    • Port of FreeBSD user-space and kernel-space components to RTEMS
    • Easy access to FreeBSD software for RTEMS
    • Support to stay in synchronization with FreeBSD