Como posso testar a RAM quanto à corrupção de dados em um sistema baseado em ARM?

20

Eu tenho um dispositivo incorporado. É baseado em ARM, com Linux 2.6.31 e tem 256 MB de RAM.

Eu queria ter algumas idéias / dicas sobre qual é a maneira mais eficaz de testar a RAM do dispositivo quanto a corrupção de dados. Existe um teste / software que alguém possa sugerir?

Nota:

Eu tenho memtester agora. Eu o recebi após sugestão de Ulrich Dangel (abaixo).

Eu também mtestconfigurei a partir do uboot agora.

Quaisquer outros testes / abordagens que eu possa usar?

Ankur Agarwal
fonte
2
Observe que esta é uma CPU ARM, não uma x86; infelizmente, o Memtest86 + não funcionará neste caso.
Renan
Eu tenho memtester. Quaisquer outros testes / abordagens que eu possa usar?
Ankur Agarwal
11
@abc o que mais você quer? Eu acho que você tem outros problemas se esse método não produzir o resultado desejado. mtestbasicamente faz o mesmo que o memtest86 +. Você basicamente tem opções diferentes, execute o teste de memória do seu sistema operacional como linux (isso seria, memtestermas você pode ter problemas para testar toda a região física). Você também pode usar alguns mini system (uboot) para testar sua memória ( mtest)
Ulrich Dangel
O processador da Marvell? Eu tenho a mesma pergunta em um processador de rede maravilhoso, que é exatamente a mesma configuração (ARM / 256MB RAM / Linux 2.6.31) que a sua.
Tim Wu
Aqui está uma pergunta semelhante ao estouro de pilha . Todos os testes aqui podem encontrar alguns problemas. Eles não encontrarão todos os problemas e, de fato, isso é muito difícil de fazer. Somente ferramentas e modelagem de simulação de placa muito boas podem verificar isso; não software. Se isso for feito, o único problema será um chip DDR (ou possivelmente um controlador host) e o memtester e o mtest poderão encontrá-los. No entanto, se eles dizem que está tudo bem; 100% não descartam um problema de DDR.
ruído artless

Respostas:

21

A solução geral para testar a memória é escrever um padrão específico como 0xFFFFFFFFa sua memória, ler depois e comparar o resultado. Você pode e deve, é claro, alterar o padrão para descobrir problemas. Algumas soluções, como memtest86+também geram padrões aleatórios e alteram a direção que eles usam para gravar na memória. Para informações mais detalhadas sobre os algoritmos usados ​​no memtest86, consulte a página técnica . Todas as soluções fornecidas neste post estão usando basicamente a mesma ideia subjacente.

Se você deseja executar seu teste no Linux (você mencionou o Linux em seu post), dê uma olhada no memtester e no pacote memtest, que ambos devem funcionar com arm. Para começar, você deve usar o memtester , pois basicamente faz exatamente o que deseja.

Testar sua memória no Linux tem algumas desvantagens, como você realmente não pode testar toda a sua memória física, pois o kernel também precisa de memória. Para testar a memória com o uboot (é muito menor que o kernel do linux), dê uma olhada no comando mtest integrado . Permite especificar o intervalo de endereços, padrão e iteração. Com o mtest, você poderá realizar testes bastante extensos sem depender de um sistema operacional. Você só precisa verificar se está usando intervalos de memória válidos, caso contrário, pode ser que você substitua a ubootregião da memória.

Se o teste fornecido pelo mtest não for suficiente, é claro que você pode apenas estender o uboot e integrar recursos adicionais de teste de memória no uboot.

Ulrich Dangel
fonte
OK, eu tenho memtester. Algum outro teste que eu posso fazer?
Ankur Agarwal
11
Alguma outra abordagem de teste que eu poderia tentar? Estou pensando em testar a RAM do uboot.
Ankur Agarwal
@abc ok i acrescentou uma nota sobre uboots Mtest comando
Ulrich Dangel
11
Comecei a usar comandos Uboot e agora estou vendo que comando display memória uboot fica preso no meiobist > md.w 0x00000023 10 00000023:
Ankur Agarwal
O u-boot tem suporte para dois mtest diferentes. Compile com CONFIG_SYS_ALT_MEMTEST para um teste de memória mais extenso que o padrão.
m__