这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » TFFS实验成功,但是执行效率怎么这么低?

共7条 1/1 1 跳转至

TFFS实验成功,但是执行效率怎么这么低?

菜鸟
2007-08-28 14:21:19     打赏
经过长时间的尝试,我的TFFS终于成功了。

之前写文件的问题关键是地址映射的问题,就是NFTL那层的连续地址需要转换成NAND Flash底层的不连续的地址才行。因为NAND每一页后面有64字节的扩展区,却占用了2048的地址空间。这样导致了地址不连续。NFTL那一层到底层需要做一个地址转换。

同时,似乎覆盖写OVERWRITE请求也需要自己从flash中读出数据后进行判断。覆盖时候我是设了几个数组来存放需要覆盖写的块的数据,最后统一写入。否则的话,则需要N多次擦除、写操作。

但是实验发现,TFFS的执行效率很低啊。我采用的是MCF5235,100MHz。VxWorks5.5,NFTL层采用woodhead给的nftllite.c(做了一些地址转换的修改)。
对读写效率进行测试:写1MB文件需要大约28秒,读1MB需要10秒。格式化需要40秒。

这样显然不太满足要求。

请教高手这是什么原因?是我的底层驱动问题,还是上层的TFFS、dosfs还是其他哪一层的问题?
谢谢



关键词: 实验     成功     但是     执行     效率     怎么     这么    

高工
2007-08-28 14:55:50     打赏
2楼

应该是底层驱动问题


菜鸟
2007-08-29 01:38:53     打赏
3楼
但是底层驱动上我已经把时间消耗减到很小了,比如对于覆盖写操作,我先将整块写入内存,之后再一次写入flash,其他的读、写、映射函数都是按照要求的直接对硬件的处理,不应该有太多消耗的问题才对。

同时,我原以为是读写时,等待芯片完成的时间太长(我目前还没有用GPIO来判断是否完成,而是简单的等待一定的时间),结果将该时间减到1/2,1/4的话,读写一个1MB的文件,时间上都没有实质性的减少,只是格式化的时间由3分钟减少到了40秒。

因为格式化基本上只是NFTL层的任务(写入dos引导区信息也只是上层直接调用NFTL层完成的),因此等待时间的减少对于格式化时间的减少比较明显。感觉不是NFTL和底层驱动的问题。
而对于文件的读写,我跟踪了一下,感觉调用的层次太多,不知道是否上层的问题。

不知道曾经做过TFFS的高手,文件读写操作的速度基本上是一个什么数量级的?

菜鸟
2007-08-29 09:54:36     打赏
4楼
对MCF5235不熟悉,不太敢回答
从你写的看来
MCF5235没有nandflash控制器吧?你是用io来控制的?
我在arm9 2410上(有nandflash控制器),写入1mb的文件10s左右
如果是io控制,速度会慢一点,具体是多少没做过,但是慢是肯定的!
不知道你是不是加了软件ecc校检?(估计没)如果加了那速度肯定慢到你想哭
本人的一点愚见,请高手们赐教
另外:简单的等待一定的时间,是多少?

菜鸟
2007-08-29 10:45:24     打赏
5楼
MCF5235没有nand控制器,但是我是用地址总线来连接的,应该比IO强点。
现在还没有加ECC校验
CPU 100MHZ,用for循环等待,简单等待的时间是:
读500 写5000 擦除2500

最初试验时候用了比较长的时间,因为为了先实现功能。但是之后我将时间减少后,发现效率提高并不明显。

同时,你在arm9 2410上写1MB也要10s吗?我觉得那也是挺长的时间了,估计不能满足要求。

现在我就怀疑是不是上层花费的时间太多了,因此想知道曾经做过TFFS的高手们读写的速度怎么样。如果大家都很快的话,那我估计就要在底层找原因了。

菜鸟
2007-08-30 20:59:31     打赏
6楼
楼主可否把nftllite.c这个文件发到polaris_dll@hotmail.com
非常感谢!

菜鸟
2007-08-31 09:14:47     打赏
7楼
能否在你的驱动中增加一些统计,看一下写1M,从开始写到写完,驱动都操作了些什么函数,每次操作的长度是多少。

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]