Doc: Change the Architecture part to the Overview section.

Moves the files from Architecture to the Overview section of the Kernel
Primer. Cross-references and figures were updated to reflect the new
structure. Headings and content were changed as little as possible.
These changes are needed to implement the proposed new structure of the
documentation. Content was changed as created as little as possible.

Change-Id: Id1f91ff6c8f858bfd48ad034594ba38531c7e1c4
Signed-off-by: Rodrigo Caballero <rodrigo.caballero.abraham@intel.com>
This commit is contained in:
Rodrigo Caballero 2015-08-07 13:31:56 -05:00 committed by Anas Nashif
commit d1e57e1569
5 changed files with 37 additions and 24 deletions

View file

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Before After
Before After

View file

@ -1,7 +1,7 @@
.. _technical_overview:
.. _overview:
The Zephyr Kernel
#################
Overview
########
The |codename| is composed of a microkernel operating on top of a nanokernel.
Device drivers must operate on top of either a microkernel or a nanokernel
@ -33,9 +33,8 @@ characteristics of the nanokernel and the microkernel as well as the
principles behind the development of drivers and applications.
.. toctree::
:maxdepth: 3
:maxdepth: 1
architecture_nanokernel
architecture_microkernel
architecture_drivers
architecture_apps
overview_nanokernel
overview_microkernel
overview_apps

View file

@ -1,4 +1,4 @@
.. _architecture_apps:
.. _overview_apps:
The Application Model
#####################
@ -61,11 +61,11 @@ that the application will use.
#. Build your application with the |codename|.
How to perform each of these steps can be found in
:ref:`microkernel_app`.
:ref:`application_primer`.
Keep in mind that the application will be built with the kernel. You can
expand the functionality of the kernel as needed. For information regarding
the creation of drivers refer to :ref:`architecture_drivers`.
the creation of drivers refer to :ref:`driver_model`.
Nanokernel Only Applications
****************************

View file

@ -1,4 +1,4 @@
.. _architecture_microkernel:
.. _overview_microkernel:
The Microkernel
###############
@ -33,8 +33,8 @@ other parts can make use of the microkernel tasks, scheduling and APIs.
Thus, ISRs or fibers implemented in standalone nanokernel applications can
easily be rebuilt or re-used in microkernel applications.
Microkernel Objects
*******************
Microkernel Services
********************
Microkernel tasks can interact with nanokernel objects and, additionally use
microkernel specific objects. The microkernel objects are:
@ -52,5 +52,4 @@ microkernel specific objects. The microkernel objects are:
* Task IRQs
The following subsections contain general information about the microkernel
objects. For detailed information see: :ref:`microkernelObjects`.
For detailed information see: :ref:`microkernel`.

View file

@ -1,9 +1,14 @@
.. _architecture_nanokernel:
.. _overview_nanokernel:
The Nanokernel
##############
The Zephyr nanokernel is a minimal execution environment that offers a multi-context programming model without the overhead associated with other operating system kernels. It is ideal for single-core dedicated systems requiring a single background task. The nanokernel provides simple prioritized fibers and :abbr:`ISRs (Interrupt Service Routines)`. The nanokernels fast context switching gives it an advantage for systems where multiple asynchronous streams of data must be manipulated.
The Zephyr nanokernel is a minimal execution environment that offers a multi-context programming
model without the overhead associated with other operating system kernels. It is ideal for single-
core dedicated systems requiring a single background task. The nanokernel provides simple
prioritized fibers and :abbr:`ISRs (Interrupt Service Routines)`. The nanokernels fast context
switching gives it an advantage for systems where multiple asynchronous streams of data must be
manipulated.
The nanokernel is intended for systems with a small amount of RAM, 1-50 KB;
simple buses, UART, I2C, SPI; and a single data processing task.
@ -14,13 +19,22 @@ Nanokernel Function
*******************
The nanokernel interfaces with the hardware providing support for multiple
ISRs, multiple execution fibers and a single processing task. The ISRs, fibers and task interact by means of the nanokernel objects.
ISRs, multiple execution fibers and a single processing task. The ISRs, fibers and task interact
by means of the nanokernel objects.
The nanokernel manages the scheduling of fibers according to the activity of these objects, and provides the entry points necessary to integrate interrupt handles with the rest of the system. All communication inside the nanokernel is performed using the four channel objects: semaphores, FIFOs, LIFOs and stacks.
The nanokernel manages the scheduling of fibers according to the activity of these objects, and
provides the entry points necessary to integrate interrupt handles with the rest of the system.
All communication inside the nanokernel is performed using the four channel objects: semaphores,
FIFOs, LIFOs and stacks.
The nanokernel is optimized for basic multitasking, synchronization, and data passing. Therefore, the APIs are streamlined for performance and the nanokernel provides significantly fewer APIs than the microkernel.
The nanokernel is optimized for basic multitasking, synchronization, and data passing. Therefore,
the APIs are streamlined for performance and the nanokernel provides significantly fewer APIs than
the microkernel.
The nanokernel has a low context switch latency. This is achieved by reducing the context switching overheads. A fiber runs until blocked because it is waiting for communication from another fiber or because it voluntarily yields. This cooperative context switch means that fibers are not preempted reducing the overhead.
The nanokernel has a low context switch latency. This is achieved by reducing the context
switching overheads. A fiber runs until blocked because it is waiting for communication from
another fiber or because it voluntarily yields. This cooperative context switch means that fibers
are not preempted reducing the overhead.
Nanokernel Objects
******************
@ -32,7 +46,8 @@ The most important objects of the nanokernel are:
* :abbr:`FIFO (First In First Out)`s
* Timers
The following subsections contain general information about the nanokernel objects. For detailed information see: :ref:`nanokernelObjects`.
The following subsections contain general information about the nanokernel services. For detailed
information see: :ref:`nanokernel`.
Nanokernel Semaphores
=====================
@ -170,7 +185,7 @@ contexts at work:
.. _architecture_nanokernel_1.svg:
.. figure:: /figures/architecture_nanokernel_1.svg
.. figure:: figures/overview_nanokernel_1.svg
:scale: 75 %
:alt: Hello World! Example