Tengo un escenario en el que tengo matrices 2D de tamaños variables y varios tipos de datos (doble y booleano a partir de ahora). Estos arreglos deben ser leídos y procesados por un microcontrolador que tiene 256KB de SRAM.
En mi configuración planeo transferir estos arreglos de la tarjeta SD (almacenada como archivos) a la SRAM para su procesamiento. Actualmente puedo pensar en seguir posibles enfoques
- Estas matrices son en realidad matrices de MATLAB. Así que tengo la intención de guardar las variables de MATLAB como .mat y reutilizar el código de matimport.c
- Guarde los datos contenidos en las variables en un archivo xml. Use un analizador XML para el microcontrolador de destino
- Crea archivos binarios personalizados con metadatos asociados. Así que el programa en el microcontrolador lee los metadatos (filas, columnas, tipo de datos) sobre el archivo binario y extrae la variable en función de los datos de desplazamiento calculados a partir de los metadatos
Sol 1 parece fácil y directo. Pero, creo que necesito usar ciertas bibliotecas externas de MATLAB y supongo que estas bibliotecas precompiladas (como libmat.lib, libmx.lib) no están disponibles para ARM.
Sol 2 es fácil si hay un buen analizador escrito para un microcontrolador. Las sugerencias de analizador XML son bienvenidas
Sol 3 implica un poco más de trabajo. Para este método, tengo la intención de escribir una aplicación en C que lea los archivos .mat y crear un archivo binario personalizado con metadatos y datos reales. Y tiene otra función de importación idéntica en el microcontrolador.
El tamaño total de todas las variables combinadas es el rango de 20 KB a 40 KB. Por lo tanto, la tarjeta SD se utiliza en el sistema.
¿Cuál de estas técnicas es adecuada para una solución integrada de bajo tamaño? Mi objetivo es elegir e ir con una solución que utilice la menor cantidad de memoria y una que sea más flexible para la expansión. Por supuesto, sugiera otros enfoques para resolver este problema.
PS. El dispositivo no está basado en Arduino. Pero, sin embargo, lo agregué ya que Arduino Development entra en el ámbito de esta pregunta.