Le processus de vérification si un morceau de Flash est bon ou mauvais

Le processus général de vérification si un morceau de Flash est bon ou mauvais


insérez la description de l'image ici

La fonction du module Homs est de générer des nombres aléatoires ;

La fonction du module NFC est d'effectuer une série d'opérations sur un morceau de Flash, comme le redémarrage, la lecture et l'écriture ;

La fonction du module GRC est de comparer XOR le nombre aléatoire généré par Homs avec les données de nombre aléatoire lues à partir de Flash, puis d'obtenir le mauvais numéro de bit et la mauvaise adresse de bit en fonction des besoins réels ;

Le processus d'inspection générale est comme ceci

Homs génère un nombre aléatoire, puis écrit les données de nombre aléatoire dans Flash via NFC, puis lit les données de nombre aléatoire et les compare avec le nombre aléatoire d'origine généré par Homs ;

Le module utilisé pour la comparaison est GRC, pour voir si les deux données sont cohérentes, si la qualité Flash est intacte, alors le résultat de la comparaison des données entre les deux est exactement le même ;

Mais dans des circonstances normales, la qualité de Flash est inégale et les mauvaises adresses entraîneront des incohérences dans les nombres aléatoires comparés. Ce bit incohérent est probablement dû au fait que l'adresse du bit est cassée. Flash est plus ou moins endommagé, tant que les dommages n'est pas trop grand, il peut toujours être utilisé.

À ce stade, le module de la GRC doit sélectionner l'adresse cassée après la comparaison, puis via la programmation logicielle, la mauvaise adresse sera ignorée lors de la lecture et de l'écriture la prochaine fois.

Le principe de Homs générant des nombres aléatoires

Lors de l'écriture de la couche application, même si vous ne connaissez pas le principe du module, cela n'affectera pas votre développement, mais j'étais curieux et j'ai demandé aux collègues d'IC ​​le principe de fonctionnement du module en détail.

Il existe un cadre appelé LSFR à Homs, qui est le nombre aléatoire qu'il génère ;

Il y a un total de 8 polynômes dans LSFR, LSFR0 ~ LSFR7, chaque polynôme est utilisé pour générer un nombre aléatoire de 4 bits, puis le LSFR entier génère un nombre aléatoire avec une largeur de données de 32 bits une fois.

Afin d'éviter les valeurs fixes et de générer des nombres aléatoires en douceur, il est nécessaire d'avoir une graine.Une graine est utilisée pour initialiser le premier nombre aléatoire de 32 bits, puis le premier nombre aléatoire sera utilisé comme graine du second nombre aléatoire. Le deuxième nombre aléatoire est utilisé comme graine pour le troisième nombre aléatoire, et ainsi de suite, pour générer une série de nombres aléatoires.

Alors, d'où vient la première graine ? La table de graines doit être configurée. Pour le dire franchement, la table de graines est une adresse SRAM pour stocker les données de graines, nous n'avons qu'à configurer nous-mêmes la première graine.

Ce qui peut également être optimisé, c'est que les graines utilisées à partir de la table de graines peuvent également subir une opération XOR, et une graine et une valeur peuvent être XOR avant de pouvoir être réellement utilisées.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41904238/article/details/120052754
conseillé
Classement