Größe des eingebauten Flash-Speichers nicht ausreichend

Ich verwende den TM4C1230C3PMI-Controller von Texas Instrument in einem meiner Projekte. Es hat 32 KB internen Flash, was für meine Anwendung nicht ausreicht. Auf dem Markt sind Mikrocontroller mit höherer Blitzgröße erhältlich, die verwendet werden können, aber ich möchte nur mit diesem Mikrocontroller arbeiten. Nach meinem Wissen kann ein externes EEPROM verwendet werden, um die Gesamt-Flash-Größe (Programmspeicher) zu erhöhen.

Ist mein Denken richtig?

Wenn nicht, schlagen Sie bitte vor, wie ich die Gesamtgröße des Flash-Speichers des Controllers erhöhen kann.

Ein externes EEPROM wird normalerweise zum Speichern von Daten verwendet, da das interne Flash weniger Lösch-/Schreibzyklen zulässt als die meisten EEPROMs und byteweise überschrieben werden kann. Bei CPUs mit externer Busschnittstelle (Ihre hat diese nicht) wäre es möglich, externen Programmspeicher hinzuzufügen (jedoch etwas umständlich...). Theoretisch wäre es möglich, Codeteile in einem externen EEPROM zu speichern und diesen Code in den Arbeitsspeicher zu laden, um ihn auszuführen - jedoch ist dieses Szenario in den meisten Fällen nicht realistisch.
Vor vielen Jahren lautete eine verwandte Maxime: „Wenn du es nicht in 1K kannst, kannst du es nicht.“ Ich fand es klug und es wert, darüber nachzudenken, aber ich habe es nicht wirklich akzeptiert. Dann kam MicroChess in 1K an.
Warum booten Sie Ihren Code nicht von einem externen Speicher? Es gibt eine Reihe externer Speicher, die an Ihr uC angeschlossen werden können. Dadurch wird Ihr interner Flash nicht eingeschränkt, da Sie Ihren Code extern booten.
@Akshay Ich denke du hast meine Frage beantwortet. Ich hatte eine ähnliche Antwort erwartet, wie Sie kommentierten. Meine Frage war, ob ein externer Speicher verwendet werden kann, um den gesamten Programmspeicher der MCU zu erhöhen.

Antworten (2)

Der Programmspeicher (Flash) kann nicht erweitert werden. TI produziert den gleichen Chip mit doppeltem Flash und RAM, aber ansonsten hat sich nichts geändert: TM4C1230D5PMI .

Wenn Sie keinen Chip mit größerem Flash verwenden können, müssen Sie Ihre Codegröße reduzieren:

  • Deaktivieren Sie das Debugging, z. B. die teure printfFunktion. Eine printf, die Gleitkommaausgabe unterstützt, wird Sie normalerweise um 5 KB-10 KB zurücksetzen.
  • Stellen Sie sicher, dass Sie mit aktivierter Optimierung kompilieren – normalerweise ist das Compiler-Flag -Os.
  • Moderne Compiler können Link Time Optimization (LTO) durchführen . Mit gcc erhalten Sie dies mit -flto. Sie müssen -fltofür alle Dateien sowohl die Kompilierungs- als auch die Verknüpfungsphase durchlaufen. Dadurch wird die erzeugte Codegröße normalerweise um 30 % bis 50 % reduziert.

Den kleinsten Software-Fußabdruck erhalten Sie möglicherweise, wenn Sie Assembler und eine Forth-ähnliche Sprache verwenden, die für Ihren Zweck entwickelt wurde. Ein anderer ist komprimierter Maschinencode, wenn es viele nahezu identische Codes gibt.