zephyr/doc/kernel/overview/overview_microkernel.rst
Rodrigo Caballero d1e57e1569 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>
2016-02-05 20:15:19 -05:00

55 lines
1.9 KiB
ReStructuredText

.. _overview_microkernel:
The Microkernel
###############
The Zephyr microkernel enhances the nanokernel with multiple tasks that are
scheduled preemptively. The microkernel objects synchronize these tasks and
pass data between them. The microkernel retains the nanokernel with its ISRs
and fibers making it ideal for multiprocessing applications running on
heterogeneous systems.
The microkernel is ideally suited for systems with a midrange of RAM, 50 -
900 KB, multiple communication devices, like WIFI and Bluetooth Low Energy,
and handle multiple data processing tasks. Some devices that could implement
a nanokernel are: fitness wearables, smart watches and IoT wireless gateways.
Microkernel Function
********************
Microkernel applications perform all heavy processing using tasks. Tasks can
implement large blocks of code that perform lengthy processing or complex
functions, for example: programming algorithms, high-level task control
routines or data processing. The available microkernel APIs provide
solutions for traditional kernel functions such as processing
synchronization, data passing, and memory access. The microkernel offers
great flexibility in setting the timing and passing of information for
multitasking applications.
Device drivers and performance-critical parts of the application can still
be implemented as ISRs or fibers, just as in the Zephyr nanokernel, while
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 Services
********************
Microkernel tasks can interact with nanokernel objects and, additionally use
microkernel specific objects. The microkernel objects are:
* Tasks
* Task Groups
* Events
* Mutexes
* Semaphores
* FIFOs
* Mailboxes
* Pipes
* Memory Maps
* Memory Pools
* Task IRQs
For detailed information see: :ref:`microkernel`.