.. _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:`CONFIG_ISR_STACK_SIZE`
  Set to 2048 by default

:kconfig:`CONFIG_MAIN_STACK_SIZE`
  Set to 1024 by default

:kconfig:`CONFIG_IDLE_STACK_SIZE`
  Set to 320 by default

:kconfig:`CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE`
  Set to 1024 by default

:kconfig:`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 are enabled by default to provide more information about
the running application and to provide means for debugging and error handling:

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

:kconfig:`CONFIG_DEBUG`
  This option can be disabled for production builds


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.
