您好,TMS570LS3137这款芯片支持NORFLASH的ECC功能,我想问的是,如果NORFLASH发生了ECC错误,软件是否能将正确是数据写回NORFLASH空间呢?即NORFLASH如何能够执行写操作呢?
yuyin tan:
回复 Jay:
您好。
ECC可以纠一检二,如果片内FLASH出现ECC1bit错误,如何去纠正呢?即如何能将正确的数据回写到norflash中呢?
Jay:
回复 yuyin tan:
片内Flash出现1位错误时,CPU在取到数据后会根据ECC自动把数据纠正过来,不会写回Flash中(Flash也没有办法直接写回)。
TMS570的ECC逻辑是在CPU内部做的,所以可以保证CPU获取到的数据的正确性。
yuyin tan:
回复 Jay:
您好,片内FLASH出现1bit错误时,虽然CPU能够自动纠正,但是不会写回FLASH,那么软件在检测到1比特错误的时候,是否可以将正确数据写回flash呢?
Jay:
回复 yuyin tan:
ECC校验和纠错都是硬件实现的,不需要软件干预。对于1Bit的错误,CPU获取到的数据都是纠正后的,所以从数据本身,软件是检测不到这样的错误的。
当然,软件可以通过ECC的相关寄存器,定位到这个错误的来源,然后关闭ECC功能,再读取数据时就会读到错误的数据了。
yuyin tan:
回复 Jay:
您好,可能是我表达的有问题。由于ECC1比特错误硬件不回写,所以我想通过软件来实现这个回写。软件可以初始化ESM模块,通过中断的方式知道什么时候发生了ECC的1比特错误,如果是片内RAM的话,软件可以直接从错误发生地址将数据读出来,然后再将读出来的数据回写到错误发生地址,相当于就纠正了这个数据的1比特错误,现在我想问的是如果是片内FLASH空间的话,该如何将这个正确数据回写呢?
Jay:
回复 yuyin tan:
首先,Flash中的1Bit的错误,对于CPU来讲,每一次读取到的数据能自动纠正过来,我觉得没有必要去纠正它。
如果真的想要纠正,那么就要擦掉所在的那一个Sector的所有数据,然后再重新写入。