LUT de tamaño configurable usando una matriz en C - sistemas integrados

0

Estoy trabajando con el MCU STM32F7 en un proyecto en el que necesito calcular y crear una LUT con los valores de una señal que finalmente enviaré al DAC.

El problema con la LUT es que el tamaño se conocerá solo en tiempo de ejecución porque depende de algunos parámetros enviados a la MCU desde una PC. Estaba buscando información sobre cómo implementar eso en C y la respuesta parece ser siempre la misma: malloc() .

También leí que malloc() no es una buena manera de asignar memoria cuando se trabaja con sistemas integrados, así que me pregunto si hay alguna forma de implementar dicha funcionalidad en C que no use malloc() (inicialice una matriz utilizando una variable calculado en tiempo de ejecución).

    
pregunta osuarez

2 respuestas

3

Debe saber el tamaño máximo posible de la LUT. De lo contrario, ¿cómo sabrá si el montón utilizado por malloc es lo suficientemente grande? Así que simplemente declare una matriz asignada estáticamente que sea lo suficientemente grande para el tamaño máximo de LUT. Está bien usar menos que el máximo en tiempo de ejecución. De esta manera, no tiene que molestarse con malloc y un montón.

    
respondido por el kkrambo
2

El problema no está en el uso de malloc() en sí mismo, el problema está en asignando y liberando fragmentos de memoria de tamaño arbitrario repetidamente . Si solo realiza la asignación una vez y nunca libera el bloque sin reiniciar el dispositivo, no se encontrará con este problema.

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas