mirror of
https://git.rtems.org/rtems-docs/
synced 2025-07-23 02:23:16 +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
|
||||
architecture compiler for each support RTEMS architecture.
|
||||
|
||||
APA
|
||||
Arbitrary Processor Affinity
|
||||
|
||||
API
|
||||
Application Programming Interface
|
||||
|
||||
Binutils
|
||||
GNU Binary Utilities such as the assembler ``as``, linker ``ld`` and a
|
||||
range of other tools used in the development of software.
|
||||
@ -23,6 +29,12 @@ Glossary
|
||||
Buildbot
|
||||
A continuous inteagration build server.
|
||||
|
||||
C11
|
||||
ISO/IEC 9899:2011
|
||||
|
||||
C++11
|
||||
ISO/IEC 14882:2011
|
||||
|
||||
Crosscompiler
|
||||
|
||||
A compiler built to run on a Host that generate code for another
|
||||
@ -31,12 +43,33 @@ Glossary
|
||||
DLL
|
||||
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
|
||||
GNU Compiler Tool chain. It is the GNU C/C++ compiler, binutils and GDB.
|
||||
GNU Compiler Collection
|
||||
|
||||
GDB
|
||||
GNU Debugger
|
||||
|
||||
GNU
|
||||
GNU's Not Unix
|
||||
|
||||
Host
|
||||
The computer and operating system that hosts the RTEMS development tools
|
||||
such as the compiler, linker and debugger.
|
||||
@ -49,6 +82,9 @@ Glossary
|
||||
MinGW64
|
||||
Minimal GNU system for 64bit Windows. MinGW64 is not the MinGW project.
|
||||
|
||||
MrsP
|
||||
Multiprocessor Resource-Sharing Protocol
|
||||
|
||||
MSYS2
|
||||
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
|
||||
@ -57,6 +93,15 @@ Glossary
|
||||
has a simplified path structure to make it easier to building native Windows
|
||||
programs.
|
||||
|
||||
NFSv2
|
||||
Network File System version 2
|
||||
|
||||
OMIP
|
||||
:math:`O(m)` Independence-Preserving Protocol
|
||||
|
||||
OpenMP
|
||||
Open Multi-Processing
|
||||
|
||||
POSIX
|
||||
Portable Operating System Interface is a standard that lets software be
|
||||
portable between compliant operating systems.
|
||||
@ -65,6 +110,9 @@ Glossary
|
||||
A path used when building a package so all parts of the package reside
|
||||
under that path.
|
||||
|
||||
RFS
|
||||
RTEMS File System
|
||||
|
||||
RSB
|
||||
RTEMS Source Builder is part of the RTEMS Tools Project. It builds packages
|
||||
such as the tools for the RTEMS operating system.
|
||||
@ -75,6 +123,9 @@ Glossary
|
||||
variety of open standard application programming interfaces (API) and
|
||||
interface standards such as POSIX and BSD sockets.
|
||||
|
||||
SMP
|
||||
Symmetric Multiprocessing
|
||||
|
||||
Target
|
||||
A target is the hardware or simulator a BSP built executable runs on.
|
||||
|
||||
@ -84,5 +135,11 @@ Glossary
|
||||
Testsuite
|
||||
RTEMS test suite located in the ``testsuites/`` directory.
|
||||
|
||||
TLS
|
||||
Thread-Local Storage
|
||||
|
||||
Waf
|
||||
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
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
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,
|
||||
configure, build and create applications for the RTEMS operating system.
|
||||
- presents the basic features of RTEMS, so that you can decide if it is worth to
|
||||
look at,
|
||||
|
||||
RTEMS, Real-Time Executive for Multiprocessor Systems, is a real-time executive
|
||||
(kernel) which provides a high performance environment for embedded
|
||||
applications with the following features:
|
||||
- gives you a :ref:`quick start <QuickStart>` to install all the tools
|
||||
necessary to work with RTEMS, and
|
||||
|
||||
.. 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
|
||||
design and development of RTEMS is located there.
|
||||
Features
|
||||
--------
|
||||
|
||||
- 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 are a special class of computer applications.
|
||||
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.
|
||||
|
||||
Real-time Executive
|
||||
===================
|
||||
-------------------
|
||||
|
||||
Fortunately, real-time operating systems, or real-time executives, serve as a
|
||||
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
|
||||
standard software components, the time and cost required to develop
|
||||
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
|
||||
|
||||
.. _QuickStart:
|
||||
|
||||
Quick Start
|
||||
***********
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user