反射内存 RFM5565 分散/集聚的 DMA 操作示例

网友投稿 269 2022-10-13


反射内存 RFM5565 分散/集聚的 DMA 操作示例

续的。但在有的计算机体系中,如IA,连续的存储器地址在物理

dma 传输数据的过程中,要求源物理地址和目标物理地址必须是

上不一定是连续的,则dma 传输要分成多次完成。

如果传输完一块物理连续的数据后发起一次中断,同时主机进行下一

块物理连续的传输,则这种方式即为block dma 方式。

scatter/gather 方式则不同,他是用一个链表描述物理不连续的存储器,

然后把链表首地址告诉dma masterdma master 传输完一块物理连续

的数据后,就不用再发中断了,而是根据链表传输下一块物理连续的

数据,最后发起一次中断。

很显然scatter/gather 方式比block dma 方式效率高。

分散/集聚DMA 传输是一种用于执行分割成不同小块的大型数

据的传输的模式。注意:在一个数据页不能跨越4 GB 的地址边界。

DMA 描述符指针是链表页描述地址。

每个页面描述符定义一个地址和数据块大小加上下一个描述符

块的指针。当数据被读取/写入到相应的页面,自动获取描述符。描

述链处理直到数据传输完成或达到的描述链的末端,以先到者为准。

页面描述符块不能被映射在64 位寻址空间。第一个描述符必须

是一个16 字节的边界上。为了获得最佳性能,每个描述符块应该被

一个16 字节或字节边界对齐。

页面描述链必须建立在PCI 32bit 的内存空间,才开始一个分散/

集聚DMA。链中的每个描述符格式如下:


第二个DWORD:高 32 PCI 数据地址,32 位寻址)($

第一DWORD:低 32 PCI 数据地址(每个页面都要一个

第三DWORD:要传输的字节数到/ PCI 地址(每个页面大小

必须是字节的倍数)

第四DWORD:下一描述符(写$1 表示链结束)

同时,所有数据块的大小总长度值必须被写入DMA 传输大小寄

存器。

1。基址寄存器 0 存储本地控制和配置寄存器,其中包括DMA

控制寄存器的起始地址。该寄存器中的值是PCIBAR0

2为配置一个DMA 周期有DMA 寄存器必须被设置。DMA

周期后这些寄存器将保持不变。



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:制导系统测试(什么叫制导系统)
下一篇:java 内嵌Groovy动态脚本操作
相关文章

 发表评论

暂时没有评论,来抢沙发吧~