mirror of
https://git.rtems.org/rtems-docs/
synced 2025-07-24 00:49:42 +08:00
user: Rework overview
Move "Overview", "Real-time Applicaiton Systems" and "Real-time Executive" chapters as sections into new "Introduction" chapter. Add "Feature" section.
This commit is contained in:
parent
65f54a95f1
commit
52f4890281
@ -11,6 +11,12 @@ Glossary
|
|||||||
architectures follow the GCC architecture model as RTEMS needs an GCC
|
architectures follow the GCC architecture model as RTEMS needs an GCC
|
||||||
architecture compiler for each support RTEMS architecture.
|
architecture compiler for each support RTEMS architecture.
|
||||||
|
|
||||||
|
APA
|
||||||
|
Arbitrary Processor Affinity
|
||||||
|
|
||||||
|
API
|
||||||
|
Application Programming Interface
|
||||||
|
|
||||||
Binutils
|
Binutils
|
||||||
GNU Binary Utilities such as the assembler ``as``, linker ``ld`` and a
|
GNU Binary Utilities such as the assembler ``as``, linker ``ld`` and a
|
||||||
range of other tools used in the development of software.
|
range of other tools used in the development of software.
|
||||||
@ -23,6 +29,12 @@ Glossary
|
|||||||
Buildbot
|
Buildbot
|
||||||
A continuous inteagration build server.
|
A continuous inteagration build server.
|
||||||
|
|
||||||
|
C11
|
||||||
|
ISO/IEC 9899:2011
|
||||||
|
|
||||||
|
C++11
|
||||||
|
ISO/IEC 14882:2011
|
||||||
|
|
||||||
Crosscompiler
|
Crosscompiler
|
||||||
|
|
||||||
A compiler built to run on a Host that generate code for another
|
A compiler built to run on a Host that generate code for another
|
||||||
@ -31,12 +43,33 @@ Glossary
|
|||||||
DLL
|
DLL
|
||||||
Dynamically Linker Library used on Windows.
|
Dynamically Linker Library used on Windows.
|
||||||
|
|
||||||
|
EDF
|
||||||
|
Earliest Deadline First
|
||||||
|
|
||||||
|
EMB²
|
||||||
|
`Embedded Multicore Building Blocks <https://embb.io>`_
|
||||||
|
|
||||||
|
FAT
|
||||||
|
File Allocation Table
|
||||||
|
|
||||||
|
Futex
|
||||||
|
Fast User-Space Locking
|
||||||
|
|
||||||
|
IMFS
|
||||||
|
In-Memory File System
|
||||||
|
|
||||||
|
JFFS2
|
||||||
|
Journalling Flash File System version 2
|
||||||
|
|
||||||
GCC
|
GCC
|
||||||
GNU Compiler Tool chain. It is the GNU C/C++ compiler, binutils and GDB.
|
GNU Compiler Collection
|
||||||
|
|
||||||
GDB
|
GDB
|
||||||
GNU Debugger
|
GNU Debugger
|
||||||
|
|
||||||
|
GNU
|
||||||
|
GNU's Not Unix
|
||||||
|
|
||||||
Host
|
Host
|
||||||
The computer and operating system that hosts the RTEMS development tools
|
The computer and operating system that hosts the RTEMS development tools
|
||||||
such as the compiler, linker and debugger.
|
such as the compiler, linker and debugger.
|
||||||
@ -49,6 +82,9 @@ Glossary
|
|||||||
MinGW64
|
MinGW64
|
||||||
Minimal GNU system for 64bit Windows. MinGW64 is not the MinGW project.
|
Minimal GNU system for 64bit Windows. MinGW64 is not the MinGW project.
|
||||||
|
|
||||||
|
MrsP
|
||||||
|
Multiprocessor Resource-Sharing Protocol
|
||||||
|
|
||||||
MSYS2
|
MSYS2
|
||||||
Minimal System 2 is a fork of the MinGW project's MSYS tool and the MinGW
|
Minimal System 2 is a fork of the MinGW project's MSYS tool and the MinGW
|
||||||
MSYS tool is a fork of Cygwin project. The Cygwin project provides a POSIX
|
MSYS tool is a fork of Cygwin project. The Cygwin project provides a POSIX
|
||||||
@ -57,6 +93,15 @@ Glossary
|
|||||||
has a simplified path structure to make it easier to building native Windows
|
has a simplified path structure to make it easier to building native Windows
|
||||||
programs.
|
programs.
|
||||||
|
|
||||||
|
NFSv2
|
||||||
|
Network File System version 2
|
||||||
|
|
||||||
|
OMIP
|
||||||
|
:math:`O(m)` Independence-Preserving Protocol
|
||||||
|
|
||||||
|
OpenMP
|
||||||
|
Open Multi-Processing
|
||||||
|
|
||||||
POSIX
|
POSIX
|
||||||
Portable Operating System Interface is a standard that lets software be
|
Portable Operating System Interface is a standard that lets software be
|
||||||
portable between compliant operating systems.
|
portable between compliant operating systems.
|
||||||
@ -65,6 +110,9 @@ Glossary
|
|||||||
A path used when building a package so all parts of the package reside
|
A path used when building a package so all parts of the package reside
|
||||||
under that path.
|
under that path.
|
||||||
|
|
||||||
|
RFS
|
||||||
|
RTEMS File System
|
||||||
|
|
||||||
RSB
|
RSB
|
||||||
RTEMS Source Builder is part of the RTEMS Tools Project. It builds packages
|
RTEMS Source Builder is part of the RTEMS Tools Project. It builds packages
|
||||||
such as the tools for the RTEMS operating system.
|
such as the tools for the RTEMS operating system.
|
||||||
@ -75,6 +123,9 @@ Glossary
|
|||||||
variety of open standard application programming interfaces (API) and
|
variety of open standard application programming interfaces (API) and
|
||||||
interface standards such as POSIX and BSD sockets.
|
interface standards such as POSIX and BSD sockets.
|
||||||
|
|
||||||
|
SMP
|
||||||
|
Symmetric Multiprocessing
|
||||||
|
|
||||||
Target
|
Target
|
||||||
A target is the hardware or simulator a BSP built executable runs on.
|
A target is the hardware or simulator a BSP built executable runs on.
|
||||||
|
|
||||||
@ -84,5 +135,11 @@ Glossary
|
|||||||
Testsuite
|
Testsuite
|
||||||
RTEMS test suite located in the ``testsuites/`` directory.
|
RTEMS test suite located in the ``testsuites/`` directory.
|
||||||
|
|
||||||
|
TLS
|
||||||
|
Thread-Local Storage
|
||||||
|
|
||||||
Waf
|
Waf
|
||||||
Waf build system. For more information see http://www.waf.io/
|
Waf build system. For more information see http://www.waf.io/
|
||||||
|
|
||||||
|
YAFFS2
|
||||||
|
`Yet Another Flash File System version 2 <https://git.rtems.org/sebh/rtems-yaffs2.git>`_
|
||||||
|
@ -1,60 +1,189 @@
|
|||||||
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
|
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
Overview
|
Overview
|
||||||
========
|
--------
|
||||||
|
|
||||||
Welcome to the :ref:term:`RTEMS` User Manual.
|
You are someone looking for a real-time operating system. This document
|
||||||
|
|
||||||
This document covers the topics a user of RTEMS needs to be able to install,
|
- presents the basic features of RTEMS, so that you can decide if it is worth to
|
||||||
configure, build and create applications for the RTEMS operating system.
|
look at,
|
||||||
|
|
||||||
RTEMS, Real-Time Executive for Multiprocessor Systems, is a real-time executive
|
- gives you a :ref:`quick start <QuickStart>` to install all the tools
|
||||||
(kernel) which provides a high performance environment for embedded
|
necessary to work with RTEMS, and
|
||||||
applications with the following features:
|
|
||||||
|
|
||||||
.. sidebar:: Developers
|
- helps you to build an example application on top of RTEMS.
|
||||||
|
|
||||||
Developers should look at the :r:url:`devel` for technical information. The
|
Features
|
||||||
design and development of RTEMS is located there.
|
--------
|
||||||
|
|
||||||
- standards based user interfaces
|
The Real-Time Executive for Multiprocessor Systems (:ref:term:`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
|
||||||
|
:ref:term:`SMP` configuration providing a state of the art feature set.
|
||||||
|
|
||||||
- multitasking capabilities
|
RTEMS is licensed under a
|
||||||
|
`modified GPL 2.0 or later license with an exception for static linking <https://git.rtems.org/rtems/tree/LICENSE>`_
|
||||||
|
[#]_. It exposes no license requirements on application code. The third-party
|
||||||
|
software used and distributed by RTEMS which may be linked to the application
|
||||||
|
is licensed under permissive open source licenses. Everything necessary to
|
||||||
|
build RTEMS applications is available as open source software. This makes you
|
||||||
|
completely vendor independent.
|
||||||
|
|
||||||
- homogeneous and heterogeneous multiprocessor systems
|
RTEMS provides the following basic feature set:
|
||||||
|
|
||||||
- event-driven, priority-based, preemptive scheduling
|
- :ref:term:`APIs <API>`
|
||||||
|
|
||||||
- optional rate monotonic scheduling
|
- :ref:term:`POSIX` with
|
||||||
|
`pthreads <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html>`_
|
||||||
|
(enables a broad range of standard software to run on RTEMS)
|
||||||
|
|
||||||
- intertask communication and synchronization
|
- `Classic <https://docs.rtems.org/branches/master/c-user.pdf>`_
|
||||||
|
|
||||||
- priority inheritance
|
- :ref:term:`C11` (including
|
||||||
|
`thread <https://en.cppreference.com/w/c/thread>`_ support)
|
||||||
|
|
||||||
- responsive interrupt management
|
- :ref:term:`C++11` (including
|
||||||
|
`thread <https://en.cppreference.com/w/cpp/thread>`_ support)
|
||||||
|
|
||||||
- dynamic memory allocation
|
- Newlib and :ref:term:`GCC` internal
|
||||||
|
|
||||||
- high level of user configurability
|
- Programming languages
|
||||||
|
|
||||||
- open source with a friendly user license
|
- C/C++/OpenMP (RTEMS Source Builder, RSB)
|
||||||
|
|
||||||
RTEMS provides features found in modern operating systems:
|
- Ada (RSB, ``--with-ada``)
|
||||||
|
|
||||||
- file systems
|
- Erlang
|
||||||
|
|
||||||
- networking
|
- Fortran (RSB, ``--with-fortran``)
|
||||||
|
|
||||||
- USB
|
- Python and MicroPython
|
||||||
|
|
||||||
- permanent media such as flash disks, cards and USB devices
|
- Parallel languages
|
||||||
|
|
||||||
- support for various languages
|
- :ref:term:`EMB²`
|
||||||
|
|
||||||
- parallel programming language support
|
- Google Go [#]_
|
||||||
|
|
||||||
|
- :ref:term:`OpenMP` 4.5
|
||||||
|
|
||||||
|
- Thread synchronization and communication
|
||||||
|
|
||||||
|
- Mutexes with and without locking protocols
|
||||||
|
|
||||||
|
- Counting semaphores
|
||||||
|
|
||||||
|
- Binary semaphores
|
||||||
|
|
||||||
|
- Condition variables
|
||||||
|
|
||||||
|
- Events
|
||||||
|
|
||||||
|
- Message queues
|
||||||
|
|
||||||
|
- Barriers
|
||||||
|
|
||||||
|
- :ref:term:`Futex` (used by :ref:term:`OpenMP` barriers)
|
||||||
|
|
||||||
|
- Epoch Based Reclamation (libbsd)
|
||||||
|
|
||||||
|
- Locking protocols
|
||||||
|
|
||||||
|
- Transitive Priority Inheritance
|
||||||
|
|
||||||
|
- :ref:term:`OMIP` (SMP feature)
|
||||||
|
|
||||||
|
- Priority Ceiling
|
||||||
|
|
||||||
|
- :ref:term:`MrsP` (SMP feature)
|
||||||
|
|
||||||
|
- Scalable timer and timeout support
|
||||||
|
|
||||||
|
- Lock-free timestamps (FreeBSD timecounters)
|
||||||
|
|
||||||
|
- Responsive interrupt management
|
||||||
|
|
||||||
|
- C11/C++11 :ref:term:`TLS` [#]_
|
||||||
|
|
||||||
|
- Link-time configurable schedulers
|
||||||
|
|
||||||
|
- Fixed-priority
|
||||||
|
|
||||||
|
- Job-level fixed-priority (:ref:term:`EDF`)
|
||||||
|
|
||||||
|
- Constant Bandwidth Server (experimental)
|
||||||
|
|
||||||
|
- Clustered scheduling (SMP feature)
|
||||||
|
|
||||||
|
- Flexible link-time configuration
|
||||||
|
|
||||||
|
- Job-level fixed-priority scheduler (:ref:term:`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 :ref:term:`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 <https://www.freebsd.org/cgi/man.cgi?query=uma&sektion=9>`_ ,
|
||||||
|
libbsd)
|
||||||
|
|
||||||
|
- File systems
|
||||||
|
|
||||||
|
- :ref:term:`IMFS`
|
||||||
|
|
||||||
|
- :ref:term:`FAT`
|
||||||
|
|
||||||
|
- :ref:term:`RFS`
|
||||||
|
|
||||||
|
- :ref:term:`NFSv2`
|
||||||
|
|
||||||
|
- :ref:term:`JFFS2` (NOR flashes)
|
||||||
|
|
||||||
|
- :ref:term:`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
|
||||||
|
|
||||||
Real-time Application Systems
|
Real-time Application Systems
|
||||||
=============================
|
-----------------------------
|
||||||
|
|
||||||
Real-time application systems are a special class of computer applications.
|
Real-time application systems are a special class of computer applications.
|
||||||
They have a complex set of characteristics that distinguish them from other
|
They have a complex set of characteristics that distinguish them from other
|
||||||
@ -89,7 +218,7 @@ competing processors are introduced. The ramifications of multiple processors
|
|||||||
complicate each and every characteristic of a real-time system.
|
complicate each and every characteristic of a real-time system.
|
||||||
|
|
||||||
Real-time Executive
|
Real-time Executive
|
||||||
===================
|
-------------------
|
||||||
|
|
||||||
Fortunately, real-time operating systems, or real-time executives, serve as a
|
Fortunately, real-time operating systems, or real-time executives, serve as a
|
||||||
cornerstone on which to build the application system. A real-time multitasking
|
cornerstone on which to build the application system. A real-time multitasking
|
||||||
@ -127,3 +256,17 @@ routines to manage memory, pass messages, or provide mutual exclusion. The
|
|||||||
developer is then able to concentrate solely on the application. By using
|
developer is then able to concentrate solely on the application. By using
|
||||||
standard software components, the time and cost required to develop
|
standard software components, the time and cost required to develop
|
||||||
sophisticated real-time applications are significantly reduced.
|
sophisticated real-time applications are significantly reduced.
|
||||||
|
|
||||||
|
.. [#] The goal is to use the
|
||||||
|
`BSD 2-Clause license
|
||||||
|
<https://git.rtems.org/rtems/tree/LICENSE.BSD-2-Clause>`_ for new code
|
||||||
|
or code those copyright holder agreed to a license change, see `#3053
|
||||||
|
<https://devel.rtems.org/ticket/3053>`_ for the details.
|
||||||
|
|
||||||
|
.. [#] See `#2832 <https://devel.rtems.org/ticket/2832>`_.
|
||||||
|
|
||||||
|
.. [#] Thread-local storage requires some support by the tool chain and the
|
||||||
|
RTEMS architecture support, e.g. context-switch code. It is supported
|
||||||
|
at least on ARM, PowerPC, RISC-V, SPARC and m68k. Check the
|
||||||
|
`RTEMS CPU Architecture Supplement <https://docs.rtems.org/branches/master/cpu-supplement.pdf>`_
|
||||||
|
if it is supported.
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
.. index:: Quick Start
|
.. index:: Quick Start
|
||||||
|
|
||||||
|
.. _QuickStart:
|
||||||
|
|
||||||
Quick Start
|
Quick Start
|
||||||
***********
|
***********
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user