Eingebaute Flash-Speichergröße nicht genug

11

Ich verwende in einem meiner Projekte den TM4C1230C3PMI-Controller von Texas Instrument. 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 diesen Mikrocontroller verwenden. Meines Wissens kann ein externes EEPROM verwendet werden, um die Gesamtgröße des Flashs (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.

Sanjeev Kumar
quelle
1
Externes EEPROM wird normalerweise zum Speichern von Daten verwendet, da das interne Flash weniger Lösch- / Schreibzyklen als die meisten EEPROMs ermöglicht und byteweise überschrieben werden kann. Für CPUs mit einer externen Busschnittstelle (Ihre hat diese nicht) wäre es möglich, externen Programmspeicher hinzuzufügen (dies ist jedoch etwas kompliziert ...). Theoretisch wäre es möglich, Codeteile in einem externen EEPROM zu speichern und diesen Code in den RAM zu laden, um ihn auszuführen. In den meisten Fällen ist dieses Szenario jedoch nicht realistisch.
Martin Rosenau
3
Vor vielen Jahren lautete eine verwandte Maxime: "Wenn Sie es nicht in 1K tun können, können Sie es nicht tun." Ich fand es klug und es lohnt sich darüber nachzudenken, akzeptierte es aber nicht wirklich. Dann kam MicroChess in 1K an.
user2338816
1
Warum booten Sie Ihren Code nicht von einem externen Speicher? Es gibt eine Reihe von externen Speichern, die an Ihre uC angeschlossen werden können. Dadurch werden Ihrem internen Flash keine Einschränkungen auferlegt, da Sie Ihren Code extern booten.
AkshayImmanuelD

Antworten:

22

Sie können den Programmspeicher (Flash) nicht erweitern. TI produziert den gleichen Chip mit doppeltem Flash und RAM, aber nichts anderes hat sich geändert: TM4C1230D5PMI .

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

  • Deaktivieren Sie das Debuggen, z. B. die teure printfFunktion. A printf, das die Gleitkommaausgabe unterstützt, setzt Sie normalerweise um 5 KB bis 10 KB zurück.
  • Stellen Sie sicher, dass Sie mit aktivierter Optimierung kompilieren - normalerweise lautet das Compiler-Flag -Os.
  • Moderne Compiler können die Link Time Optimization (LTO) durchführen . Mit gcc bekommen Sie das mit -flto. Sie müssen -fltofür alle Dateien sowohl die Kompilierungs- als auch die Verknüpfungsphase durchlaufen. Dies reduziert normalerweise die erzeugte Codegröße um 30% -50%.
Corecode
quelle
2

Mit dem Assembler und einer für Ihren Zweck entwickelten Forth-ähnlichen Sprache erzielen Sie möglicherweise den geringsten Software-Platzbedarf. Ein anderer ist komprimierter Maschinencode, wenn viele nahezu identische Codes vorhanden sind.

Mikkel Alan Stokkebye Christia
quelle