DMA问题
某种总线采用burst模式,单个数据的读写是OK的,但burts会一次收到N个数据,这样就得采用dma映射(A映射到B,A表示总线的一个地址,B表示一段物理内存)
问题来了:没有映射的时候,单个读写为:value=*A
但DMA映射后,采用什么机制去触发这个读操作,然后直接去读B里面的值
某些SPI之类的是有寄存器中断触发的,但这种总线上的映射,没有寄存器,只有一个中断。
希望做过的人给一个思路
[解决办法]
DMA: Direct Memory Access. 首先要看 chip 的 DMA controller, 它的 Source/Destination 支援哪些 peripheral, 再依照 data sheet 上所述 config DMA Controller.
WinCE 要利用 HalAllocateCommonBuffer 這個API來取得 physical contiguous 的 memory 及其 physical address 來設定 DMA.
Paul, Chao @ Techware