¿Buscar tablas, Flash o SRAM?

4

Se utiliza una plataforma STM32F4, que tiene 192kBytes SRAM, que es suficiente para mí.

Estoy tratando de construir una tabla de consulta. La LUT se utilizará en el cálculo varias veces. Y quiero ponerlo en SRAM en el proceso de cálculo, en lugar de FLASH, ya que leer SRAM es más rápido que leer FLASH para el núcleo.

Y leí este post mencionando poner la LUT en flash, lo que me confunde ... ¿Qué debo hacer para grabar los datos en flash para la primera carga y los datos se mantendrán en la RAM luego para los siguientes cálculos?

Y si alguien sabe CCM, ¿es una buena idea colocar la LUT en CCM durante el cálculo?

    
pregunta richieqianle

1 respuesta

5

Simplemente definiendo la tabla sin una palabra clave const hará que la tabla se copie de Flash a RAM cuando se inicie el programa; por ejemplo

const short ax [] = { 1, 2, 3, 4 };      // stays in Flash
short bx [] = { 5, 6, 7, 8 };            // starts in Flash, copied to RAM

Puede verificar este comportamiento con las siguientes dos líneas de código:

bx[0] = ax[0];    // allowed, since you are modifying a RAM variable
ax[0] = bx[0];    // not allowed, ax is const 

Lo comprobé utilizando el compilador IAR para la familia STM32F10. No sé qué es CCM, lo siento.

No es raro que los programadores integrados definan una gran tabla inicializada, olvidando la palabra clave const y luego se pregunten por qué se están quedando sin memoria RAM.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas