zephyr/tests/legacy/benchmark/footprint/microkernel
Allan Stephens dd07b4779f kernel: Eliminate use of KERNEL_V2 configuration option
The unified kernel is now the only supported kernel, so this
option is unnessary. Eliminating this option also enables
the removal of some legacy code that is no longer required.

Change-Id: Ibfc339d643c8de16a2ed2009c9b468848b8b4972
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
2016-11-12 12:04:39 +00:00
..
float tests: benchmark: enable for V2 kernel 2016-11-02 00:00:29 +00:00
max tests: benchmark: enable for V2 kernel 2016-11-02 00:00:29 +00:00
min tests: move benchmark tests to legacy/ 2016-11-01 19:23:48 +00:00
reg tests: move benchmark tests to legacy/ 2016-11-01 19:23:48 +00:00
src kernel: Eliminate use of KERNEL_V2 configuration option 2016-11-12 12:04:39 +00:00
Makefile samples: tests: remove obsolete KERNEL_TYPE and kernel variables 2016-11-04 15:47:25 -04:00
README.txt tests: move benchmark tests to legacy/ 2016-11-01 19:23:48 +00:00
micro_float.mdef tests: move benchmark tests to legacy/ 2016-11-01 19:23:48 +00:00
micro_max.mdef tests: move benchmark tests to legacy/ 2016-11-01 19:23:48 +00:00
micro_min.mdef tests: move benchmark tests to legacy/ 2016-11-01 19:23:48 +00:00
micro_reg.mdef tests: move benchmark tests to legacy/ 2016-11-01 19:23:48 +00:00
testcase.ini tests: tests: Mark a bunch of testcases that are memory (RAM) limited 2016-11-07 02:18:13 +00:00

README.txt

Title: Microkernel Footprint Measurement

Description:

This project is designed to characterize the memory requirements of a
standard microkernel image running on an Atom target.


The project can be built using several configurations:

minimal (a "do nothing" image that has support for few kernel capabilities)
-------
- Idle task is only task in system.
- Microkernel server is only fiber in system.
- No system timer support.
- ISR for the spurious interrupt handling is present.
- IDT and stack memory sizes are very limited.
- Provides support for 2 task priorities.

regular (a "typical" image that has support for some kernel capabilities)
-------
- As for "minimal" configuration, except as noted below.
- Supports larger IDT and utilizes larger stacks.
- A statically linked dummy ISR is present.
- Has "foreground" task that prints a message to the console via printk().
- Provides support for 16 task priorities.
- Supports system timer, along with task scheduler support for time slicing.
- Links in support for EVENT, MUTEX, FIFO, and MAP objects.

maximal (a "complex" image that has support for many kernel capabilities)
-------
- As for "regular" configuration, except as noted below.
- Supports full IDT and utilizes even larger stacks.
- Provides support for 64 task priorities.
- Foreground task dynamically links in the dummy ISR, rather than having
  it statically linked.
- Foreground task prints a message to the console via printf(),
  rather than printk().
- Links in support for SEMAPHORE, PIPE, MAILBOX, and POOL objects.
- Links in support for task device interrupt handling and additional task APIs.
- Adds advanced power management support (including tickless idle).
- Adds floating point support (for x87 FPU, including SSE).


--------------------------------------------------------------------------------

Building and Running Project:

This microkernel project does not generate any output in the default case
(TEST=min). In the regular case (TEST=reg) and the maximal case (TEST=max),
it outputs to the console. It can be built and executed on QEMU as follows:

    make TEST=min qemu          (minimal configuration)

    make TEST=reg qemu          (regular configuration)

    make TEST=max qemu          (maximal configuration)

--------------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

--------------------------------------------------------------------------------

Sample Output:

The resulting image is bootable for all configurations, but produces different
output in each case.

minimal
-------
This configuration does NOT produce any output. To observe its operation,
invoke it using gdb and observe that:
- the kernel's timer ISR & _k_server fiber increment "K_LowTime" on a regular
  basis
- nano_cpu_idle() is invoked by the idle task each time K_LowTime is incremented

regular
-------
This configuration prints the following message to the console:

  Running regular microkernel configuration

maximal
-------
This configuration prints the following message to the console:

  Running maximal microkernel configuration

--------------------------------------------------------------------------------

Additional notes:

Various host utilities (such as the Unix "size" utility) can be used
to determine the footprint of the resulting
outdir/$BOARD/microkernel.elf image.