Soluciones para almacenar elementos de GUI en sistemas integrados

0

Tengo un proyecto en mente para crear una GUI usando un microcontrolador STM32F4. Actualmente estoy trabajando / jugando con una placa STM32F469I-DISCO que incorpora una pantalla MIPI. Comprendí cómo mostrar imágenes y otros materiales, pero me preguntaba cuáles son las soluciones para almacenar los iconos de manera más "eficiente". Qué soluciones se utilizan comúnmente.

Por ahora, cuando quiero, por ejemplo, mostrar un icono específico, creo dos archivos:

  • un archivo fuente icon.c que contiene una matriz en la que cada elemento describe un píxel;
  • un archivo de encabezado icon.h que simplemente contiene el prototipo de matriz.

Luego incluyo el encabezado y uso mi icono cuando lo necesito. Pero me di cuenta de que los iconos no son despreciables en términos de requisitos de espacio (depende, por supuesto, del tamaño del icono, el formato de color ...).

De todos modos, en general, en un sistema integrado (usando un STM32, por ejemplo), ¿cuáles son las soluciones más "eficientes" para almacenar todo lo relacionado con la GUI? ¿Es correcta una EEPROM? ¿Tarjeta SD o algo más?

¡Gracias!

EDIT : Por eficiente me refiero a una solución que ocupa el menor espacio posible (físicamente). No tengo ningún requisito en el lado de los consumos de energía.

    
pregunta vionyst

1 respuesta

0

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:

  1. 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.

  2. 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.

  3. 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.

    
respondido por el Smith

Lea otras preguntas en las etiquetas