4403|6

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有无linux操作系统两种情况下ARM的DMA传输速度不同? [复制链接]

我做了个测试,在没有操作系统的情况下,配置好DMA特殊寄存器,采用burst模式,读写16字节用时大概2.4微秒,但是在有linux系统的情况下,写了个简单的DMA驱动,也采用burst模式,读写16字节却用了5点多微秒,两种情况DMA的速度差了这么多是什么呢?原来也做过中断测试,发现了同样的情况,就是有linux的中断速度远低于无系统的中断速度,当时估计是因为系统的一些调度消耗了时间降低了速度,可对于DMA来说,初始化之后的传输过程不是就应该不受系统调度的影响了吗?到底是什么影响了DMA的速度呢?

最新回复

单一应用,裸奔肯定比有OS快。 OS是为了解决软件设计复杂度的。如果用裸奔方式设计大型系统(航天飞机,智能手机等),开发成本太高。  详情 回复 发表于 2009-8-6 14:09
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
楼主跑得真快呀,
开始搞OS了?
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
详情? 你的数据怎样来的?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 dontium 的回复:
楼主跑得真快呀,
开始搞OS了?

呵呵,做东西用到了,就测试测试
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 great_bug 的回复:
详情? 你的数据怎样来的?

测试中,是把BANK5(从0x28000000地址开始)的一块数据用DMA方式拷到BANK6(从0x31800000地址开始)
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
在linux下,
1. 中断有一定延时性,比如,你正在执行一段临界区的代码,你用诸如spin_lock_irq, 或local_irq_disable之类的, 这些函数关闭了中断,使中断暂时得不到响应。
2. 在用DMA搬移数据时,是从一个内存搬到一个内存,每一个burst大小向内存控制器请求一次, 然后内存控制器响应一次。然而,此时linux的其它进程可能软件写了这一些内存,同样,它也会向内存控制器请求。 这样内存控制器就有一个仲裁。DMA此时不会独占内存控制器。

所以比无操作系统的时候速度慢
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
单一应用,裸奔肯定比有OS快。

OS是为了解决软件设计复杂度的。如果用裸奔方式设计大型系统(航天飞机,智能手机等),开发成本太高。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表