I am trying to perform DMA transfers from the bitband region (0x22000000) on the K20, but eDMA reports a bus error on a source read (SBE set in the DMA_ES register). The same code works fine if I access my source data placed in the SRAM_U region at 0x20000000 (e.g. the same code does not report a bus error if I change DMA_TCD2_SADDR from 0x22000000 to 0x20000000 with no other changes).
At first I thought it was because of byte accesses, but the bitband region should support all kinds of reads, besides then I also tried with word reads, same result.
Is there an undocumented limitation of the eDMA engine? Is it unable to access the bitband region? (if so, that would be extremely disappointing)
Solved! Go to Solution.
I don't know precisely what chip you are using, but just looking at Table 4-1 "System Memory Map" of K1064M72SF1RM.pdf, access to the SRAM bitband says:
0x2200_0000–0x23FF_FFFF Aliased to SRAM_U bitband Cortex-M4 core only
so eDMA can't get to SRAM bitband.
I don't know precisely what chip you are using, but just looking at Table 4-1 "System Memory Map" of K1064M72SF1RM.pdf, access to the SRAM bitband says:
0x2200_0000–0x23FF_FFFF Aliased to SRAM_U bitband Cortex-M4 core only
so eDMA can't get to SRAM bitband.
*Sigh* — so it is documented, just not in the eDMA section. Thanks for pointing that out.
It seems every time I discover a cool feature in the Kinetis line, it turns out that it is so limited that I can't use it for anything…