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.

关于TMS570LS3137 NORFLASH ECC问题

Other Parts Discussed in Thread: TMS570LS3137

您好,TMS570LS3137这款芯片支持NORFLASH的ECC功能,我想问的是,如果NORFLASH发生了ECC错误,软件是否能将正确是数据写回NORFLASH空间呢?即NORFLASH如何能够执行写操作呢?

  • 你好。

    TMS570LS3137的ECC功能只适用于片内的Flash,RAM和EEPROM。

    用EMIF扩展的外部SDRAM,SRAM,Flash都不支持ECC。

  • 您好。

    ECC可以纠一检二,如果片内FLASH出现ECC1bit错误,如何去纠正呢?即如何能将正确的数据回写到norflash中呢?

  • 片内Flash出现1位错误时,CPU在取到数据后会根据ECC自动把数据纠正过来,不会写回Flash中(Flash也没有办法直接写回)。

    TMS570的ECC逻辑是在CPU内部做的,所以可以保证CPU获取到的数据的正确性。

  • 您好,片内FLASH出现1bit错误时,虽然CPU能够自动纠正,但是不会写回FLASH,那么软件在检测到1比特错误的时候,是否可以将正确数据写回flash呢?

  • ECC校验和纠错都是硬件实现的,不需要软件干预。对于1Bit的错误,CPU获取到的数据都是纠正后的,所以从数据本身,软件是检测不到这样的错误的。

    当然,软件可以通过ECC的相关寄存器,定位到这个错误的来源,然后关闭ECC功能,再读取数据时就会读到错误的数据了。

  • 您好,可能是我表达的有问题。由于ECC1比特错误硬件不回写,所以我想通过软件来实现这个回写。软件可以初始化ESM模块,通过中断的方式知道什么时候发生了ECC的1比特错误,如果是片内RAM的话,软件可以直接从错误发生地址将数据读出来,然后再将读出来的数据回写到错误发生地址,相当于就纠正了这个数据的1比特错误,现在我想问的是如果是片内FLASH空间的话,该如何将这个正确数据回写呢?

  • 首先,Flash中的1Bit的错误,对于CPU来讲,每一次读取到的数据能自动纠正过来,我觉得没有必要去纠正它。

    如果真的想要纠正,那么就要擦掉所在的那一个Sector的所有数据,然后再重新写入。