A maioria dos MCUs do ARM Cortex M não possui memória EEPROM. Em vez disso, os dados persistentes podem ser gravados na mesma memória flash que também mantém o programa.
- Qual é o estado da CPU durante esse processo de apagamento / gravação?
- Isso para? Mantém a operação normal?
- O comportamento da CPU depende da família MCU específica (por exemplo, STM32, Kinetis L) usada?
(Para algumas pessoas, isso pode parecer uma pergunta estúpida, mas o PIC16 da Microchip interrompe a CPU em até 40ms durante a auto-programação em flash.)
Respostas:
O comportamento do núcleo depende da implementação. O Flash não faz parte do núcleo do ARM e, como tal, todo fornecedor o implementa de maneira diferente. Normalmente, durante o processo de apagar / gravar, um seria executado a partir da RAM, e a execução não deve ser afetada.
No STM32, acredito que as leituras do flash stall enquanto os ciclos de apagamento / gravação estão em andamento. Isso faria com que a execução do núcleo parasse até a operação ser concluída. Com algumas das configurações do flash, acredito que você pode continuar a executar / ler o flash e ele só será interrompido quando você acessar a parte do flash que está apagando / programando.
Eu usei outros Cortex M onde você deve executar a partir da RAM enquanto modifica o conteúdo do flash, caso contrário, você encontrará uma falha de barramento (e provavelmente uma falha no sistema se os manipuladores de falha de barramento / falha de disco rígido estiverem em flash). Alguns micros com grandes quantidades de flash o implementam como duas matrizes de flash independentes, e geralmente permitem acesso total a um banco enquanto operam no outro.
Você precisaria consultar a documentação da sua parte específica para ver as limitações de execução ao modificar o conteúdo do flash.
fonte