I assume you are using that LTDC module to drive the display - note that srams 1-3 are out of reach of its dma.
The srams 1-3 addresses seems contigous, fill them* with known values, and dma1 them as one big transfer into axi sram to find out. Never did it, but I guess it may technically work. But such copy-overwrite would propably be visible on display.
Oh, your buffer seems too big even for 32 bit transfer for those general dma's 16-bit item counter, so it would be double transfer..
Any chances you can slap external memory to qspi or fmc for the buffer?
*you need scatter file (script) for linker to assign variables in c with _attribute_ to desired named regions of memory.
Ok I happen to dig out my keil + that STM project, maybe it may help. Idk if are familiar with linker trickery. Maybe your error comes out of a fact you try to fit your buffer into default dtcm region. Tbh I don't know how are these ram region you filled into gui are used by a toolchain.
I put a global table from main.c into axi sram:
uint16_t __attribute__((section("FRAME_TEST"))) frame[16] = {0};
Linker script:
FLASH 0x08000000 0x08020000
{
FLASH_PROGRAM 0x08000000 0x08020000
{
startup_stm32h743xx.o (RESET, +FIRST) ;fit your own startup
*(+RO) ;remaining code
}
RAM_DTCM 0x20000000 0x2001FFFF
{
*(+RW,+ZI) ;unasigned variables
}
RAM_AXI 0x24000000 0x2407FFFF
{
main.o (FRAME_TEST)
}
}
In keil you add that linker script/scatter file in Linker tab in options window. And add misc argument --entry=Reset_Handler (check name of your handler) for whatever reason it refused me to pull the ENTRY point from script in earlier version.
Inspect .map file afterwards, it is crucial to validate your desires.