This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我修改startware下的nandflash例程,读、写1个block,然后用CCS的clock功能计时间,测试nandflash的读写速度。
分别对我自己的板子和第三方开发板进行测试。
我的板子用的是东芝的2GB:TH58NVG4S0FBAID,对nandflash例程中nand的block大小等宏定义按照该芯片进行了相应修改。
开发板用的是三星的128GB:S34ML01G200TFI000,就用的nandflash例程的宏定义。
测试程序是基于startware中的nandflash例程,表格中4种测试表示:
1、CPU,即用#define NAND_DATA_XFER_MODE (NAND_XFER_MODE_CPU)。
3、DMA,即用#define NAND_DATA_XFER_MODE (NAND_XFER_MODE_DMA)。
2、4分别在1、3的基础上用
CacheEnableMAR((unsigned int)0xC0001000, (unsigned int)0x08000000);
CacheEnable(L1DCFG_L1DMODE_32K | L1PCFG_L1PMODE_32K | L2CFG_L2MODE_256K);
使能Cache。
测试结果:
我板子的结果:
条件 |
写速率 |
读速率 |
读写一致? |
CPU |
0.59 |
0.54 |
PASS |
CPU+CACHE |
4.24 |
2.75 |
PASS |
DMA |
1.41 |
1.32 |
PASS |
DMA+CACHE |
4.35 |
6.44 |
FAILED |
开发板的结果:
条件 |
写速率 |
读速率 |
读写一致? |
CPU |
0.46 |
0.43 |
PASS |
CPU+CACHE |
3.07 |
2.42 |
PASS |
DMA |
0.83 |
0.80 |
PASS |
DMA+CACHE |
3.07 |
4.87 |
FAILED |
以上测试中,““写速度”只包含写操作的时间,不包含擦除时间。
可以看到,由于芯片的原因,我的板子的速度要快一些。我的板子测试结果与开发板测试结果趋势一致。
我的问题是:
Q1、为何DMA+CACHE读出来的结果和写进去的不一致,是该例程中的nandlib不支持吗?
Q2、我用的是SLC的nand。4.24MB/s写,2.75MB/s读,这样的速度是否合理?
为何用电脑读SD卡,可以达到30MB/s以上的读写速度?
根据上面这个链接,L138对nandflash的写速度为4MB/s左右,读速度为10MB/s左右。
这个链接是在linux下,用JFFS2文件系统读写的,按理来说应该速度比直接读写要慢吧?
为何它的结果是读速度明显高于写速度,而我的测试结果读速度低于写速度?
按理来说是应该读比写快吧。
Q4、我看了nandflash芯片的datasheet,感觉应该更快才对。读写速度的瓶颈,是否是DSP的nandflash控制器?
Q5、TI是否有提供其他的nand驱动库可以使用?
谢谢!
Frank
1,cache需要进行CACHE一致性维护,否则它和DMA一起操作有可能会产生不一致。
2,可能首先于DSP这边的处理速度。
3,不同软件构架,可能效率啥别比较大。
4,
5,还是BSL,不过是由第三方支持的
Hi Denny Yang,
非常感谢回复!
1、cache需要进行CACHE一致性维护,请问这个要怎么做?
2、我测试结果读速度小于写速度,这个结果是否合理?
谢谢!
Frank