经过长时间的尝试,我的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还是其他哪一层的问题?
谢谢
共7条
1/1 1 跳转至页
但是底层驱动上我已经把时间消耗减到很小了,比如对于覆盖写操作,我先将整块写入内存,之后再一次写入flash,其他的读、写、映射函数都是按照要求的直接对硬件的处理,不应该有太多消耗的问题才对。
同时,我原以为是读写时,等待芯片完成的时间太长(我目前还没有用GPIO来判断是否完成,而是简单的等待一定的时间),结果将该时间减到1/2,1/4的话,读写一个1MB的文件,时间上都没有实质性的减少,只是格式化的时间由3分钟减少到了40秒。
因为格式化基本上只是NFTL层的任务(写入dos引导区信息也只是上层直接调用NFTL层完成的),因此等待时间的减少对于格式化时间的减少比较明显。感觉不是NFTL和底层驱动的问题。
而对于文件的读写,我跟踪了一下,感觉调用的层次太多,不知道是否上层的问题。
不知道曾经做过TFFS的高手,文件读写操作的速度基本上是一个什么数量级的?
同时,我原以为是读写时,等待芯片完成的时间太长(我目前还没有用GPIO来判断是否完成,而是简单的等待一定的时间),结果将该时间减到1/2,1/4的话,读写一个1MB的文件,时间上都没有实质性的减少,只是格式化的时间由3分钟减少到了40秒。
因为格式化基本上只是NFTL层的任务(写入dos引导区信息也只是上层直接调用NFTL层完成的),因此等待时间的减少对于格式化时间的减少比较明显。感觉不是NFTL和底层驱动的问题。
而对于文件的读写,我跟踪了一下,感觉调用的层次太多,不知道是否上层的问题。
不知道曾经做过TFFS的高手,文件读写操作的速度基本上是一个什么数量级的?
4楼
对MCF5235不熟悉,不太敢回答
从你写的看来
MCF5235没有nandflash控制器吧?你是用io来控制的?
我在arm9 2410上(有nandflash控制器),写入1mb的文件10s左右
如果是io控制,速度会慢一点,具体是多少没做过,但是慢是肯定的!
不知道你是不是加了软件ecc校检?(估计没)如果加了那速度肯定慢到你想哭
本人的一点愚见,请高手们赐教
另外:简单的等待一定的时间,是多少?
从你写的看来
MCF5235没有nandflash控制器吧?你是用io来控制的?
我在arm9 2410上(有nandflash控制器),写入1mb的文件10s左右
如果是io控制,速度会慢一点,具体是多少没做过,但是慢是肯定的!
不知道你是不是加了软件ecc校检?(估计没)如果加了那速度肯定慢到你想哭
本人的一点愚见,请高手们赐教
另外:简单的等待一定的时间,是多少?
MCF5235没有nand控制器,但是我是用地址总线来连接的,应该比IO强点。
现在还没有加ECC校验
CPU 100MHZ,用for循环等待,简单等待的时间是:
读500 写5000 擦除2500
最初试验时候用了比较长的时间,因为为了先实现功能。但是之后我将时间减少后,发现效率提高并不明显。
同时,你在arm9 2410上写1MB也要10s吗?我觉得那也是挺长的时间了,估计不能满足要求。
现在我就怀疑是不是上层花费的时间太多了,因此想知道曾经做过TFFS的高手们读写的速度怎么样。如果大家都很快的话,那我估计就要在底层找原因了。
现在还没有加ECC校验
CPU 100MHZ,用for循环等待,简单等待的时间是:
读500 写5000 擦除2500
最初试验时候用了比较长的时间,因为为了先实现功能。但是之后我将时间减少后,发现效率提高并不明显。
同时,你在arm9 2410上写1MB也要10s吗?我觉得那也是挺长的时间了,估计不能满足要求。
现在我就怀疑是不是上层花费的时间太多了,因此想知道曾经做过TFFS的高手们读写的速度怎么样。如果大家都很快的话,那我估计就要在底层找原因了。
共7条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |