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:
parent
a952569f02
commit
d1e57e1569
5 changed files with 37 additions and 24 deletions
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
@ -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
|
|
@ -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
|
||||
****************************
|
|
@ -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`.
|
|
@ -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 nanokernel’s 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 nanokernel’s 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
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue