Hi,
this is my DMA configuration for reading from flexbus (external SRAM) on K22:
DMA0->TCD[0].ATTR = DMA_ATTR_DSIZE(1) | DMA_ATTR_SSIZE(1);
DMA0->TCD[0].DOFF = 2;
DMA0->TCD[0].SOFF = 2;
DMA0->TCD[0].NBYTES_MLNO = 32;
DMA0->TCD[0].CITER_ELINKNO = 1;
DMA0->TCD[0].SADDR = flexbusAddress; // 0x08000000
DMA0->TCD[0].DADDR = mybuffer;
DMA0->TCD[0].CSR = DMA_CSR_START_MASK | DMA_CSR_INTMAJOR_MASK;
flexbusAddress variable is address pointing to flexbus memory space. I can read from flexbus using cpu anytime:
int *flex = flexbusAddress;
mybuffer[0] = flex[0];
However, as soon as I launch DMA transfer I immediatelly get Source Bus Error in DMA0->ES register set.
Can you please help me with this issue?
Solved! Go to Solution.
Resolved. RM states that 0x0800_0000–0x0FFF_FFFF address range is accessible only by core. I moved my SRAM to 0x60000000, which is accessible by all masters.
Resolved. RM states that 0x0800_0000–0x0FFF_FFFF address range is accessible only by core. I moved my SRAM to 0x60000000, which is accessible by all masters.