La taille de la mémoire flash intégrée n'est pas suffisante


11

J'utilise le contrôleur TM4C1230C3PMI de Texas Instrument dans l'un de mes projets. Il dispose de 32 Ko de flash interne, ce qui n'est pas suffisant pour mon application. Des microcontrôleurs de taille flash plus élevée sont disponibles sur le marché et peuvent être utilisés, mais je souhaite utiliser uniquement ce microcontrôleur. Selon ma connaissance, l'EEPROM externe peut être utilisée pour augmenter la taille totale du flash (mémoire de programme).

Ma pensée est-elle correcte?

Sinon, veuillez suggérer comment puis-je augmenter la taille totale de la mémoire flash du contrôleur?


1
L'EEPROM externe est généralement utilisée pour stocker des données car la mémoire flash interne permet moins de cycles d'effacement / écriture que la plupart des EEPROM et elle peut être remplacée octet par octet. Pour les CPU avec une interface de bus externe (la vôtre ne l'a pas), il serait possible d'ajouter de la mémoire de programme externe (cependant c'est un peu compliqué ...). Théoriquement, il serait possible de stocker des morceaux de code dans une EEPROM externe et de charger ce code dans la RAM pour l'exécuter - mais dans la plupart des cas, ce scénario n'est pas réaliste.
Martin Rosenau

3
Il y a plusieurs années, une maxime connexe était "Si vous ne pouvez pas le faire en 1K, vous ne pouvez pas le faire." Je pensais que c'était intelligent et méritait réflexion, mais je ne l'ai pas vraiment accepté. Puis MicroChess est arrivé en 1K.
user2338816

1
Pourquoi ne démarrez-vous pas votre code à partir d'une mémoire externe? Il existe un certain nombre de mémoires externes qui peuvent être connectées à votre uC. Cela ne placera pas de contraintes sur votre flash interne car vous démarrerez votre code en externe.
AlphaGoku


Réponses:


22

Vous ne pouvez pas étendre la mémoire du programme (flash). TI produit la même puce avec le double du flash et de la RAM, mais rien d'autre n'a changé: TM4C1230D5PMI .

Si vous ne pouvez pas utiliser une puce avec un flash plus grand, vous devrez réduire la taille de votre code:

  • Désactivez le débogage, comme la printffonction coûteuse . Un printfqui prend en charge la sortie à virgule flottante vous ramènera généralement autour de 5 Ko-10 Ko.
  • Assurez-vous de compiler avec l'optimisation activée - généralement l'indicateur du compilateur l'est -Os.
  • Les compilateurs modernes peuvent faire l' optimisation du temps de liaison (LTO) . Avec gcc, vous obtenez cela avec -flto. Vous devez passer -fltoaux étapes de compilation et de liaison, pour tous les fichiers. Cela réduit généralement la taille du code produit de 30% à 50%.

2

Vous pouvez obtenir la plus petite empreinte logicielle en utilisant l'assembleur et un langage semblable à Forth conçu pour votre usage. Un autre est le code machine compressé s'il y a beaucoup de code presque identique.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.