阅读:1995回复:10
关于CF存储卡的驱动问题(高分)
sandisk旧版,128M。
pc104模块,C400,wince.net 4.2。 写一个4M的文件居然要24秒,其间系统停止响应。读同一个文件也要5秒左右。不可接受。 查网上的测试资料,这块卡的写入速率约0.8MB/秒。不应该如此慢法。 有朋友说,WinCE带的CF驱动就是慢,建议我自己编驱动或寻找第三方驱动。 请指点,如何入手编写CF驱动(本人有一些编写驱动的经验),或者如何找到好的CF驱动。 |
|
沙发#
发布于:2004-09-16 09:25
不会吧。。。会这么慢!!!
我用的是wince4.0。ppc2003的系统! 掌上电脑是 arm的内核 用evc4.0 开发的程序。我觉得读写 cf 卡的 速度 很快。就是不清楚 你的 pc104 是什么 意思? |
|
|
论坛版主
|
板凳#
发布于:2004-09-16 13:22
驱动中你看看读写那部分它是不是按页操作的,如果按字节操作就会重复发读写命令,时间增加很多
对于读写部分代码用汇编写,用c写的就看编译器了,我不知道pc104(我不知道他的指令集是什么)有没有块传送指令,如果有用这个可以达到burst的效果,也可以加快速度。 |
|
论坛版主
|
地板#
发布于:2004-09-16 13:27
对了,如果是nand flash的话,块传送指令不行,但是可以紧挨着放串行的多个读来达到burst效果。
|
|
地下室#
发布于:2004-09-16 15:26
PC104就是ISA,时钟高一些,能设置到PCICLK/2,约16M。
C400就是80x86指令集吧。 C的memcpy不知道是怎么实现的,感觉和循环字读写速度差别不大。 我找到了那段代码(diskio.c),确实是按字读写的,不知道是不是端口io。我对CF的机理不熟,感觉用汇编改写的信心不足。 有没有更简洁可靠的办法? 此外,用现有驱动,换一块CF卡,写入速度达到3MB以上的,能提高多少速度? |
|
5楼#
发布于:2004-09-16 19:52
哦,你是 用 pc 104 ,也就是 工控机 来 读写 cf 卡 。。。 这个
可以 用memcpy来 实现的呀 。 我们的 就是,不过 速度 要求 没有 你的 那么高。 按你那么算的话,一块 128M 的 cf卡 写满数据也不要2分钟 。。。 既然 这样的话,还用cf卡干什么呢? 我们的 的写速度也是 几百k 每秒!!!读快一点,不过 没有 具体测试过,不过 pc104 的时钟 是 40M。。 也是8086指令,c语言 完成的代码!!! |
|
|
论坛版主
|
6楼#
发布于:2004-09-16 20:50
要不还来试试吧:)
还有时钟不高,你把读写的等待周期设短些看有没有效果 |
|
7楼#
发布于:2004-09-17 08:49
我用的PC104模块是自带CF接口的,虽然这个模块只引出了PC104总线,但芯片组是 VIA VT8606 North Bridge, VIA VT82C686B,我想模块内部是有PCI的,比如模块有DMA33的IDE,有USB,有Realtek 8100BL 10/100M,我想都应该连PCI的。
CF卡似乎就是连在IDE2上,BIOS里把它作为一个普通硬盘。 To wxl_50685330,"读写的等待周期",在BIOS里设置吗?怎么设?对别的功能单元有没有影响? To author22: 你们用的什么BSP?是WinCE自带的CF驱动吗?自己编的相关代码吗? |
|
8楼#
发布于:2004-09-17 09:20
我用的是win CE 自带的 驱动。。。和你 不一样。。 我用的 win CE 是 pda 。 操作系统是 基于win ce.net 的 pocket pc 2003 的掌上电脑。 但是 pc104 的是 dos 操作系统。。。并且 没有网卡和usb等模块。这个我参与,具体的我不清楚。。。
|
|
|
论坛版主
|
9楼#
发布于:2004-09-17 13:08
今天测试了一下:
我用的NAND FLASH是三星的k9k1208,64MB 编程4M,20秒,但是包括写之前擦除每一页,每写一页再读出和原始数据比较;还包括快管理附加动作(当然我看了一下没有做快替换动作,也就是按时间最短的方式工作)。所有代码是用C写的,没有做块传送优化(用的Arm的片子,可以用LDM/STM提高速度)。 做成驱动并优化后做个保守估计吧,15秒,最差应该有吧。 由于我的nand flash是直接挂在cpu总线上的,所以可以控制这个地址范围的读写等待,我不太清楚ide控制器的工作,他的控制寄存器应该可以调整时序,但是从你说的结构来看,经过了Ide控制器后要控制速度好像不那么直接。 |
|
10楼#
发布于:2004-10-10 09:22
各位弟兄们,好像没有那么复杂吧?如果你用的是CE自身的驱动程序,又是RELEASE版的。我想你换一块卡也许就会那样了,可能是卡有问题。CF卡只是一个IO型外设,读写是只能对一个端口操作,而不能memory了,所以换个卡试一下吧。如还有问题,请跟贴
|
|
|