Help understand rom_report for reducing flash footprint

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

  • Hi,

     

    Can you share your build files? More specifically these:

    build-folder/zephyr/.config

    build-folder/zephyr/zephyr.dts

    build-folder/partitions.yml

     

    How much space do you need to reduce on the final image?

    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?

     This is obscured/fuzzed symbols taken in from the SoftDevice Controller library.

     

    Kind regards,

    Håkon

Related