Back to Zephyr

Optimizing for Footprint

doc/develop/optimizations/footprint.rst

4.4.01.6 KB
Original Source

.. _footprint:

Optimizing for Footprint ########################

Stack Sizes


Stack sizes of various system threads are specified generously to allow for usage in different scenarios on as many supported platforms as possible. You should start the optimization process by reviewing all stack sizes and adjusting them for your application:

:kconfig:option:CONFIG_ISR_STACK_SIZE Set to 2048 by default

:kconfig:option:CONFIG_MAIN_STACK_SIZE Set to 1024 by default

:kconfig:option:CONFIG_IDLE_STACK_SIZE Set to 320 by default

:kconfig:option:CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE Set to 1024 by default

:kconfig:option:CONFIG_PRIVILEGED_STACK_SIZE Set to 1024 by default, depends on userspace feature.

Unused Peripherals


Some peripherals are enabled by default. You can disable unused peripherals in your project configuration, for example::

    CONFIG_GPIO=n
    CONFIG_SPI=n

Various Debug/Informational Options


The following options output more information about the running application and provide means for debugging and error handling:

:kconfig:option:CONFIG_BOOT_BANNER This option can be disabled to save a few bytes.

:kconfig:option:CONFIG_DEBUG This option can be enabled for debug builds.

Note that the boot banner is enabled by default.

MPU/MMU Support


Depending on your application and platform needs, you can disable MPU/MMU support to gain some memory and improve performance. Consider the consequences of this configuration choice though, because you'll lose advanced stack checking and support.