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?


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

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.

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.