Comment puis-je tester la RAM pour la corruption de données sur un système ARM?

20

J'ai un appareil intégré. Il est basé sur ARM, avec Linux 2.6.31 et dispose de 256 Mo de RAM.

Je voulais obtenir des idées / conseils sur le moyen le plus efficace de tester la RAM de l'appareil pour détecter la corruption des données. Existe-t-il un test / logiciel que quelqu'un puisse suggérer?

Remarque:

J'ai memtester maintenant. Je l'ai obtenu après suggestion d'Ulrich Dangel (ci-dessous).

J'ai également mtestmis en place à partir du uboot maintenant.

D'autres tests / approches que je pourrais utiliser?

Ankur Agarwal
la source
2
Notez qu'il s'agit d'un processeur ARM, pas d'un processeur x86; malheureusement, Memtest86 + ne fonctionnera pas dans ce cas.
Renan
Je suis memtester. D'autres tests / approches que je pourrais utiliser?
Ankur Agarwal
1
@abc que voulez-vous d'autre? Je pense que vous avez d'autres problèmes si ces méthodes ne produisent pas le résultat souhaité. mtestfait essentiellement la même chose que memtest86 +. Vous avez essentiellement différentes options, exécutez le test de mémoire à partir de votre système d'exploitation comme linux (ce serait le cas, memtestermais vous pourriez avoir des problèmes pour tester toute la région physique). Vous pouvez également utiliser un mini système (uboot) pour tester votre mémoire ( mtest)
Ulrich Dangel
Le processeur est-il de Marvell? J'ai la même question sur un processeur réseau marvell, qui est exactement la même configuration (ARM / 256 Mo de RAM / Linux 2.6.31) que la vôtre.
Tim Wu
Voici une question de débordement de pile similaire . Tous les tests ici peuvent trouver des problèmes. Ils ne trouveront pas tous les problèmes et en fait, c'est très difficile à faire. Seuls de très bons outils de simulation de cartes et de modélisation peuvent le vérifier; pas un logiciel. Si cela est fait, le seul problème sera une puce DDR (ou éventuellement un contrôleur hôte) et memtester et mtest peuvent les trouver. Cependant, s'ils disent que tout va bien; n'excluez pas à 100% un problème DDR.
bruit sans art

Réponses:

21

La solution générale pour tester la mémoire est d'écrire un modèle spécifique comme 0xFFFFFFFFdans votre mémoire et de le lire ensuite et de comparer le résultat. Vous pouvez et devez bien sûr modifier le schéma pour découvrir les problèmes. Certaines solutions comme memtest86+génèrent également des modèles aléatoires et changent la direction qu'ils utilisent pour écrire dans la mémoire. Pour plus d'informations sur les algorithmes utilisés dans memtest86, consultez leur page technique . Toutes les solutions fournies dans cet article utilisent essentiellement la même idée sous-jacente.

Si vous souhaitez exécuter votre test à partir de Linux (vous avez mentionné Linux dans votre article), jetez un œil à memtester et à la suite memtest qui devraient fonctionner avec arm. Pour commencer, vous devez utiliser memtester car il fait exactement ce que vous voulez.

Tester votre mémoire sous Linux présente certains inconvénients, car vous ne pouvez pas vraiment tester toute votre mémoire physique car le noyau a également besoin de mémoire. Pour tester la mémoire avec uboot (elle est beaucoup plus petite que le noyau linux) jetez un œil à la commande mtest intégrée . Il vous permet de spécifier la plage d'adresses, le modèle et l'itération. Avec mtest, vous devriez pouvoir effectuer des tests assez poussés sans dépendre d'un système d'exploitation. Vous devez simplement vous assurer que vous utilisez des plages de mémoire valides, sinon il est possible que vous écrasiez la ubootrégion de la mémoire.

Si les tests fournis par mtest ne suffisent pas, vous pouvez bien sûr simplement étendre uboot et intégrer des fonctionnalités de test de mémoire supplémentaires dans uboot.

Ulrich Dangel
la source
OK je suis memtester. Tout autre test que je peux faire?
Ankur Agarwal
1
D'autres approches de test que je pourrais essayer? Je pense à tester la RAM depuis uboot.
Ankur Agarwal
@abc ok j'ai ajouté une note sur la commande uboots mtest
Ulrich Dangel
1
J'ai commencé à utiliser les commandes uboot et maintenant je vois que la commande uboot d'affichage de la mémoire est bloquée au milieubist > md.w 0x00000023 10 00000023:
Ankur Agarwal
u-boot prend en charge deux tests différents. Compilez avec CONFIG_SYS_ALT_MEMTEST pour un test de mémoire plus étendu que celui par défaut.
m__