1.. zephyr:code-sample:: minimal
2   :name: Minimal footprint
3
4   Measure Zephyr's minimal ROM footprint in different configurations.
5
6Overview
7********
8
9This sample provides an empty ``main()`` and various configuration files that
10can be used to measure Zephyr's minimal ROM footprint in different
11configurations.
12
13The following configuration files are available:
14
15* :file:`mt.conf`: Enable multithreading
16* :file:`no-mt.conf`: Disable multithreading
17* :file:`no-preempt.conf`: Disable preemption
18* :file:`no-timers.conf`: Disable timers
19* :file:`arm.conf`: Arm-specific disabling of features
20
21Building and measuring ROM size
22*******************************
23
24The following combinations are suggested for comparing ROM sizes in different
25configurations. They all target the :ref:`reel_board` (Arm Aarch32 architecture).
26
27* Multithreading enabled
28
29  * Reference ROM size: 7-8KB
30
31  .. zephyr-app-commands::
32     :zephyr-app: samples/basic/minimal
33     :host-os: unix
34     :board: reel_board
35     :build-dir: reel_board/mt/
36     :conf: "common.conf mt.conf arm.conf"
37     :goals: rom_report
38     :compact:
39
40* Multithreading enabled, no preemption
41
42  * Reference ROM size: 7-8KB
43
44  .. zephyr-app-commands::
45     :zephyr-app: samples/basic/minimal
46     :host-os: unix
47     :board: reel_board
48     :build-dir: reel_board/mt-no-preempt/
49     :conf: "common.conf mt.conf no-preempt.conf arm.conf"
50     :goals: rom_report
51     :compact:
52
53* Multithreading enabled, no preemption, timers disabled
54
55  * Reference ROM size: 3-4KB
56
57  .. zephyr-app-commands::
58     :zephyr-app: samples/basic/minimal
59     :host-os: unix
60     :board: reel_board
61     :build-dir: reel_board/mt-no-preempt-no-timers/
62     :conf: "common.conf mt.conf no-preempt.conf no-timers.conf arm.conf"
63     :goals: rom_report
64     :compact:
65
66* Multithreading disabled, timers enabled
67
68  * Reference ROM size: 4-5KB
69
70  .. zephyr-app-commands::
71     :zephyr-app: samples/basic/minimal
72     :host-os: unix
73     :board: reel_board
74     :build-dir: reel_board/no-mt/
75     :conf: "common.conf no-mt.conf arm.conf"
76     :goals: rom_report
77     :compact:
78
79* Multithreading disabled, timers disabled
80
81  * Reference ROM size: 2-3KB
82
83  .. zephyr-app-commands::
84     :zephyr-app: samples/basic/minimal
85     :host-os: unix
86     :board: reel_board
87     :build-dir: reel_board/no-mt-no-timers/
88     :conf: "common.conf no-mt.conf no-timers.conf arm.conf"
89     :goals: rom_report
90     :compact:
91