Um cartão SDHC tem alguma recuperação de erro de gravação (ECC)?

4

O que acontece se um cartão SDHC recebe um erro de gravação (célula danificada / setor ruim)?

O cartão inteiro será inutilizável (para o lixo, todos os dados gravados nesse setor agora e no futuro serão perdidos)? Ou reescreva o setor (a memória flash fica corrompida ao escrever, então talvez tenha alguma função para verificar se o setor foi gravado com sucesso) para outra e marque a falha como inutilizável, o que será visto como redução de capacidade, mas nenhum dado perdido.

Eu tenho que fazer alguma pesquisa sobre cartões SD em máquinas sem disco.

marc
fonte

Respostas:

2

Em geral, os cartões SD são executados com um sistema de arquivos FAT. Isso detectará e marcará / sinalizará setores defeituosos, de forma que o resultado final não seja perdido, mas a quantidade de espaço disponível no cartão seja reduzida levemente. Não é perfeito, claro. Algumas placas mais novas têm código de correção de erros embutido (ECC) que faz um trabalho semelhante em um nível mais baixo, portanto, em teoria, deveria ser menos provável perder informações sendo gravadas em um cartão. Ainda é possível, apenas menos provável.

richard
fonte
2

O modo como o flash NAND funciona é fornecendo um número de "eraseblocks" - cada "apagador" tem um número de "páginas". Normalmente, você está vendo 128 eraseblocks de Kbyte divididos em 64 páginas de 2 Kbytes. Cada página pode ser gravada, alterando bits de 1 para 0. Se você quiser alterar qualquer bit de 0 para 1, você deve emitir um comando erase para todo o bloqueio de texto que redefine todos os bits para 1 (a menos que o bloco seja usado ).

Escrever não é perfeito e alguns bits podem não mudar de 1 para 0, ou virar sozinho.

Há também uma "área fora da banda", ou uma página extra, por bloqueio de texto. Lá, códigos ECC podem ser escritos, e é isso que é usado para SLC instantâneo. Para MLC flash, eles usam BCH códigos que podem recuperar mais bits.

Internamente, é assim que as coisas funcionam. Os cartões SD não fornecem acesso NAND bruto, mas passam por um microcontrolador interno que é responsável pelo nivelamento de desgaste e por todas essas coisas boas. O dispositivo host nunca vê o NAND bruto, mas apenas um dispositivo de bloco. Mas SD usa ECC ou BCH Até onde sei .

LawrenceC
fonte