Accessing all of the MSoM RAM

I've adapted one of our designs to use the M404 (US) and M524 (int).
Now using OS vers. 6.2.1.
The sandbox (web page) indicates that the M404 has "247.3kB of 2.8MB of RAM used". So I have been trying to create an ever larger array, just to see if I can get access to all the RAM now available in the MSoM. However, when local compiling with VS Code, I get the following error:

   text    data     bss     dec     hex filename
1170070  130760  185778 1486608  16af10 ../../../build/target/system-part1/platform-35-m/system-part1.elf
Creating d:/MCU/particle/projects/ch4v6/target/6.2.1/msom/memory_platform_user.ld ...
c:/users/jim/.particle/toolchains/gcc-arm/10.2.1/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: d:/MCU/particle/projects/ch4v6/target/6.2.1/msom/ch4v6.elf section `.bss' will not fit in region `SRAM'

It appears that the linker doesn't know that there are MBs of RAM available.
Any thoughts on how to access the nearly 3MB of RAM on the MSoM?

The linker report is available flash, not available RAM.

The available RAM (as reported in the console) is split into two parts, and it's not contiguous. So you can't actually allocate a single block that's as large as the total free RAM on RTL872x devices.

The error:

...section `.bss' will not fit in region `SRAM'

only happens as I create this larger array to consume RAM.

I was guessing as much, but the MSoM document doesn't specify this.
Can you provide info on the split?

Thanks.

The .bss segment (static allocation) is limited to the 512 MB SRAM section. Sorry, I didn't scroll right far enough to see that.

Instead of allocating it at compile time as a global array, you can allocate it at setup time using new or malloc, which allows the block to be allocated out of the 2.5 MB-ish PSRAM segment instead.

Excellent.
Thanks for the help!