Tamanho da memória flash embutido insuficiente

11

Estou usando o controlador TM4C1230C3PMI do instrumento Texas em um dos meus projetos. Possui 32 KB de flash interno, o que não é suficiente para o meu aplicativo. Microcontroladores com tamanho de flash maior estão disponíveis no mercado que podem ser usados, mas eu quero usar apenas este microcontrolador. De acordo com meu conhecimento, a EEPROM externa pode ser usada para aumentar o tamanho total do flash (memória do programa).

Meu pensamento está correto?

Caso contrário, sugira como posso aumentar o tamanho total da memória flash do controlador?

Sanjeev Kumar
fonte
1
A EEPROM externa geralmente é usada para armazenar dados, porque o Flash interno permite menos ciclos de apagamento / gravação que a maioria das EEPROMs e pode ser substituído por bytes. Para CPUs com uma interface de barramento externa (a sua não possui isso), seria possível adicionar memória de programa externa (no entanto, isso é um pouco complicado ...). Teoricamente, seria possível armazenar partes do código em uma EEPROM externa e carregar esse código na RAM para executá-lo - no entanto, na maioria dos casos, esse cenário não é realista.
Martin Rosenau 27/06
3
Muitos anos atrás, uma máxima relacionada era "Se você não pode fazê-lo em 1K, não pode fazê-lo". Eu pensei que era inteligente e vale a pena pensar, mas realmente não o aceitei. Então o MicroChess chegou em 1K.
user2338816
1
Por que você não inicializa seu código a partir de uma memória externa? Há várias memórias externas que podem ser conectadas ao seu uC. Isso não colocará restrições no seu flash interno, pois você inicializará seu código externamente.
AkshayImmanuelD

Respostas:

22

Você não pode estender a memória do programa (flash). A TI produz o mesmo chip com o dobro do flash e da RAM, mas nada mais mudou: TM4C1230D5PMI .

Se você não puder usar um chip com flash maior, precisará reduzir o tamanho do código:

  • Desative a depuração, como a printffunção cara . Um printfque suporta saída de ponto flutuante normalmente volta em torno de 5 KB-10 KB.
  • Certifique-se de compilar com a otimização ativada - normalmente o sinalizador do compilador é -Os.
  • Compiladores modernos podem fazer a otimização do tempo de link (LTO) . Com o gcc, você consegue isso -flto. Você precisa passar -fltopara os estágios de compilação e link, para todos os arquivos. Isso normalmente reduz o tamanho do código produzido em 30% a 50%.
corecode
fonte
2

Você pode obter a menor pegada de software usando o assembler e uma linguagem semelhante à Forth, projetada para seu propósito. Outro é o código de máquina compactado se houver muito código quase idêntico.

Mikkel Alan Stokkebye Christia
fonte