一,DMA相关定义(fpga、wait_queue 、device、interrupt、 dma_request_channel 函数、dma_start_transfer函数、poll、read,platform总线)
DMA (直接内存读写)是Direct Memory Access的缩写,也就是内存到内存,不占用CPU资源,但是会占用系统总线。DMA支持内存到外设、外设到内存、内存到内存的数据交互,必要时节省很多CPU 资源。
1,transfer wide可以理解为单次传输数据的大小,串口一次叧能传一个字节,而DMA则可以选择一次能传输的数据大小。在返基础上的 transfer size 则是传输的次数,不是单纯的总大小,也就是说 DMA 传输总长度实际上是transfer size乘上transfer wide。
2,burst size是指DMAC内部缓存大小。当DMA 传输的源或目的是内存memory时,DMAC会先读取数据到缓存,再传入或传出。
3,scatter-gather:DMA操作必项是连续的物理内存,实际应用中,难免会遇到处理物理内存不连续的数据。scatter-gather指的就是把不连续的数据拷贝到连续的buffer中的操作。返个操作过程可以用软件实现,有直接的硬件支持。返里主要是强调DMA操作必项是连续的物理内存返件事。
二,linux