Minimal sample


This sample defines An empty main() and a set of minimal configurations that provide tests for the smallest ROM sizes possible with the Zephyr kernel.

The following configuration files are available:

  • mt.conf: Enable multithreading
  • no-mt.conf: Disable multithreading
  • no-preempt.conf: Disable preemption
  • no-timers.conf:: Disable timers
  • arm.conf: Arm-specific disabling of features

Building and measuring ROM size

In order to compare ROM sizes with different minimal configurations, the following combinations are suggested:

  • Reel board (Arm architecture)

    • Multithreading enabled

      • Reference ROM size: 7-8KB
      west build -t rom_report -b reel_board -d build/reel_board/mt samples/basic/minimal -- -DCONF_FILE="common.conf mt.conf arm.conf"
    • Multithreading enabled, no preemption

      • Reference ROM size: 7-8KB
      west build -t rom_report -b reel_board -d build/reel_board/mt-no-preempt samples/basic/minimal -- -DCONF_FILE="common.conf mt.conf no-preempt.conf arm.conf"
    • Multithreading enabled, no preemption, timers disabled

      • Reference ROM size: 3-4KB
      west build -t rom_report -b reel_board -d build/reel_board/mt-no-preempt-no-timers samples/basic/minimal -- -DCONF_FILE="common.conf mt.conf no-preempt.conf no-timers.conf arm.conf"
    • Multithreading disabled, timers enabled

      • Reference ROM size: 4-5KB
      west build -t rom_report -b reel_board -d build/reel_board/no-mt samples/basic/minimal -- -DCONF_FILE="common.conf no-mt.conf arm.conf"
    • Multithreading disabled, timers disabled

      • Reference ROM size: 2-3KB
      west build -t rom_report -b reel_board -d build/reel_board/no-mt-no-timers samples/basic/minimal -- -DCONF_FILE="common.conf no-mt.conf no-timers.conf arm.conf"