Outro dia no trabalho, alguém estava perguntando how much ‘executable’ flash memory we need
. Não é possível executar com toda a memória flash?
Se eu estiver errado, como a memória flash executável difere da memória flash não executável?
EDIT Isso tem a ver com sistemas embarcados. Estamos projetando um novo sistema no trabalho e estamos escolhendo um processador. Um requisito que surgiu foi quanta memória precisávamos. A citação acima foi relativa a um esclarecimento sobre esse requisito.
memory
components
Mike
fonte
fonte
Respostas:
Não, não é possível executar com toda a memória flash. Por exemplo, digamos que você tenha um chip flash serial que requer várias instruções apenas para ler um único byte desse chip flash. Como você pode executar o código desse chip flash?
Praticamente todo PC possui um chip flash em cada cartão de memória RAM contendo as especificações da memória RAM. Você com certeza não pode executar o código nesse chip flash, pois ele não está mapeado na memória e só pode ser acessado por sequências complexas de código que estão conversando com o controlador de memória.
Ou considere uma CPU que tenha espaços de endereço de dados executáveis e separados. Um chip flash mapeado no espaço de endereço de dados também não seria executável.
Os detalhes são muito específicos do dispositivo. Mas não é incomum que um dispositivo possua flash que não seja executável.
Pense em uma unidade flash SSD ou USB. Você não pode executar código fora deles sem copiá-lo para a RAM primeiro. (E os sistemas embarcados geralmente não têm RAM suficiente para armazenar uma cópia.)
Além disso, algumas CPUs têm requisitos de desempenho na memória que é executável. Algumas CPUs não têm a capacidade de inserir estados de espera nas buscas do programa, mas sim na busca de dados. Portanto, o flash executável deve ser muito rápido. Não é incomum usar flash mais barato para dados. (O DS80C320, por exemplo, pode tolerar uma memória de dados mais lenta, mas a memória executável deve ser executada a toda velocidade.)
fonte
Em muitos microcontroladores, que são usados para muitos aplicativos incorporados, existem pelo menos dois tipos de memória: memória Flash (que geralmente contém o firmware incorporado) e RAM (que é usada para armazenar valores de tempo de execução, registros, pilha, etc.).
Alguns microcontroladores têm mais de 1 memória flash e nem todos podem ser usados para armazenar programas (firmware). As outras regiões de memória flash são usadas apenas para armazenamento não volátil.
Em todos esses casos, a memória flash normalmente é programada durante o desenvolvimento (como carregar dados no disco rígido) e não é substituída pelos programas em execução. Em alguns casos, o flash pode ser gravado e você possui sistemas auto-reprogramáveis.
Para ser claro, os programas são executados a partir dessa memória flash, mas não estamos falando de nada como um disco flash.
fonte