zephyr/tests/benchmarks/footprint
Daniel Leung 7228a60173 kernel: Fix compilation errors when CONFIG_TIMESLICING=n
Add ifdef guard to the z_reset_timeslice() to fix compilation
errors when CONFIG_TIMESLICING is disabled.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2018-09-25 12:54:58 +05:30
..
float tests: benchmarks: force assertions off 2018-05-24 15:12:56 -07:00
max tests: benchmarks: force assertions off 2018-05-24 15:12:56 -07:00
min tests/benchmarks/footprint/min/x86: disable I2C and SPI 2018-07-27 17:16:18 -04:00
reg tests: benchmarks: force assertions off 2018-05-24 15:12:56 -07:00
src kernel: Fix compilation errors when CONFIG_TIMESLICING=n 2018-09-25 12:54:58 +05:30
CMakeLists.txt cmake: Prepend 'cmake_minimum_required()' into 'app' build scripts 2018-08-15 04:06:50 -07:00
README.txt
prj.conf benchmarks: footprint: Disable userspace for benchmarks 2018-05-31 08:48:07 -04:00
testcase.yaml tests: cleanup subsystem tests meta-data 2018-04-09 22:55:20 -04:00

README.txt

Title: Kernel Footprint Measurement

Description:

This project is designed to characterize the memory requirements of a
standard kernel 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.
- 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 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 & main thread increment "_sys_clock_tick_count" on a
  regular basis
- k_cpu_idle() is invoked by the idle task each time _sys_clock_tick_count
  is incremented

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

  Running regular kernel configuration

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

  Running maximal kernel configuration

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

Additional notes:

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