A CPU de um ARM Cortex M para durante a auto-programação do flash?


8

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.)


Você tem referência sobre a parada PIC16?
Daniel Grillo

@Wouter Quais? Você já testou, digamos, com uma interrupção totalmente executada na RAM?
Starblue #

2
Ao contrário do que eu comentei antes de ler seus Manuais do Usuário, os chips NXP parecem desativar apenas a interface flash durante a Programação de Aplicativos, portanto, uma interrupção que é executada inteiramente a partir da RAM pode ser possível durante o tempo de apagamento ou gravação do Flash. Mas neste território em grande parte inexplorado, eu poderia, por exemplo, imaginar problemas de tempo quando a interrupção leva um tempo substancial, com consequências para a resistência do Flash.
Wouter van Ooijen

Sim, eles não têm eeprom, mas, para esta situação, alguns Cortex-M, como o ST32, têm um registro de backup no qual você pode salvar suas informações e sobre o PIC16, acho isso interessante. por favor mencione sua fonte sobre o PIC16. (Folha de dados?)
Roh

@ Wouter Sim, o tempo pode ser um problema. Exceto para o LPC8xx, os comandos IAP "Copiar RAM para Flash" tomam a frequência do relógio como parâmetro, portanto, suspeito que eles usem um loop de atraso simples.
starblue

Respostas:


4

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.