SPI + DMA is not working with variables placed inside RETRAM
Hello,
actually, our processor STM32MP153 (dual core) is completely full with the "normal" memory regions regarding the MCUs (M4) code and data. So now, we decided to add the RETRAM_data form
- ORIGIN = 0x00001000, LENGTH = 0x0000F000 /*60k*/
The linker works as expected but if I start a DMA transfer with variables placed inside this area, the DMA stucks directly with a transfer error. The same code but placed in the RAM1_data
- ORIGIN = 0x10030000, LENGTH = 0x00010000 /* 64K*/
works fine.
I know this problem only if the area is not accessible by the DMA as on the H7 but if I have a look at the memory layout and master/slave bus matrix, both DMA should be able to send data from the RetRAM.
Any ideas what could lead to this problem? I checked also to place the segment at 0x38000000 but this leads to a linux boot stuck.
My actual workaround is to place variables not used by the DMA into the RetRAM section .bss1 with the
__attribute__((section (".bss1")))
command. This works but, this is my next smaller question, this variable does not appear in gcc *.map file. Also somewhat curious.
The first question is the most important one.
Best regards,
Jan-Otto Meints
