Dimensione della memoria flash integrata non sufficiente


11

Sto usando il controller TM4C1230C3PMI dallo strumento Texas in uno dei miei progetti. Ha 32 KB di flash interno, che non è sufficiente per la mia applicazione. Sono disponibili sul mercato microcontrollori di dimensioni più elevate che possono essere utilizzati ma voglio utilizzare solo questo microcontroller. Secondo le mie conoscenze, EEPROM esterna può essere utilizzata per aumentare la dimensione totale del flash (memoria di programma).

Il mio pensiero è corretto?

In caso contrario, suggerire come posso aumentare la dimensione della memoria flash totale del controller?


1
La EEPROM esterna viene in genere utilizzata per l'archiviazione dei dati poiché il Flash interno consente meno cicli di cancellazione / scrittura rispetto alla maggior parte delle EEPROM e può essere sovrascritto in byte. Per le CPU con un'interfaccia bus esterna (la tua non ha questa) sarebbe possibile aggiungere una memoria di programma esterna (tuttavia questo è un po 'complicato ...). Teoricamente sarebbe possibile memorizzare pezzi di codice in una EEPROM esterna e caricare questo codice nella RAM per eseguirlo - tuttavia nella maggior parte dei casi questo scenario non è realistico.
Martin Rosenau,

3
Molti anni fa, una massima correlata era "Se non puoi farlo in 1K, non puoi farlo". Ho pensato che fosse intelligente e vale la pena pensarci, ma non l'ho accettato davvero. Quindi MicroChess è arrivato in 1K.
user2338816

1
Perché non avviare il codice da una memoria esterna? Esistono numerose memorie esterne che possono essere interfacciate al tuo uC. Questo non imporrà vincoli sul tuo flash interno poiché avvierai il tuo codice esternamente.
AlphaGoku


Risposte:


22

Non è possibile estendere la memoria del programma (flash). TI produce lo stesso chip con il doppio del flash e della RAM, ma nient'altro è cambiato: TM4C1230D5PMI .

Se non puoi utilizzare un chip con flash di dimensioni maggiori, dovrai ridurre la dimensione del codice:

  • Disabilita il debug, come la costosa printffunzione. Un'opzione printfche supporta l'output in virgola mobile in genere riporta i 5 KB-10 KB.
  • Assicurati di compilare con l'ottimizzazione abilitata, in genere è il flag del compilatore -Os.
  • I compilatori moderni possono eseguire l' ottimizzazione del tempo di collegamento (LTO) . Con gcc, ottieni questo con -flto. Devi passare -fltoa entrambe le fasi di compilazione e collegamento, per tutti i file. Questo in genere riduce le dimensioni del codice prodotto del 30% -50%.

2

È possibile ottenere il minimo ingombro del software utilizzando assemblatore e un linguaggio simile a Forth progettato per il proprio scopo. Un altro è il codice macchina compresso se c'è molto codice quasi identico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.