[PATCH 6/6] user: Rework overview

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Jan 7 11:03:46 UTC 2019


Move "Overview", "Real-time Applicaiton Systems" and "Real-time
Executive" chapters as sections into new "Introduction" chapter.  Add
"Feature" section.
---
 user/glossary/index.rst |  59 +++++++++++++-
 user/overview/index.rst | 203 +++++++++++++++++++++++++++++++++++++++++-------
 user/start/index.rst    |   2 +
 3 files changed, 233 insertions(+), 31 deletions(-)

diff --git a/user/glossary/index.rst b/user/glossary/index.rst
index ddb1c34..a11da7b 100644
--- a/user/glossary/index.rst
+++ b/user/glossary/index.rst
@@ -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>`_
diff --git a/user/overview/index.rst b/user/overview/index.rst
index 76bac36..84a6033 100644
--- a/user/overview/index.rst
+++ b/user/overview/index.rst
@@ -1,60 +1,189 @@
 .. comment SPDX-License-Identifier: CC-BY-SA-4.0
 
+Introduction
+============
+
 Overview
-========
+--------
+
+You are someone looking for a real-time operating system.  This document
+
+- presents the basic features of RTEMS, so that you can decide if it is worth to
+  look at,
+
+- gives you a :ref:`quick start <QuickStart>` to install all the tools
+  necessary to work with RTEMS, and
+
+- helps you to build an example application on top of RTEMS.
+
+Features
+--------
+
+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.
+
+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.
+
+RTEMS provides the following basic feature set:
+
+- :ref:term:`APIs <API>`
+
+    - :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)
+
+    - `Classic <https://docs.rtems.org/branches/master/c-user.pdf>`_
+
+    - :ref:term:`C11` (including
+      `thread <https://en.cppreference.com/w/c/thread>`_ support)
+
+    - :ref:term:`C++11` (including
+      `thread <https://en.cppreference.com/w/cpp/thread>`_ support)
+
+    - Newlib and :ref:term:`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
+
+    - :ref:term:`EMB²`
+
+    - Google Go [#]_
+
+    - :ref:term:`OpenMP` 4.5
+
+- Thread synchronization and communication
+
+    - Mutexes with and without locking protocols
+
+    - Counting semaphores
+
+    - Binary semaphores
+
+    - Condition variables
 
-Welcome to the :ref:term:`RTEMS` User Manual.
+    - Events
 
-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.
+    - Message queues
 
-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:
+    - Barriers
 
-.. sidebar:: Developers
+    - :ref:term:`Futex` (used by :ref:term:`OpenMP` barriers)
 
-  Developers should look at the :r:url:`devel` for technical information. The
-  design and development of RTEMS is located there.
+    - Epoch Based Reclamation (libbsd)
 
-- standards based user interfaces
+- Locking protocols
 
-- multitasking capabilities
+    - Transitive Priority Inheritance
 
-- homogeneous and heterogeneous multiprocessor systems
+    - :ref:term:`OMIP` (SMP feature)
 
-- event-driven, priority-based, preemptive scheduling
+    - Priority Ceiling
 
-- optional rate monotonic scheduling
+    - :ref:term:`MrsP` (SMP feature)
 
-- intertask communication and synchronization
+- Scalable timer and timeout support
 
-- priority inheritance
+- Lock-free timestamps (FreeBSD timecounters)
 
-- responsive interrupt management
+- Responsive interrupt management
 
-- dynamic memory allocation
+- C11/C++11 :ref:term:`TLS` [#]_
 
-- high level of user configurability
+- Link-time configurable schedulers
 
-- open source with a friendly user license
+    - Fixed-priority
 
-RTEMS provides features found in modern operating systems:
+    - Job-level fixed-priority (:ref:term:`EDF`)
 
-- file systems
+    - Constant Bandwidth Server (experimental)
 
-- networking
+- Clustered scheduling (SMP feature)
 
-- USB
+    - Flexible link-time configuration
 
-- permanent media such as flash disks, cards and USB devices
+    - 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)
 
-- support for various languages
+    - Fixed-priority scheduler
 
-- parallel programming language support
+    - 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.
diff --git a/user/start/index.rst b/user/start/index.rst
index 1016678..a568d69 100644
--- a/user/start/index.rst
+++ b/user/start/index.rst
@@ -5,6 +5,8 @@
 
 .. index:: Quick Start
 
+.. _QuickStart:
+
 Quick Start
 ***********
 
-- 
2.16.4




More information about the devel mailing list