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