zephyriot / zephyr-issues

0 stars 0 forks source link

Unified Kernel #332

Open nashif opened 8 years ago

nashif commented 8 years ago

Reported by Gajinder Vij:

As a Zephyr developer, I would like a unified and more complete kernel API with optimized performance, so that I don't have to choose between the nanokernel or the microkernel when developing applications.

The Zephyr dual-kernel model is confusing for some, and is somewhat harder to use than traditional cookie-cutter RTOS kernels by even experienced developers. Also, while the nanokernel performances for both footprint and speed of execution (context-switch time, latency, etc.), the microkernel could be improved on both fronts.

Problems

Proposed Improvements:

(Imported from Jira ZEP-334)

nashif commented 8 years ago

by Benjamin Walsh:

FYI: the tasks/users stories for this are tracked internally at WR since we're doing at least the initial push for this. If/when needed, we can transition them to the public Jira. I've added Al so that he can handle this if needed during my vacation.

nashif commented 8 years ago

by Benjamin Walsh:

RFC available here:

https://gerrit.zephyrproject.org/r/#/c/2255/2/incoming/unified_kernel.rst

and discussed on the devel mailing list.

nashif commented 8 years ago

by Benjamin Walsh:

Extra info from porting Feature from WR's internal tracking:

DESCRIPTION

As a Zephyr user (i.e. an application developer using Zephyr or an RTOS developer modifying Zephyr) I don't want to deal with the kernel's layered Microkernel and Nanokernel model, as it makes the kernel difficult to understand and can increase development overhead.

This feature merges the Microkernel and Nanokernel into a single Kernel entity. Where feasible, duplicated services are combined and undesirable service gaps are filled. These changes are made transparent to users by providing "legacy API" versions of any API made obsolete by the unified kernel.

DOCUMENTATION

  1. Update public Zephyr project documentation to describe new unified kernel APIs, and to mark obsolete APIs as deprecated.
  2. Update public Zephyr project documentation to remove references to nanokernel & microkernel layers.

RATIONALE

  1. A unified kernel is easier for users to understand, and provides a unified approach that eliminates some existing restrictions of the kernel. This makes Zephyr more likely to meet the expectations of experienced RTOS developers.
  2. A unified kernel is easier for Wind River developers (and others) to support and extend. It eliminates the need for duplication of effort when supporting both Microkernel and Nanokernel configurations.
  3. A unified kernel provides significant opportunities for both footprint and performance improvements, particularly in Microkernel configurations.
  4. Potential customers/partners could potentially merge all of their development into Zephyr. Easier to do with a well-known model.

ACCEPTANCE CRITERIA

  1. All user stories accepted.
  2. All test cases passed.
  3. Before/After comparison of benchmark test cases on Galileo Gen 2
nashif commented 8 years ago

Blocks GH-582