阅读:1022回复:0
一个nand flash的怪问题[块设备、ECC相关]
以前的nand flash是通过MS的FAL+FMD来做为一个块设备来加载的,也就是我们看到的residentflash
现在我不用MS的FAL了,我自己实现了一个块设备驱动层,这个块设备驱动已经在SD卡驱动中得到验证,是正确的,用到nand flash上时做了少许修改。 我现在使用的这片nand flash,我能保证他没有坏块,我是通过一个跟MS bootpart.lib中的BP_LowLevelFormat函数同样流程的函数来检测flash的。 但是在通过这个块设备驱动加载nand flash时,当通过DSK_IOControl往flash写一些数据后,再去读的时候,就会出ECC错误。这些数据类似MBR。 我把出ECC错误的这页据记录下来,另外写了个测试程序在DSK_Init中调用,在测试程序中,我把保存的这页数据拿来往nand flash上再写再读时,ECC错误却不存在了,即使在相同的页也不出ECC错误了。 但是OS通过调用DSK_IOControl来写这些数据时,却要出ECC错误 我的测试程序和DSK_IOControl都是通过调用FMD中的驱动来实现对nand flash的操作的 我在检测nand flash是否为坏块的时候也反复的往flash里读写数据,但都不出ECC错误 大家帮我看看该往哪个方向去发现问题症结所在喃 感谢 |
|
|