Los chips PSoC4 sólo tienen entre 2 y 4KB 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 tengo que compartirlo con el código. Gracias al "Flash Accelerator" parece que se puede usar Flash de la misma manera que se usaría la SRAM, sólo a costa de una pequeña caída de rendimiento. Hay un documento que describe cómo hacerlo, y parece bastante trivial:
en Project > Build Settings > Linker > Command Line > Custom Flags
añadir:
-Wl,--section-start=.MY_SECTION=0x00001000
entonces declare su variable como:
uint8 variable1 __attribute__ ((section(“.MY_SECTION”)));
(es decir, utilizando GCC, como hace PSoC Creator "out of the box").
Ahora bien, si he entendido bien, lo primero que hay que tener en cuenta son los 100k ciclos de escritura que tienen los chips PSoC4 estándar. Realizar 100k escrituras en una variable puede llevar 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++){...}
?
A continuación, ¿puedo esperar que la variable mantenga su valor en caso de pérdida de energía, o necesito algún tipo de técnica adicional para obtener esta funcionalidad?
¿Esto juega bien con el bootloader en las aplicaciones que se pueden arrancar, o me arriesgo a sobrescribir el bootloader o algo así?
¿Qué otras consideraciones relativas a ese tipo de variables debería tener en cuenta, en las que no he pensado, y que probablemente sólo aprendería "por las malas" si no pregunto?