posso escrever em uma página escrita anteriormente, se evitar as áreas já escritas?
Se eu entender p. 16 da folha de dados corretamente, está dizendo: Com esse chip específico, você não deve gravar em uma página previamente escrita, mesmo se evitar as áreas já gravadas.
detalhes
A folha de dados do chip de memória flash SST25VF064C na p. 16 diz "A instrução de programa da página programa até 256 bytes de dados na memória. O endereço da página selecionado deve estar no estado apagado (FFH) antes de iniciar a operação do programa da página".
Suponho que, portanto, "A página selecionada inteira deve estar no estado apagado (todos os bytes na página FFh) antes de iniciar uma operação do Programa de Página". A SST ou a Microchip divulgou alguma documentação que esclareça essa sentença irritantemente ambígua?
Na minha experiência, o fabricante de todos os chips flash MLC e de alguns chips flash SLC mais recentes exige que, uma vez que uma página tenha sido escrita, a página precise ser apagada antes que a página seja escrita novamente, mesmo que você queira alterar apenas 1 bit para um 0 bit. (Isso é chamado de "regra de gravação única" no artigo do YAFFS .)
Na minha experiência, todos os chips flash antigos permitem alterar qualquer bit de 1 para 0 bit sem um ciclo de apagamento, mesmo que esse bit esteja em uma página ou mesmo em um byte que já tenha outros bits programados em zero - um a página do flash pode ser programada várias vezes entre as apagadas. (Isso é chamado de "gravação múltipla" no artigo do YAFFS).
A folha de dados do fabricante é uma promessa condicional que o fabricante faz para você. Contanto que você siga todas as recomendações da folha de dados, o fabricante promete que o chip funcionará conforme especificado. Suspeito que se você programar uma página escrita anteriormente, evitando as áreas já gravadas, há uma boa chance de que uma leitura imediata possa fornecer os dados que você espera - os bytes recém-gravados são os valores que você acabou de escrever, e os outros bytes provavelmente não são alterados. No entanto, como isso não segue as recomendações da folha de dados, você não pode mais confiar em todas as promessas da folha de dados. Eu ouço rumores de que essa atividade não sancionada faz com que o tempo e a resistência de retenção de dados sofram, devido a distúrbios no programa, superprogramação, interceptação de carga, efeitos semelhantes ao martelo de linha DRAM , etc.
"O esquema de uso de memória influencia a taxa de erro de bits. Programação de páginas parciais, programação não seqüencial de páginas dentro do bloco, leitura excessiva por bloco sem apagar, bem como número não igual de operações de leitura em um único bloco aumenta o número de leituras perturbar erros ". - Michal Jedrak.
"Memória Flash NAND em sistemas embarcados".
"O distúrbio do programa ocorre quando um bit é programado involuntariamente de" 1 "para" 0 "durante um evento de programação de página. Esse erro de bit pode ocorrer na página que está sendo programada ou em outra página do bloco. o bloco durante a programação da página pode fazer com que uma pequena quantidade de corrente entre nas células de memória próximas. Tentativas repetidas de programação parcial da página continuarão agravando essa condição. " - Douglas Sheldon e Michael Freie.
"Perturbar testes em memórias flash" . p. 8, 9.
"O distúrbio do programa acontece quando um bit é programado acidentalmente (1 a 0) durante uma operação de programação. ... Essa condição é agravada pela programação aleatória no bloco e pela aplicação de várias gravações parciais nas páginas."
"Yaffs NAND flash mitigação de falhas"