TI中文支持网
TI专业的中文技术问题搜集分享网站

AM3352 @ Linux Kernel 4.9.59(tisdk 4.02) 如何使用dmaengine API实现复杂的数据传输

我们有个外部ADC采样的DMA传输,需要在Linux下用dmaengine API实现
大概目标是:
源数据来自GPMC,可看做是一个ADC[8]数组
目标数据是内存,可看做是RES[8][xxx]的二维数组

每次外部GPIO中断时,需要触发DMA进行一次数据搬运,将GPMC上连续的8个地址分散存储在RES[0][n] … RES[7][n]的位置上
连续xxx次GPIO事件后完成整个DMA传输,触发DMA完成中断

在DSP及其他系统上,我们通过直接操作裸的PaRAM寄存器可以实现这个功能
但是在Linux下,我们希望能充分利用dmaengine原生的API,能否实现这种效果呢?
我大概是考虑scatter/gether的方式,但没找到一个简单的例子,还是没有头绪
能否指教一下?

谢谢

DachuanLiu:

还有就是,用GPIO触发DMA,每触发一次,都需要向GPIO_EOI寄存器写0才能发送下一个dma请求。我们希望在一次gpio dma request能完成8次gpmc的数据传输再额外链接一个向GPIO_EOI寄存器写0的操作,这种chain的操作能通过dmaengine的api实现么?

赞(0)
未经允许不得转载:TI中文支持网 » AM3352 @ Linux Kernel 4.9.59(tisdk 4.02) 如何使用dmaengine API实现复杂的数据传输
分享到: 更多 (0)