6225|11

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

做过SD卡的进来一起探讨一下SD卡读卡速度的问题 [复制链接]

小弟最近在S3C2410+linux2.6.13的环境下,移植成功了SD卡驱动,可以成功挂载SD卡,但是向SD卡中读-写-比较数据速度比较慢,SD卡的控制模式采用SD模式,是直接占用CPU去读写数据,我预计改为由DMA去传输数据,速度会快些,不知这样的思路可否正确,还有没有别的影响速度的因素?比如频率?修改了驱动为DMA传送数据后,挂载驱动后,出现如下提示:
[root@Armzone /]# insmod s3c2440mci.ko
Using s3c2440mci.ko
mmci-s3c2410: probe: mapped sdi_base=c4b80000 irq=37 irq_cd=60 dma=0 dmabuf_l=ff
c29000 dmabuf_p=33b00000.
mmci-s3c2410: initialisation done.
[root@Armzone /]# MMC: sd_app_op_cond timed out. Probably no SD-Card here.
mmcblk0: mmc0:0001        1019392KiB
mmcblk0:(在这里成功的话应该有个“p1”,不知道这个P1是代码在那里创建的)
程序运行到这里后就死机了,不知道问题出在那里,尝试用printk追踪代码,但是没追踪到?
没有修改前,驱动能成功挂载,提示如下:
[root@Armzone /]# insmod s3c2440mci.ko
Using s3c2440mci.ko
mmci-s3c2410: probe: mapped sdi_base=c4b80000 irq=37 irq_cd=60 dma=0.
mmci-s3c2410: initialisation done.
[root@Armzone /]# MMC: sd_app_op_cond timed out. Probably no SD-Card here.
mmcblk0: mmc0:0001        1019392KiB
mmcblk0: p1
按ctrl+c退出,就可以挂载SD卡了

最新回复

用了DMA,如果总线只有一条,也会占用总线. 其实DMA和软件搬的主要区别是一个是burst传输,一个不是.  详情 回复 发表于 2010-1-30 12:43
点赞 关注

回复
举报

58

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
开发环境是:S3C2440+linux2.6.13
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
linux下驱动不清楚。
不过针对SD卡倒是可以讨论。

你所说的“读写比较速度比较慢”,慢到什么程度测试了吗?有没有用示波器看SD_CLK时钟是多少?2440的SD接口时钟应该可以到20MHz。
还有2440的SD卡控制器设成1bit模式?还是4bit模式?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
另外不同的SD卡里面的controller也不一样, 访问方式不同,读写的速度也不一样,一般用burst连续写的方式比较快,尽量不要跳跃式读写。总之如果要充分体现速度可能要改写一下sd卡驱动,或者写应用程序时候也要注意读写的方式
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
情况是这样的,测试程序已经给定,而且同样的产品已经开发成功,测试程序采用的方式是:对MMC卡写一个数据、读刚写的数据,然后比较两个数据(400个数据)。测试程序里面的程序不给我看,我现在开发的是一个替代老产品的新产品(功能要求一样),他那个测试程序读写老产品要41分钟,我的MMC卡测试程序是54分钟。但是我的是占用CPU去传送数据,改成DMA传送数据,理论上可以提高读卡速度吗?
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

6
 
改用DMA,肯定能提高传输速度,提高的程度就跟程序结构和数据组织结构有关系了。

不过,感觉你应该先改一下这里:“但是我的是占用CPU去传送数据”,怎么会占用CPU呢?没有线程吗?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
内部协议的实现我不太清楚,只是想改成DMA控制。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
如果不用DMA,是要占用CPU的资源来传输数据的
如果没记错的话。。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 
我也是用2440+LINUX2.6.13开发,但是不知道为什么我的驱动挂不了2G的SD卡?麻烦楼主指点一下,谢谢!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
你测试速度的时候是用怎么计时的?


 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

11
 
帮顶下。

MARK.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

12
 
用了DMA,如果总线只有一条,也会占用总线.
其实DMA和软件搬的主要区别是一个是burst传输,一个不是.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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