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>
55 lines
1.9 KiB
ReStructuredText
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`. |