¿El reinicio hace lo mismo que apagar la alimentación de este dispositivo y volver a encenderlo?

1

Estoy intentando controlar una memoria de flash de datos en serie a través de un mbed. Es un AT45DB021B y la hoja de datos es aquí . Tiene un pin de reinicio que he conectado al mbed para que se pueda realizar un reinicio del software. Escuché que un reinicio del software facilita las cosas, por lo que no es necesario reiniciar el hardware, es decir, desconectar la alimentación y volver a encenderlo. Noté que cuando hago un reinicio de hardware, lo que está en el búfer se sobrescribe con valores aleatorios. Sin embargo, cuando hago un reinicio de software, el búfer no se ve afectado. Nada parece cambiar en un reinicio de software. ¿Esto es normal?

    
pregunta 200ok404notfound

5 respuestas

6

Sí, esto es normal. Si haces un restablecimiento completo (encendido aleatorio) puedes estar bastante seguro de que el búfer será un poco de basura. Si hace un reinicio por software, el contenido debe ser el mismo que antes. Sram está diseñado para comportarse de esa manera. Pero depende del diseño de la arquitectura. Si el hardware interno se diseña de tal manera que, al recibir una señal de reinicio, se elimine la alimentación de la RAM. Luego, en ese caso, el contenido de la RAM se borrará en el reinicio.

    
respondido por el 1amtoo1337
4

Después de un reinicio de encendido, no hay garantía de lo que hay en tu búfer. Puede ser lo mismo que lo que había antes, o todos los ceros, o todos, o un tablero de ajedrez, o la mayor parte de la oración inicial de "Un cuento de dos ciudades", o cualquier otra cosa; puede ser consistente, o aleatorio, o en su mayoría consistente, excepto el tercer martes de meses que contiene la letra "a". A menos que se especifique lo contrario, es probable que sea prudente suponer que no hay garantía de contenido del búfer después de un restablecimiento automático. El enfoque apropiado es asumir que el búfer contendrá cualquier información que sea más molesta para usted, por lo que debe estar preparado para aceptar cualquier cosa que pueda estar allí.

    
respondido por el supercat
3

El motivo por el que la memoria y otros chips tienen líneas de reinicio no es necesario "borrarlos", sino desconectarlos del bus durante los estados de baja potencia.

El problema es que, durante el encendido y apagado, las líneas de luz estroboscópica, dirección y datos aún están conectadas al bus mientras la potencia aumenta de 0v a Vcc (o se drena), y esto puede manifestarse como un ruido digital que hace que se escriba "basura" aleatoria en la memoria durante el arranque. Esto es especialmente problemático para los dispositivos IO asignados en memoria y las memorias flash.

Puede usar un chip de "reinicio de reducción de tensión" para asegurarse de que su dispositivo se mantenga en el estado RESTABLECIMIENTO hasta que se estabilice la alimentación y se pueda confiar en los valores del bus. Muchos microcontroladores modernos tienen detectores incorporados de parpadeo.

    
respondido por el Christopher Biggs
2

Hoja de datos cubre esto:

  

RESET: un estado bajo en el pin de reinicio   (RESET) terminará la operación   en curso y restablecer el interno   Estado de la máquina a un estado inactivo. los   El dispositivo permanecerá en el reinicio.   condición siempre y cuando un nivel bajo es   Presente en el pin RESET. Normal   operación puede reanudar una vez que el restablecimiento   el pin vuelve a un nivel alto

Para que no pierda valores de búfer, se detiene cualquier operación en curso y se restablece la máquina de estado. Por lo tanto, los datos en el búfer no son válidos (no se alinean con el estado actual y es posible que no se alineen con lo que realmente está en flash, debe tratarse como basura).

Si se dispara el reinicio del software mientras se produce una escritura o lectura desde el flash, la operación se detiene y, al liberar el reinicio del software, el chip se encuentra en su estado predeterminado. Esto significa que el reinicio del software puede dañar los datos flash sin cambiar los valores del búfer. Cuando escribe en el flash, debe asegurarse de que haya suficiente tiempo para que el chip escriba los datos en el flash antes de usar el reinicio del software o sus datos no llegarán al flash. Estos tiempos se enumeran en la sección 8.2 de la hoja de datos.

Hablando estrictamente, tampoco es seguro leer desde el búfer de datos como si fuera válido después de un reinicio del software, debe volver a emitir un comando para copiar datos del flash al búfer antes de poder leerlo y tener la seguridad de que es válido (equivalente a lo que realmente está en flash).

Además:

  

El dispositivo incorpora un interno   circuito de reinicio de encendido, por lo que hay   no hay restricciones en el pin RESET   durante las secuencias de encendido. Si este pin   y las características no se utilizan es   recomienda que el pin RESET sea   conducido alto externamente

y

  

Cuando la potencia se aplica por primera vez a la   dispositivo, o cuando se recupera de un   condición de restablecimiento, el dispositivo   por defecto al modo SPI 3. Además,   el pin SO estará en una alta impedancia   estado, y una transición de alto a bajo en   Se requerirá el pin CS para iniciar una   instrucción válida. El modo SPI   ser seleccionado automáticamente en cada   borde descendente de CS mediante el muestreo de la   Estado de reloj inactivo. Después de que el poder es   aplicado y VCC está en el mínimo   valor de la hoja de datos, el sistema debe   esperar 20 ms antes de un modo operacional   se inicia

Por lo tanto, no es necesario que un controlador externo ponga el chip en línea cuando se enciende. A menos que su operación de encendido tarde más de 20ms para estabilizar el voltaje de suministro, no debería tener ningún poder en problemas de basura.

    
respondido por el Mark
0

En general, no, un reinicio no es lo mismo que un ciclo de energía. Debe analizar el sistema caso por caso para determinar qué sucede en un restablecimiento localizado y / o en todo el sistema. Por la respuesta de Mark, parece que estás bien para este objetivo, presiona restablecer y no tienes que encender el ciclo. Sin embargo, antes de implementar o lanzar una versión del software, pruébelo usando ciclos de energía también.

Con sram o dram. Si no pierde energía y el reinicio es lo suficientemente corto, la memoria puede parecer que no ha cambiado nada, pero no confíe en eso. Algunos sistemas, en particular, paridad verificada, ecc chequeados pasarán por un proceso de inicialización que puede incluir borrar la memoria. A menos que el sistema haya sido diseñado para preservar la memoria a través de un reinicio, no confíe en que sea la forma en que la dejó. Los programas siempre deben escribir antes de leer una ubicación de memoria (o la ubicación debe ser escrita por alguien / algo antes de que se lea la primera vez) de todos modos.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas