Discutirei a programação da memória flash, mas muito material será semelhante às EEPROMs (ROM programáveis eletricamente apagáveis), já que a memória flash foi derivada das EEPROMs em meados dos anos 80. Conforme descrito abaixo, do ponto de vista físico, o estado padrão é 1. Mas o mais importante, eu vou explicar por que é um estado padrão - você pode não apenas arbitrariamente programa em cima do que já está programado a partir da última vez.
O flash NOR quase sempre é escolhido para o flash do programa, pois a interface é mais adequada para colocar os dados no mapa de memória do microcontrolador - barramentos de endereço e dados completos imitam a RAM e permitem acesso aleatório a qualquer local. Os dados podem ser lidos uma palavra de cada vez, onde uma palavra é definida como a largura dos dados do microcontrolador, normalmente 8, 16 ou 32 bits. O flash NAND, por outro lado, foi desenvolvido para substituir os discos rígidos e funciona sequencialmente.
No entanto, a programação fica um pouco mais complicada. Como já mencionado, o estado padrão do flash NOR e de outras memórias não voláteis, como flash NAND, EEPROMs e até EPROMs, é uma lógica 1. Você não pode programar 1s nesses dispositivos, é possível programar apenas 0s. Por exemplo, se você possui um byte contendo 0x0123 e deseja alterá-lo para 0x3210, não pode fazê-lo diretamente como escrever sobre um byte na RAM.
Em vez disso, os bits na memória devem ser apagados, o que os coloca no estado padrão 1 já mencionado. Isso só pode ser feito em blocos, não em palavras. No Microchip PIC32, com o qual trabalhei mais recentemente, o tamanho mínimo do bloco que pode ser apagado é de 4096 bytes. Portanto, se você quiser alterar apenas uma palavra (32 bits), precisará ler o 4K de memória, apagar o bloco e gravar o 4K de memória novamente para piscar, mas incluindo o novo valor de 32 bits, conforme necessário. Essa exclusão pode levar algum tempo - uma boa parte de um segundo.
A seguir, é apresentada uma imagem de uma célula de memória flash. O Flash armazena os dados removendo ou colocando elétrons no portão flutuante. Quando elétrons estão presentes no portão flutuante, nenhuma corrente flui através do transistor, indicando um 0. Quando os elétrons são removidos do portão flutuante, o transistor começa a conduzir, indicando um 1. (Isso é por convenção - poderia ter sido o de outra maneira, mas exigiria inversores em todas as linhas de dados.)
Apague a operação. O estado padrão das células de memória flash (uma célula flash NOR de nível único) é 1 porque os portões flutuantes não carregam cargas negativas. A exclusão de uma célula de memória flash (redefinindo para 1) é obtida aplicando uma tensão na fonte e no portão de controle (linha da palavra). A tensão pode estar na faixa de -9V a -12V. E também aplique cerca de 6V à fonte. Os elétrons no portão flutuante são arrancados e transferidos para a fonte por tunelamento quântico . Em outras palavras, os elétrons passam do túnel do portão flutuante para a fonte e o substrato.
Como o apagamento utiliza altas tensões, o apagamento em blocos requer menos área da matriz. Portanto, as tensões só podem ser aplicadas a linhas inteiras de transistores por vez.
Para escrever, uma célula flash NOR pode ser programada ou definida como 0 pelo procedimento a seguir. Durante a gravação, uma alta tensão de cerca de 12V é aplicada ao portão de controle (linha da palavra). Se uma alta tensão em torno de 7V é aplicada à linha de bits (terminal de drenagem), um 0 é armazenado na célula. O canal está agora ativado, para que os elétrons possam fluir da fonte para o dreno. A corrente de drenagem da fonte é suficientemente alta para fazer com que alguns elétrons de alta energia pulem através da camada isolante para o portão flutuante através de um processo chamado injeção de elétrons quentes.
Para a leitura, uma voltagem de cerca de 5V é aplicada à porta de controle e de cerca de 1V ao dreno. O estado da célula de memória é distinguido pela corrente que flui entre o dreno e a fonte.
A vida útil da memória não volátil é medida em termos de ciclos de apagamento. A desvantagem da NOR é que o número de ciclos de apagamento é cerca de 1/10 do da memória NAND. Muitas versões do PIC32 permitem que a memória flash seja atualizada apenas 1000 vezes, muito menos do que os 100.000 ciclos de apagamento típicos para EEPROMs.
Portanto, não é tão importante se os designers criaram o estado padrão como 1 ou 0 (eles escolheram o valor que permitia a implementação mais fácil); o importante é que é preciso apagar um bloco de flash primeiro (o que leva tempo) e depois reprogramar o bloco inteiro (mesmo que uma única palavra esteja sendo alterada (o que requer uma quantidade substancial de RAM).
Esse apagamento em bloco do dispositivo remonta às primeiras EPROMs (ROMs programáveis apagáveis), que procediam às EEPROMs. O código foi programado em chips (como o 16KB 27128) e colocado em soquetes. Esses chips tinham uma pequena janela no topo que permitia que a luz brilhasse no dado. Quando o programa teve que ser alterado, os chips foram colocados em uma borracha UV por 20 minutos ou mais, o que apagaria todo o chip. Em seguida, o chip seria programado com o novo programa.
Algumas EEPROMs precisam apagar blocos de memória antes da programação; outros permitem escrever um byte de cada vez (o controlador EEPROM na verdade apaga o byte primeiro e os programas).