Los chips PSoC4 solo tienen entre 2 y 4 KB de RAM. Eso no es mucho, especialmente si quiero hacer algo de procesamiento de datos. Entre 16 y 32KB de Flash parece mucho más prometedor, incluso si necesito compartirlo con el código. Gracias al "Acelerador de Flash" parece que se puede usar Flash de la misma manera que se usaría SRAM, solo a un costo menor. Hay un documento que describe cómo hacerlo, y parece bastante trivial:
en Project > Build Settings > Linker > Command Line > Custom Flags
add:
-Wl,--section-start=.MY_SECTION=0x00001000
luego declara tu variable como:
uint8 variable1 __attribute__ ((section(“.MY_SECTION”)));
(que usa GCC, como PSoC Creator lo hace "fuera de la caja").
Ahora, si lo comprendo correctamente, lo primero que debemos considerar son los ciclos de escritura estándar de 100k que tienen los chips PSoC4 estándar. Realizar 100k escrituras a una variable puede tomar muy poco tiempo; ¿El "acelerador" protege la celda o me arriesgo a dañar el chip con un simple for(uint32 flash_var __attribute__ ((section(“.FLASH”)))=0 ;flash_var<100000;flash_var++){...}
?
Siguiente: ¿puedo esperar que la variable persista en su valor a través de la pérdida de potencia, o necesito un poco de magia extra para obtener esta funcionalidad?
¿Eso funciona bien con el cargador de arranque en aplicaciones de arranque, o me arriesgo a sobrescribir el cargador de arranque o algo así?
¿Qué otras consideraciones con respecto a ese tipo de variables debería tener en cuenta, en las que no he pensado, y que probablemente aprendería solo "de la manera difícil" si no pregunto?