I have an application that I'm running on the nRF52832 which, by itself, is not terribly large: my source code compiled is around 11KB. However, with all the features compiled in, it balloons to 231KB. I found this out when I tried to enable the MCUBoot, which I wanted to incorporate for FOTA, but with that feature enabled the flash image is now too large (it doesn't give any details, but I'm guessing it's trying to ensure it fits in one of the two 200KB image partitions).
I used the memory report tool in VSCode, which is really nice. I was surprised to see almost 51KB used by the BLE libraries, which seems like a lot, I wonder if that's typical? (In all, NCS is using just over 100KB.)
The other block I don't understand falls under "No paths", where there are plenty of nondescript identifiers, like ":/sym_XMQQMVD4MD6DRWNW2DWSCGOMJHFY3IX7NXUHTGI". This node takes up another 100KB.
From these, it's not terribly clear where I should start trimming. With respect to NCS, the biggest node is coming from BLE, but there's nothing obvious I can see to disable. The rest of the utilization is spread over a lot of features, which I can start to disable but I think it'll be tough to bring it down 31KB, plus whatever MCUBoot and FOTA are going to require. And regarding the "No paths" node, I don't even know if these are things I can look into trimming, or if they're somehow byproducts of the other compiled code. There's no indication where they're coming from.
So the questions:
- Does this utilization seem normal? I would have expected much less. Debug symbols are (or should be) disabled (although I originally checked the "Enable debug features" checkbox, I'm not sure if that is completely undone by removing debug options in the project config).
- Can you give an indication what those "No path" items are, and how to track down their origin?
- Do you have general advice for "trimming the fat", so to speak?
Here's a screenshot of the report. I also attached the ROM report and a project config.
Thank you for your help!