Não consigo encontrar nenhuma informação confiável sobre isso. Não tenho a especificação completa do hardware do cartão SD / MMC.
É verdade? Meu aplicativo de alto nível não precisa se preocupar com o nivelamento de desgaste ao trabalhar com esses cartões?
EDITAR
Alguém poderia confirmar que o nivelamento de desgaste é garantido pela especificação SD? Quero ter certeza, porque parece que a maioria dos fornecedores faz isso, mas não é exigido pela especificação.
Respostas:
Eu trabalho para uma empresa que costumava ser membro da associação SD, estamos familiarizados com a especificação 2.0 (SDHC). A especificação do cartão SD NÃO possui entrada para o nivelamento do desgaste. Isso depende completamente do fabricante do SD para lidar com isso, se assim o desejar. Vimos que alguns provavelmente o fazem, enquanto outros o fazem (cuidado com os cartões SD baratos baratos). O SDXC pode ter alterado isso para incluir o nivelamento de desgaste, mas não tenho certeza disso. Infelizmente, a única maneira de realmente mostrar isso é colocar as mãos nas especificações oficiais. Você pode encontrá-lo on-line provavelmente, mas a associação de SD realmente deseja que você pague por isso.
Como nota lateral, pegar um cartão de 2 GB e gravá-lo do começo ao fim repetidas vezes tem uma média de 10 TB antes que o cartão esteja morto e não seja mais gravável. Além disso, os cartões SD não informam quando os dados estão ruins, ou seja, não retornam um erro de E / S como o disco rígido de um PC. Isso pode não ser um problema para projetos incorporados, pois 10 TB são MUITOS dados, mas pode ser um fator para alguém.
fonte
É verdade! Os cartões MicroSD contêm um chip flash NAND ligado a um microcontrolador (ARM) encapsulado em algum plástico preto. http://www.bunniestudios.com/blog/?p=898 explica.
No final da publicação seguinte, http://www.bunniestudios.com/blog/?p=918 Bunnie postula que integrar o controlador provavelmente custa menos do que testar o flash antes do tempo.
Citando o manual do produto do cartão SD da SanDisk: "1.9 Nivelamento de desgaste. O nivelamento de desgaste é uma parte intrínseca da funcionalidade de apagamento do cartão SD, usando memória NAND". Você pode ler tudo na folha de dados de um cartão de marca SanDisk .
fonte
Sim, os cartões SD / MMC possuem controladores que usam nivelamento. Caso contrário, você poderá destruir um em questão de minutos com os padrões de gravação incorretos.
Isso é realmente um problema para alguns projetos incorporados. Aparentemente, não há absolutamente nenhuma maneira de saber quais setores podem estar nivelados a qualquer momento; portanto, um ciclo de energia na hora errada pode destruir dados em qualquer lugar do cartão, não importa onde você PENSE que está escrevendo. (não pergunte como eu sei :))
Os cartões SD devem ser usados com um sistema que garanta um desligamento limpo do sistema (ou pelo menos que as gravações possam ser concluídas) ou a perda de dados (eventualmente) resultará.
EDITAR
O problema é que o processo de nivelamento de desgaste está totalmente oculto. QUALQUER setor no disco pode ser movido a qualquer momento (trocado com a página gravada) e, se a energia falhar no meio desse processo, esse setor aleatório pode ser corrompido.
Embora existam maneiras razoavelmente seguras de implementar essa mudança, ela não existe em nenhuma especificação, portanto você não pode confiar que a placa fará isso. Você pode testar uma placa, fazê-la funcionar, o fabricante pode alterar a implementação sem alterar o número da peça e você está ferrado.
No teste, o controlador do meu cartão SD NÃO faz isso de maneira segura.
Posso procurar um cartão SD de "alta confiabilidade" que vi anunciado especificamente para tolerância a falhas de energia ... mas você precisa confiar no fabricante para fazer isso corretamente, e eu não. Eu realmente quero controle direto sobre apagamentos de páginas. Eu ainda estou tentando descobrir isso.
fonte
Qualquer tipo de cartão SD que utilize qualquer tipo de memória flash NAND convencional precisará usar algum tipo de virtualização de setor, pois nenhum dispositivo flash NAND convencional pode suportar o apagamento de setores individuais de 512 bytes e nenhum dispositivo flash NAND convencional de tamanho significativo seria capaz de produzir um desempenho dentro de uma ordem de magnitude que seria marginalmente aceitável se todas as tentativas de gravar um setor exigissem que o dispositivo copiasse todos os setores no bloco de apagamento desse setor (mesmo para a RAM), depois apague o bloco e escreva todos os setores de volta. A maioria das técnicas de virtualização de setor é inerentemente um pouco de nível de desgaste. Eu esperaria que o maior problema de variação entre dispositivos de qualidade e imitações seja o grau em que um dispositivo tenta ativamente nivelar o nivelamento entre blocos, versus simplesmente usando a alocação de blocos pseudo-aleatórios e esperando que isso produza resultados aceitáveis quase uniformes. Na prática, eu esperaria que até mesmo a alocação aleatória / esperança para o melhor fosse adequada na maioria dos casos.
fonte
A Sandisk possui um white paper que explica a lógica de nivelamento de desgaste em seus cartões e fornece estimativas da vida útil do cartão em vários cenários. Resumo executivo: a menos que você esteja martelando o cartão sem parar, ele durará décadas.
fonte
É interessante notar que, apesar disso, muitos dispositivos corrompem os cartões SD e microSD, especialmente os de alta densidade, se a bateria estiver fraca ou o telefone travar / desligar / etc. Suspeito que o problema seja a regulação inadequada da alimentação de tensão, pois isso é bem conhecido em alguns cartões (tosse Ad t / tosse), resultando no fenômeno de um cartão ilegível em certos leitores externos, mas funciona bem na micro variedade fornecida por alguns lojas de informática.
Estou no processo de recuperar um cartão no momento com essa falha. Curiosamente, a maioria dos dados é recuperável, mas alguns setores não são, embora isso mude a cada tentativa. O próprio nivelamento de desgaste pode estar errado? (sim tentei vários leitores, mesma falha!)
fonte
Também teve sucesso "zombar" de cartões zumbis, ou seja, aqueles que não completam um formato ou são somente leitura. Funciona apenas com uma pequena porcentagem, mas são muito mais sensíveis do que a maioria das diretrizes "oficiais" ao efeito.
Um cartão de teste assim tratado durou quatro meses antes de falhar novamente, se não fosse o dispositivo usado para fornecer voltagem ruidosa, a vida útil poderia ter sido mais longa.
fonte