zephyr/samples/microkernel/benchmark/footprint
Daniel Leung f06cae3775 samples/benchmark/footprint-min: disable UART console and serial
Previously, CONFIG_PRINTK being false means none of functions related to
the UART console and serial are compiled into the binary. This
effectively means UART console and serial drivers are disabled.
By decoupling serial drivers from console related configs, additional
options are needed to disable serial drivers and UART console driver
itself. So add those options here to disable UART console and serial,
or else the resulting binaries will be too bloated.

Change-Id: If526e42404f22caf6a550795f8277ba742625883
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2016-02-05 20:15:25 -05:00
..
src pipes/mailboxes: rename functions using mem blocks 2016-02-05 20:15:21 -05:00
Makefile Renames supported platform configurations 2016-02-05 20:14:39 -05:00
micro_max.mdef Rename VPF files to use MDEF file extension 2016-02-05 20:14:15 -05:00
micro_min.mdef Rename VPF files to use MDEF file extension 2016-02-05 20:14:15 -05:00
micro_reg.mdef Rename VPF files to use MDEF file extension 2016-02-05 20:14:15 -05:00
prj_max_arm.conf Configure task priority queues in microkernel footprint benchmark 2016-02-05 20:13:48 -05:00
prj_max_x86.conf serial: remove unused CONFIG_EXTRA_SERIAL_PORT 2016-02-05 20:15:25 -05:00
prj_min_arm.conf samples/benchmark/footprint-min: disable UART console and serial 2016-02-05 20:15:25 -05:00
prj_min_x86.conf samples/benchmark/footprint-min: disable UART console and serial 2016-02-05 20:15:25 -05:00
prj_reg_arm.conf Configure task priority queues in microkernel footprint benchmark 2016-02-05 20:13:48 -05:00
prj_reg_x86.conf serial: remove unused CONFIG_EXTRA_SERIAL_PORT 2016-02-05 20:15:25 -05:00
README.txt Update Title in sample project README.txt files 2016-02-05 20:15:21 -05:00
testcase.ini initial commit for next-gen sanity checks 2016-02-05 20:14:42 -05:00

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).


NOTE:
- These configurations utilize standard security only.

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

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/microkernel.elf image.