On Wed, Mar 29, 2017 at 03:17:16PM -0600, David Brown wrote:
At the past mini summit (Austin), a few of us had discussions about
making builds using Zephyr that are more minimal. My specific use
case is about the boot loader, which has very few requirements:
- It needs a flash driver.
- It may need a UART.
- It may need access to crypto hardware (not currently).
Currently, there is quite a bit of code brought in by this that isn't
really needed (for example, there is only a single thread). (A mynewt
build of mcuboot ends up about 10K smaller than a Zephyr build).
If you disable CONFIG_MULTITHREADING, the scheduler goes away. The
kernel operates in coop-mode only with a single thread, which is
basically "never preempt me, except by interrupts and when that
happens, always go back to what I was doing after handling it".
Vincenzo Frascino did a little work to conditionalize some of this,
but I was wondering what people think might be the best approach.
The approach taken by Mynewt (where mcuboot comes from), is to
separate the kernel from the HAL. They are able to build mcuboot with
just the HAL.
Are there other uses for a more minimal version of Zephyr. I realize
we got rid of the nano kernel, but perhaps being able to work without
the scheduler, or timers, etc might be more generally useful.
We merged the two actually.
If I want to get pedentic, we got rid of the microkernel, not the
nanokernel, and brought necessary features of the microkernel into the
Zephyr-devel mailing list
Benjamin Walsh, SMTS
WR VxWorks Virtualization Profile
Zephyr kernel maintainer