SGDMA与普通DMA:原理与应用
创作时间:
作者:
@小白创作中心
SGDMA与普通DMA:原理与应用
引用
1
来源
1.
https://www.cnblogs.com/yucloud/p/18170056/SGDMA_DMA
DMA(Direct Memory Access,直接内存访问)是一种让硬件设备能够直接读写主内存的技术,可以显著提高数据传输效率。本文将介绍两种常见的DMA实现方式:Block DMA和Scatter-Gather DMA(SGDMA),并探讨它们在不同硬件平台上的应用。
Block DMA与SGDMA的区别
Block DMA(普通DMA)每次只能传输一块物理上连续的数据,传输完成后会向CPU发出中断请求,CPU收到中断后才会安排下一次数据传输。这种方式在处理大量非连续数据时效率较低,因为需要频繁的CPU干预。
而SGDMA则通过使用链表来描述物理上不连续的存储空间。在传输过程中,DMA控制器会根据链表自动处理下一个数据块的传输,直到所有数据传输完成才向CPU发出中断请求。这种方式大大减少了CPU的干预次数,提高了数据传输效率。
Linux应用层Vectored I/O写法
在Linux系统中,Vectored I/O可以通过writev
函数实现,代码示例如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/uio.h>
int main(int argc, char *argv[])
{
const char buf1[] = "Hello, ";
const char buf2[] = "Wikipedia ";
const char buf3[] = "Community!\n";
struct iovec bufs[] = {
{ .iov_base = (void *)buf1, .iov_len = strlen(buf1) },
{ .iov_base = (void *)buf2, .iov_len = strlen(buf2) },
{ .iov_base = (void *)buf3, .iov_len = strlen(buf3) },
};
if (writev(STDOUT_FILENO, bufs, sizeof(bufs) / sizeof(bufs[0])) == -1)
{
perror("writev()");
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}
嵌入式平台上的DMA实现
STM32的DMA控制器
STM32的DMA控制器支持内存到内存、外设到内存和内存到外设等多种传输模式。其配置参数包括数据流/通道、优先级、源和目标地址、传输模式、数据量大小等。下图展示了STM32的DMA矩阵结构:
FPGA中的DMA实现
在FPGA设计中,SGDMA通过增加专门的AXI4 Scatter Gather Master接口来实现。例如,Xilinx的AXI CDMA IP支持普通DMA和SGDMA两种模式。SGDMA引擎提供了内部描述符队列,支持预读取和并行处理,可以显著减轻CPU的负担。
总结
SGDMA通过链表机制实现了对非连续数据的高效传输,相比Block DMA具有更高的数据传输效率和更低的CPU占用率。在现代嵌入式系统和高性能计算领域,SGDMA已经成为主流的DMA实现方式。
热门推荐
模块化设计:现代科技的新宠儿?
模块化设计如何颠覆科技公司产品开发?
新型电力系统电力电量供需平衡和系统稳定新思路
首批40多吨 资中无土栽培生姜出口欧盟
以智促质 打造徐闻良姜品牌
从《小王子》到神经科学:如何克服多巴胺驱动的爱情冲动
立春至,春牛醒:千年民俗在现代的传承与创新
立春必吃春饼:从传统五辛盘到现代创意料理
立春农事指南:四类作物管理要点与春播准备
父母情绪心智不成熟,家庭教育难言成功
提供情绪价值的6个关键方法,打造和谐人际关系
情绪价值:未来社会的情感密码与商业新风口
关系型数据库:以表格存储数据,支撑企业管理和金融交易的关键技术
眼科专家提醒:选对手术方式,告别近视手术误区
半夏与瓜蒌:配伍禁忌与临床应用
独自驾车回家,这些心理调节技巧让你不再慌张
春节自驾回家,这些安全须知你知道吗?
全飞秒、半飞秒、全激光、ICL:近视手术哪种更适合你
爱尔眼科发布近视手术术后护理全攻略
暑假近视手术量攀升,医生提醒:并非人人都适合
逍遥丸:现代人养生的明智之选
环保防治兰花黄斑病,你get了吗?
YTHDF2:揭秘B细胞癌免疫逃逸新机制
中国药科大学揭示黑色素瘤免疫逃逸新机制,为癌症治疗带来新希望
YTHDF2:癌细胞免疫逃逸的关键调控因子
医生提醒:二甲双胍服用次数因人而异,这些细节要注意
白令海峡:沟通北冰洋与太平洋的唯一航道,北极航道的必经之地
里斯本地震:18世纪的毁灭与重生
汤姆·索亚:从调皮捣蛋到勇敢担当的成长之路
汤姆·索亚的冒险精神,你get到了吗?