检查一片Flash好坏的流程

检查一片Flash好坏的大致流程


在这里插入图片描述

Homs模块功能就是产生随机数;

NFC模块功能就是对一块Falsh进行一系列操作,比如重启、读写;

RCMP模块功能就是将Homs产生的随机数与从Flash读取出来的随机数数据进行异或比较,然后可以根据实际需要得到错误bit数和错误bit地址;

检查大致过程是这样的

Homs产生随机数,然后通过NFC将随机数数据写入Flash中,再将随机数数据读取出来与Homs原本产生的随机数作比较;

比较用的模块就是RCMP,看看二者数据是否一致,假如Flash品质是完好的,那么二者数据对比结果结果就是一模一样;

但是正常情况下,Flash质量参差不齐,坏的地址会导致对比出来的随机数出现不一致,这个不一致的bit很大可能就是该bit地址坏掉了,只要有比较出不一致的数据,那这块Flash多多少少有一些损坏,只要损坏不是很大,还是可以接着用的。

这时候需要RCMP模块将对比过后坏掉的地址挑选出来,然后通过软件编程,再下次读写的时候,将错误的地址跳过。

Homs产生随机数的原理

写应用层的时候,模块的原理按道理就算不知道耶不影响你开发,但是我好奇心作祟,向IC的同事详细问了该模块的工作原理。

Homs中有种叫LSFR的框架,就是它产生的随机数;

LSFR中一共有8个多项式,LSFR0~LSFR7,每一个多项式用于产生4bit的随机数,那么整一个LSFR一次就产生数据宽度32bit的随机数。

而为了避免固定值,顺利产生随机数,就必须要有种子这东西,通过一个种子初始化出第一个32bit随机数,随后这第一个随机数就会被当做第二个随机数的种子,第二个随机数当做第三个随机数的种子,以此类推,产生一系列随机数。

那么第一个种子又是从哪里来的呢,需要配置种子表。种子表说白了就是一块存放种子数据的SRAM地址,我们只需要自己配置好第一个种子就行了。

而还可以优化的是,从种子表拎出来用的种子,还可以经过一个异或操作,一个种子与一个数值进行异或后才可以被真正使用。

猜你喜欢

转载自blog.csdn.net/weixin_41904238/article/details/120052754