Si tiene varios gráficos y están ocupando mucho espacio, entonces necesitará espacio para colocarlos en algún lugar y más espacio para trabajar con ellos.
Si simplemente los está compilando como archivos c o h, entonces es probable que caigan en su espacio interno de Flash. Entonces, la pregunta es si están ocupando demasiado espacio y necesitan ser guardados en otro lugar. Tenga en cuenta que incluso si está configurando el compilador para mantenerlos en la RAM, todavía tendrán una imagen en Flash que se carga en la RAM al inicio.
Entonces tienes opciones off-board. Esto podría ser un chip EEPROM, que es relativamente barato y fácil de trabajar. Una tarjeta SD le brinda más espacio, pero también más sobrecarga, tendrá que hacer funcionar un sistema FAT. Supongo que no está utilizando un bus de memoria externo con Flash en su procesador, pero si lo estuviera, sería un buen lugar.
Si toma esta ruta, tiene tres obstáculos que superar:
-
El controlador y la API. Dependiendo de lo que elija, puede que tenga que escribir el suyo. Desde donde sea que venga el controlador, tendrá que hacerlo funcionar y validarlo en su configuración.
-
Inicialización de la memoria. Tendrá que poner sus imágenes en el dispositivo de memoria de alguna manera. Si se trata de una EEPROM I2C o una tarjeta SD, deberá averiguar cómo colocar sus imágenes allí de manera que su procesador las reconozca.
-
Copias locales en RAM. Cuando saque una imagen de la memoria, necesitará suficiente espacio de RAM para mantenerla mientras trabaja con ella.
No sé lo suficiente sobre su aplicación y especificaciones para hacer una recomendación. Si es probable que los gráficos se modifiquen mucho por la estética antes de terminar, entonces la tarjeta SD puede ser más conveniente, ya que puede actualizarla fácilmente con su PC. Pero esto tendrá un impacto significativo en el alcance de su proyecto de software. Si está bajo un objetivo de costo y las imágenes son simples y no van a cambiar, tal vez la EEPROM I2C sea la mejor manera, pero si las imágenes son grandes, puede haber algún retraso. Si puede sufrir el espacio interno de Flash, entonces eso puede ser más fácil a largo plazo. Si tiene control sobre la selección del procesador y el diseño de PCB, entonces podría obtener un bus de memoria externo con toneladas de Flash.
También existe la opción de compresión de imagen, que se puede hacer en sistemas integrados, y aunque lo he visto hacer, no sé lo suficiente de los pros y los contras ahora mismo para comentar de forma inteligente.