Come posso testare la RAM per corruzione dei dati su un sistema basato su ARM?


20

Ho un dispositivo incorporato. È basato su ARM, con Linux 2.6.31 e 256 MB di RAM.

Volevo avere alcune idee / suggerimenti su qual è il modo più efficace per testare la RAM del dispositivo per corruzione dei dati. Esiste un test / software che qualcuno può suggerire?

Nota:

Ho memtester ora. L'ho preso dopo il suggerimento di Ulrich Dangel (sotto).

Adesso mi sono anche mtestinstallato da Uboot.

Qualche altro test / approccio che potrei usare?


2
Si noti che questa è una CPU ARM, non una x86; sfortunatamente, Memtest86 + non funzionerà in questo caso.
Renan,

Ho un memtester. Qualche altro test / approccio che potrei usare?
Ankur Agarwal,

1
@abc cos'altro vuoi? penso che tu abbia qualche altro problema se questo metodo non produrrà il risultato che desideri. mtestfondamentalmente fa lo stesso di memtest86 +. Fondamentalmente hai diverse opzioni, esegui il test di memoria dal tuo sistema operativo come Linux (questo sarebbe memtesterma potresti avere problemi a testare l'intera regione fisica). Puoi anche usare alcuni mini-sistemi (uboot) per testare la tua memoria ( mtest)
Ulrich Dangel,

Il processore è di Marvell? Ho la stessa domanda su un processore di rete Marvell, che è esattamente la stessa configurazione (ARM / 256 MB di RAM / Linux 2.6.31) della tua.
Tim Wu,

Ecco una domanda di overflow dello stack simile . Tutti i test qui possono trovare alcuni problemi. Non troveranno tutti i problemi e, in effetti, questo è molto difficile da fare. Solo ottimi strumenti e modelli di simulazione delle schede possono verificarlo; non software. In tal caso, l'unico problema sarà un chip DDR (o eventualmente un controller host) e memtester e mtest potrebbero trovarli. Tuttavia, se dicono che tutto va bene; non escludere al 100% un problema DDR.
rumore senza

Risposte:


21

La soluzione generale per testare la memoria è scrivere un modello specifico come 0xFFFFFFFFnella memoria e leggerlo in seguito e confrontare il risultato. Ovviamente puoi e dovresti modificare lo schema per scoprire i problemi. Alcune soluzioni come memtest86+anche generare schemi casuali e cambiare la direzione che usano per scrivere in memoria. Per informazioni più dettagliate sugli algoritmi utilizzati in memtest86 dai un'occhiata alla loro pagina tecnica . Tutte le soluzioni fornite in questo post utilizzano sostanzialmente la stessa idea di base.

Se vuoi eseguire il tuo test da Linux (hai menzionato Linux nel tuo post) dai un'occhiata a memtester e alla suite memtest che entrambi dovrebbero funzionare con arm. Per iniziare, dovresti usare memtester perché sostanzialmente fa esattamente quello che vuoi.

Mettere alla prova la tua memoria da Linux presenta alcuni svantaggi in quanto non puoi davvero testare tutta la tua memoria fisica poiché anche il kernel ha bisogno di memoria. Per testare la memoria con uboot (è molto più piccolo del kernel linux) dai un'occhiata al comando mtest integrato . Consente di specificare l'intervallo di indirizzi, il modello e l'iterazione. Con mtest dovresti essere in grado di eseguire test piuttosto approfonditi senza affidarti a un sistema operativo. Devi solo assicurarti di utilizzare intervalli di memoria validi, altrimenti potrebbe essere possibile sovrascrivere l' ubootarea di memoria.

Se i test forniti da mtest non bastano, puoi ovviamente estendere uboot e integrare ulteriori funzionalità di test della memoria in uboot.


OK ho un memtester. Qualche altro test che posso fare?
Ankur Agarwal,

1
Qualche altro approccio di test che potrei provare? Sto pensando di testare la RAM da Uboot.
Ankur Agarwal,

@abc ok ho aggiunto una nota sul comando uboots mtest
Ulrich Dangel,

1
Ho iniziato a usare i comandi uboot e ora vedo che il comando uboot della memoria viene bloccato nel mezzobist > md.w 0x00000023 10 00000023:
Ankur Agarwal

u-boot supporta due mtest diversi. Compilare con CONFIG_SYS_ALT_MEMTEST per un test di memoria più esteso rispetto al valore predefinito.
m__
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.