[STM32h7] ADC3 BDMA Transfer error (Buffer located in SRAM4)
I understand the STM32H7's BDMA requires special attention to the memory map [FAQ: DMA is not working on STM32H7 devices]
however, when I try to declare the buffer to SRAM4 that will be the destination for the ADC DMA transfer,
__attribute__((at(0x38000000)))uint32_t pAdcBuffer [ 1024 ] = {0};
OR..
#define SRAM4_BDAM_BUFFER __attribute__((section("RAM_D3")))
SRAM4_BDAM_BUFFER uint32_t pAdcBuffer [ 1024 ] = {0};it compiles, but neither works as I still get a DMA error code of 1 (transfer error) when I start:
HAL_ADC_Start_DMA (&hadc3 , (uint32_t*)pAdcBuffer, 256 );Is there an another preferred way of declaring the variable to SRAM4 via code, and not linker-script? I don't mind using the linker-script, but not very familiar with it. But I did also try it without success:
STM32H743ZITX_RAM.ld:
._ramd3_aka_sram4(NOLOAD) :
{
. = ALIGN(4);
*(._ramd3_aka_sram4*)
} >RAM_D3
mainc.c:
__attribute__((section("_ramd3_aka_sram4"), used))
uint32_t pAdcBuffer [ 1024 ] = {0};Otherwise, if not a memory map issue, what else could be the problem?
