¿Por qué tengo más flash (STM32F103RCT6) de lo que dice mi hoja de datos?

Estoy escribiendo un firmware para un microcontrolador STM32F103RCT6 que tiene un flash de 256 KB según la hoja de datos.

Por un error mío, estaba escribiendo unos datos en 0x0807F800 que según el manual de referencia es la última página de un dispositivo de alta densidad. (El manual de referencia no hace distinción de diferentes tamaños de 'dispositivos de alta densidad' en el diseño de la memoria)

Los datos que escribí se leían sin errores, así que hice algunas pruebas y leí/escribí 512 KB de datos aleatorios, comparé los archivos y ¡coincidieron!

Investigué un poco y no pude encontrar experiencias similares. ¿Son fiables esos flashes extra? ¿Es eso algún tipo de maniobra industrial?

Respuestas (2)

Todos los MCU en una familia o una línea familiar se fabrican en el mismo troquel de silicio. 512 KB y 256 KB, y otras MCU son físicamente lo mismo, sin embargo, cuando tiene 8 millones de transistores o más, algunos de ellos no funcionarán, o no funcionarán de manera confiable, o no funcionarán de manera confiable a una temperatura particular, o en el El caso de la memoria flash no retendrá su información el tiempo suficiente.

Lo más probable es que su MCU comenzó su vida como una pieza de 512 KB, pero durante las pruebas de fabricación resultó que solo 256 KB son confiables en todas las condiciones de funcionamiento. El fabricante probablemente no tenga una instalación en el chip para deshabilitar la mitad del flash, por lo que solo los bits de identificación se escriben en consecuencia y se espera que el programador los obedezca.

Otra hipótesis: puede ser una pieza falsificada (512 KB) que fue rechazada de fábrica, pero alguien encontró que 256 KB es "suficientemente bueno" y lo relanzó.

Todos los chips STM32F1 utilizan el mismo troquel de silicio . Pueden configurar varias cosas con campos programables una sola vez o la posición de los cables de unión .

Por razones de marketing, venden chips con menos flash/ram a un precio más bajo al reducir el tiempo de prueba, ya que el tiempo es caro. Este este flash estará allí, pero no se ha probado.
Este método también se aplica a las especificaciones de temperatura de las piezas de 125C.

Tendría sentido pensar que el otro flash está dañado o no se puede usar, pero si el rendimiento* fuera tan bajo, requerirían un mapeo de los sectores en cada chip. Dado que cualquier sector puede dañarse, ¡de lo contrario tendría un espacio en el mapa de memoria!
Esto significaría que no habría flash adicional al probado y mapeado, lo cual no es el caso.

A pesar de que el flash está ahí, no recomiendo usarlo.

Pregunté esto una vez por el 407.

*rendimiento: cantidad de chips de trabajo por oblea .