反射内存 RFM5565 分散/集聚的 DMA 操作示例
发布时间:2019-07-08 浏览次数:40
返回列表
反射内存RFM5565分散/集聚的DMA 操作示例 |
注:scatter/gather 方式是与block dma 方式相对应的一种dma 方 |
连续的。但在有的计算机体系中,如IA,连续的存储器地址在物理 |
在dma 传输数据的过程中,要求源物理地址和目标物理地址必须是 |
如果传输完一块物理连续的数据后发起一次中断,同时主机进行下一 |
块物理连续的传输,则这种方式即为block dma 方式。 |
scatter/gather 方式则不同,他是用一个链表描述物理不连续的存储器, |
然后把链表首地址告诉dma master。dma master 传输完一块物理连续 |
的数据后,就不用再发中断了,而是根据链表传输下一块物理连续的 |
很显然scatter/gather 方式比block dma 方式效率高。 |
分散/集聚DMA 传输是一种用于执行分割成不同小块的大型数 |
据的传输的模式。注意:在一个数据页不能跨越4 GB 的地址边界。 |
每个页面描述符定义一个地址和数据块大小加上下一个描述符 |
块的指针。当数据被读取/写入到相应的页面,自动获取描述符。描 |
述链处理直到数据传输完成或达到的描述链的末端,以先到者为准。 |
页面描述符块不能被映射在64 位寻址空间。**个描述符必须 |
是一个16 字节的边界上。为了获得*性能,每个描述符块应该被 |
页面描述链必须建立在PCI 32bit 的内存空间,才开始一个分散/ |
集聚DMA。链中的每个描述符格式如下: 第二个DWORD:高 32 位PCI 数据地址,0 为32 位寻址)($ |
**DWORD:低 32 位PCI 数据地址(每个页面都要一个8 字 |
第三DWORD:要传输的字节数到/从 PCI 地址(每个页面大小 |
同时,所有数据块的大小总长度值必须被写入DMA 传输大小寄 |
1。基址寄存器 0 存储本地控制和配置寄存器,其中包括DMA |
控制寄存器的起始地址。该寄存器中的值是PCIBAR0。 |
2。为配置一个DMA 周期有6 个DMA 寄存器必须被设置。DMA |
|