2440Nand vs DMA速度提升4倍,估计还有提升空间
[复制链接]
本帖最后由 lzwml 于 2014-12-18 08:20 编辑
平台:TQ2440开发板、Nand_2Gb_S34ML02G(每页大小2048Byte),不使用DMA传输速率3MB/S,使用DMA目前最大速率13.79MB/S 不使用DMA方式读取 不使用DMA方式写入 采用DMA(模式——SERVMODE:0 = 突发4、DSZ:10 = 字) 采用DMA(模式——SERVMODE:1 = 单次、DSZ:00 = 字节) 对上面数据的分析: 根据我以前发的帖子《405MHz2440没用DMA读取Nandflash速度只有22K,正常吗》,帖子有示波器截图。 ************************************************************** 下图是用CAD画出我对本次实验的理解: 第1行:不使用DMA方式1us传送4Byte 第2行:使用DMA方式,收到第3行的突发脉冲,每个突发脉冲执行1次4Byte传输。
图中可知传送1Byte耗时20ns,与数据手册给出的25ns吻合,但是当初由于未使用DMA模式,导致虽然Nand传输4Byte只要80ns,但是一条指令buf = rNFDATA()却耗时约600ns,一个for循环执行buf=rNFDATA()耗时也就达到2~3uS,当中有很多的空闲区域未被利用。 原先我期望DMA模式能把空闲区域利用起来,但实验结果却不太理想(可能设置参数不对)。 2440的DMA有单突发模式和4次连续突发模式,这也就是为什么本次实验DMA方式比普通方式块4倍的原因。如果采用单突发模式,速率上其实还不如普通不用DMA方式,唯一的优势,采用DMA中断解放CPU干预。 疑问: 我没有仔细阅读2440芯片手册,不知道哪个地方能修改能缩小DMA空闲区域的间隔(除非2440架构就定死,空闲区域必须那么长)。 如果能再利用这段空间,速度应该还能提高2倍(26MB/S) 有没有大神指导怎么设置呢????请赐教
|