“The chip offers 8MB” true, but you have to have your preset data in actual RAM at some point… I think that’s the distinction. And yes, the default BOOT_SRAM app linker script puts .bss (explained most simply as “global variables”) into DTCMRAM so it’s fairly limited in size. The reason you’d edit the linker script is to map .bss to something else - for example splitting SRAM between code (.text) and data (.bss).
If the struct itself is sufficiently big you also may run into problems making copies of it on the stack if you’re not careful to use reference semantics everywhere, regardless of whether the static variable fits into memory during compilation/linking or not.
How big is your data struct, and are you using PersistentStorage
?