Hi Nordic,
We are developing an application for the NRF52832 and neither chip selection nor pcb can be changed at this stage (no external flash can be added). We need to support Bluetooth central + peripheral, talk to a sensor, and support FOTA. With MCUboot's minimum configuration, we are able to eek out 242KB per image slot but it is not enough to fit the application.
I have read through the quite sparse Optimisation Documentation (The boot banner, really?) and looked at some minimal samples but it feels rather hit-and-miss. There is a guide as well but it's reasonably quite generic.
Current configuration options include:
# Debug options CONFIG_DEBUG_THREAD_INFO=n CONFIG_DEBUG_OPTIMIZATIONS=n CONFIG_DEBUG=n CONFIG_SERIAL=n # Disable Bluetooth features not needed CONFIG_BT_DEBUG_NONE=y CONFIG_BT_ASSERT=n CONFIG_BT_DATA_LEN_UPDATE=n CONFIG_BT_PHY_UPDATE=n CONFIG_BT_GATT_CACHING=n CONFIG_BT_GATT_SERVICE_CHANGED=n CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=n CONFIG_BT_SETTINGS_CCC_LAZY_LOADING=y CONFIG_BT_HCI_VS_EXT=n # Disable Bluetooth controller features not needed CONFIG_BT_CTLR_PRIVACY=n CONFIG_BT_CTLR_PHY_2M=n
Running the VSCode Memory Report (or the CLI one) shows:

Where the biggest portion is taken up with "no paths" symbols, mainly starting with "Sym_"+id string. What are those, and how can I use this information to reduce the flash size?

In the paths area, the biggest portions are the Bluetooth gatt.c / smp.c / att.c, the mcumgr, the flash + spi drivers, the kernel, and the nrf/subsys/bluetooth/controller. The problem is, knowing this doesn't really help to reduce the size. What I need to know is which configuration options I should use to achieve the maximum impact. There is also a 14kB "hidden" which I assume I can't do anything about?
Could you please shed some light on how to bring down the build size?
Thanks a lot!
Mark