自己写了个简单的SD Driver,从SD外设以DMA方式读取数据时,碰到个奇怪的问题。
block size是512字节,传输的block是1024个block,DMA buffer boundary 是512KB。
对于所使用的DMA buffer,如果使用config.bib中Reserve的RAM,则可以正常进行DMA传输,并且会产生有Transfer Done中断。
但如果使用AllocPhysMem或者HalAllocateCommonBuffer进行动态分配时,启动DMA传输后,刚读取七八百个block时就自动停止了。。。不能产生DMA中断或Transfer Done中断。
同样是连续的物理内存,为什么差别这么大呢?有没有大哥碰到过类似的问题,稍微指点迷津,谢谢!