Como você testaria (até a destruição) a vida útil de um cartão microSD?

Como você testaria (até a destruição) a vida útil de um cartão microSD?

Estou usando cartões microSD em um produto e tive algumas falhas devido a setores defeituosos. Ainda tenho mais cartões SD do mesmo lote e queria ver se poderia testá-los até a destruição (ou seja, até que um setor se desgaste) e medir quantos dados totais foram gravados no cartão antes disso.

Como posso fazer isso?

Obrigado

Responder1

Uma técnica simples seria usar uma ferramenta segura para apagar disco. Essas ferramentas gravam uma sequência de dados em cada local da unidade. Isso testará todos os setores da unidade. Você pode executar essas ferramentas iterativamente para garantir que o disco esteja bem limpo. Esta limpeza consumirá a vida útil de um cartão SD. Se você monitorar o número de passagens executadas antes da falha da placa, saberá quantos dados foram gravados no disco. Dito isto, este é o melhor caso para a unidade, pois as gravações são distribuídas por todo o disco.

O pior caso seria escrever repetidamente no mesmo setor até falhar. Isso resultaria na menor quantidade de dados gravados antes que o cartão começasse a falhar. Se você gravar um único arquivo e excluí-lo e depois gravá-lo novamente repetidamente, isso deverá resultar em falha prematura do cartão com a menor quantidade de dados gravados. Isso pressupõe que a placa não seja inteligente e não remapeie setores no flash da mesma forma que um SSD faz.

Ambos os itens acima podem ser realizados usando o comando dd no Linux ou em um live CD do Linux.

Supondo que o dispositivo seja /dev/sdx, o seguinte deve funcionar.

i=0
while :
do
  dd if=/dev/urandom of=/dev/sdx bs=1024 count=1000
  if [ $? != 0 ];then break;fi
  let i=i+1
  echo $i
done

Isso não é perfeito, mas é o que você consegue sem codificar o seu próprio. Ele gravará 1 MB de dados aleatórios no disco para cada iteração. Quando dd começar a dar erro, ele será encerrado e você saberá quantas iterações passaram antes de falhar. A grande falha aqui é que os dados são aleatórios. Se os bits forem os mesmos de antes, eles não poderão ser gravados pelo flash e, como tal, não poderão ser exercidos. Assumindo uma distribuição perfeita, o resultado será o dobro do número real de gravações necessárias para falhar.

Uma solução mais perfeita envolveria iterar entre zeros e uns ou usar tabuleiros de damas alternados. Sem um dispositivo /dev/one no Linux, isso requer uma solução mais complicada do que acho que é garantida aqui.

informação relacionada