El tamaño de la memoria flash incorporada no es suficiente

Estoy usando el controlador TM4C1230C3PMI del instrumento Texas en uno de mis proyectos. Tiene 32 KB de flash interno, que no es suficiente para mi aplicación. Hay microcontroladores de mayor tamaño de flash disponibles en el mercado que se pueden usar, pero quiero usar solo este microcontrolador. Según mi conocimiento, se puede usar una EEPROM externa para aumentar el tamaño total de la memoria flash (memoria de programa).

¿Mi pensamiento es correcto?

Si no es así, sugiera cómo puedo aumentar el tamaño total de la memoria flash del controlador.

La EEPROM externa generalmente se usa para almacenar datos porque la Flash interna permite menos ciclos de borrado/escritura que la mayoría de las EEPROM y se puede sobrescribir byte-wise. Para las CPU con una interfaz de bus externa (la suya no tiene esto) sería posible agregar una memoria de programa externa (sin embargo, esto es un poco complicado...). En teoría, sería posible almacenar fragmentos de código en una EEPROM externa y cargar este código en la RAM para ejecutarlo; sin embargo, en la mayoría de los casos, este escenario no es realista.
Hace muchos años, una máxima relacionada era "Si no puedes hacerlo en 1K, no puedes hacerlo". Pensé que era inteligente y que valía la pena pensar en ello, pero realmente no lo acepté. Entonces llegó MicroChess en 1K.
¿Por qué no arrancas tu código desde una memoria externa? Hay una serie de memorias externas que se pueden interconectar con su uC. Esto no impondrá restricciones en su flash interno, ya que iniciará su código externamente.
@Akshay Creo que has respondido a mi pregunta. Esperaba una respuesta similar a la que comentaste. Mi pregunta era si se puede usar una memoria externa para aumentar la memoria total del programa de la MCU.

Respuestas (2)

No puede ampliar la memoria del programa (flash). TI produce el mismo chip con el doble de flash y RAM, pero nada más cambió: TM4C1230D5PMI .

Si no puede usar un chip con un flash más grande, tendrá que reducir el tamaño de su código:

  • Deshabilite la depuración, como la printffunción costosa. Una printfque admita la salida de coma flotante generalmente le costará entre 5 KB y 10 KB.
  • Asegúrese de compilar con la optimización habilitada; por lo general, el indicador del compilador es -Os.
  • Los compiladores modernos pueden optimizar el tiempo de enlace (LTO) . Con gcc, obtienes esto con -flto. Tienes que pasar -fltoa las etapas de compilación y enlace, para todos los archivos. Esto normalmente reduce el tamaño del código producido en un 30% -50%.

Puede obtener la huella de software más pequeña utilizando ensamblador y un lenguaje similar a Forth diseñado para su propósito. Otro es el código de máquina comprimido si hay mucho código casi idéntico.