Estoy escribiendo datos en la memoria flash interna de un STM32F746 y me pregunto cuál es la diferencia entre páginas y sectores. ¿Y cuál es el propósito de usar sectores en su lugar? Tenga en cuenta que soy muy nuevo y la razón por la que pregunto es porque anteriormente escribí para flashear sabiendo el tamaño de la página y la cantidad de páginas. Pero ahora tengo 8 sectores en su lugar.
A menos que lo haya perdido en alguna parte, no puedo encontrar ninguna referencia a las páginas o el tamaño de la página en ningún documento del STM32F746.
El concepto es el mismo, entre página y sectores. La documentación de STM32F7 usa el término de sector porque son mucho más grandes que las páginas típicas en la memoria flash externa. Pero no importa
Por lo tanto, no puede encontrar referencias a páginas porque lo que llamó páginas aquí se llaman sectores.
La restricción es: cuando desea borrar, debe borrar todo el sector. Como has visto, en STM32F7 hay 8 sectores, con diferentes tamaños (4 sectores de 32 Kbytes, 1 sector de 128 Kbytes y 3 sectores de 256 Kbytes). El hecho de que tengan diferentes tamaños le permite tener más flexibilidad en la forma en que organiza su flash. Por ejemplo, podría tener un sector reservado para datos de configuración. De esta manera, cuando desee reprogramar esta parte, no tendrá que borrar todo el código de firmware. Pero aún debe borrar todo el sector de configuración, incluso si necesita cambiar solo un byte. Y es cierto que estos sectores son enormes, por lo que no puede usar este flash tan fácilmente como los típicos flashes seriales externos en los que podría organizar las cosas de una manera más flexible (o incluso usar un sistema de archivos).
Si necesita una forma más flexible de almacenar datos persistentes que pueden cambiar con el tiempo, use una memoria flash externa o una EEPROM externa, según sus limitaciones. Sin embargo, hay un truco que podrías usaren el flash MCU principal: el borrado solo se requiere cuando cambia los bits de 0 a 1. Para cambiar los bits de 1 a 0, solo necesita programar los bytes flash (consulte la nota en el capítulo 3.3.7 en el manual de referencia) . La programación de los flash bytes se puede realizar tantas veces como se desee sobre el sector, y se puede realizar sobre bytes individuales. Entonces, podría aprovechar esto dividiendo el enorme sector de "configuración" en pequeños fragmentos que programe individualmente, cuando cambien sus datos. Luego, necesita un índice en el que "fusione" los bits del 1 al 0 para saber en qué fragmento se pueden encontrar los datos más recientes. Finalmente, cuando se hayan usado todos los trozos, borras todo el sector y empiezas de nuevo. Esto desperdicia mucho espacio, pero puede brindarle la flexibilidad que necesita sin comprometer demasiado la resistencia del flash.
tothphu
oscuro
tothphu
oscuro
tothphu
oscuro