Ist das Zurücksetzen dasselbe wie das Ausschalten und Wiedereinschalten dieses Geräts?

Ich versuche, einen seriellen Dataflash-Speicher über ein mbed zu steuern. Es ist ein AT45DB021B und das Datenblatt ist hier . Es hat einen Reset-Pin, den ich mit dem mbed verdrahtet habe, damit ein Software-Reset durchgeführt werden kann. Ich habe gehört, dass ein Software-Reset die Dinge einfacher macht, so dass ein Hardware-Reset, dh das Ausschalten und Wiedereinschalten, nicht erforderlich ist. Mir ist aufgefallen, dass bei einem Hardware-Reset alles, was sich im Puffer befindet, mit zufälligen Werten überschrieben wird. Wenn ich jedoch einen Software-Reset durchführe, ist der Puffer nicht betroffen. Bei einem Software-Reset scheint sich nichts zu ändern. Ist das normal?

Antworten (5)

Ja das ist normal. Wenn Sie einen Hard-Reset (zufälliges Einschalten) durchführen, können Sie ziemlich sicher sein, dass der Puffer Müll ist. Wenn Sie einen Soft-Reset durchführen, sollte der Inhalt derselbe sein wie zuvor. Sram ist darauf ausgelegt, sich so zu verhalten. Aber es hängt von der Gestaltung der Architektur ab. Wenn die interne Hardware so ausgelegt ist, dass beim Empfang eines Reset-Signals die Stromversorgung zum RAM entfernt wird. Dann wird in diesem Fall der Inhalt des RAM beim Zurücksetzen gelöscht.

Nach einem Power-On-Reset gibt es keine Garantie dafür, was sich in Ihrem Puffer befindet. Es kann dasselbe sein wie zuvor, oder nur Nullen, oder nur Einsen, oder ein Schachbrett, oder der größte Teil des Eröffnungssatzes von "A Tale of Two Cities" oder irgendetwas anderes; Es kann konsistent oder zufällig oder größtenteils konsistent sein, mit Ausnahme des dritten Dienstags von Monaten, die den Buchstaben "a" enthalten. Sofern nicht anders angegeben, ist es wahrscheinlich ratsam, sich vorzustellen, dass es nach einem Soft-Reset keine Garantie für den Pufferinhalt gibt. Der richtige Ansatz besteht darin, anzunehmen, dass der Puffer alle Daten enthalten wird, die Sie am meisten stören würden, also sollten Sie bereit sein, alles zu akzeptieren, was dort sein könnte.

Der Grund, warum Speicher und andere Chips Reset-Leitungen haben, ist nicht notwendigerweise, sie zu "löschen", sondern sie während Niedrigenergiezuständen vom Bus zu trennen.

Das Problem besteht darin, dass beim Einschalten und Herunterfahren die Strobe-, Adress- und Datenleitungen immer noch mit dem Bus verbunden sind, während die Spannung von 0 V auf Vcc ansteigt (oder abfließt), und dies kann sich als digitales Rauschen manifestieren, das zufällige " garbage", die während des Bootens in den Speicher geschrieben wird. Dies ist besonders problematisch für speicherabgebildete IO-Geräte und Flash-Speicher.

Sie können einen "Brown-out-Reset"-Chip verwenden, um sicherzustellen, dass Ihr Gerät im RESET-Zustand gehalten wird, bis sich die Stromversorgung stabilisiert hat und den Buswerten vertraut werden kann. Viele moderne Mikrocontroller haben eingebaute Brownout-Detektoren.

Datenblatt deckt dies ab:

RESET: Ein Low-Zustand am Reset-Pin (RESET) beendet die laufende Operation und setzt die interne Zustandsmaschine in einen Ruhezustand zurück. Das Gerät bleibt im Reset-Zustand, solange am RESET-Pin ein Low-Pegel anliegt. Der Normalbetrieb kann wieder aufgenommen werden, sobald der RESET-Pin wieder auf einen hohen Pegel gebracht wird

Sie verlieren also keine Pufferwerte, aber jede laufende Operation wird gestoppt und die Zustandsmaschine wird zurückgesetzt. Die Daten im Puffer sind also ungültig (stimmen nicht mit dem aktuellen Status überein und stimmen möglicherweise nicht mit dem überein, was sich tatsächlich im Flash befindet, sie sollten als Müll behandelt werden).

Wenn Sie den Software-Reset auslösen, während ein Schreib- oder Lesevorgang vom Flash stattfindet, stoppt der Vorgang und nach Freigabe des Software-Reset befindet sich der Chip in seinem Standardzustand. Dies bedeutet, dass der Software-Reset Flash-Daten beschädigen kann, ohne die Pufferwerte zu ändern. Wenn Sie auf den Flash schreiben, müssen Sie sicherstellen, dass Sie genügend Zeit haben, damit der Chip die Daten tatsächlich auf den Flash schreiben kann, bevor Sie den Software-Reset verwenden, oder Ihre Daten werden es nicht auf den Flash schaffen. Diese Zeiten sind in Abschnitt 8.2 des Datenblatts aufgeführt.

Genau genommen ist es auch nicht sicher, aus dem Datenpuffer zu lesen, als ob er nach einem Software-Reset gültig wäre. Sie müssen einen Befehl zum Kopieren von Daten aus dem Flash in den Puffer erneut ausgeben, bevor Sie sie lesen und sicher sein können, dass sie gültig sind (entspricht dem, was tatsächlich in Flash ist).

Zusätzlich:

Das Gerät enthält eine interne Power-on-Reset-Schaltung, sodass es während der Power-On-Sequenzen keine Einschränkungen für den RESET-Pin gibt. Wenn dieser Pin und diese Funktion nicht verwendet werden, wird empfohlen, den RESET-Pin extern auf High zu treiben

Und

Wenn das Gerät zum ersten Mal mit Strom versorgt wird oder wenn es sich von einem Reset-Zustand erholt, wechselt das Gerät standardmäßig in den SPI-Modus 3. Außerdem befindet sich der SO-Pin in einem hochohmigen Zustand und ein High-to-Low-Übergang auf dem CS PIN wird benötigt, um eine gültige Anweisung zu starten. Der SPI-Modus wird automatisch bei jeder fallenden Flanke von CS ausgewählt, indem der inaktive Taktzustand abgetastet wird. Nachdem die Stromversorgung angelegt wurde und VCC den minimalen Datenblattwert erreicht hat, sollte das System 20 ms warten, bevor ein Betriebsmodus gestartet wird

Es ist also kein externer Controller erforderlich, um den Chip beim Einschalten online zu bringen. Wenn Ihr Einschaltvorgang nicht länger als 20 ms dauert, um die Versorgungsspannung zu stabilisieren, sollten Sie keine Probleme mit der Stromversorgung haben.

Im Allgemeinen nein, ein Zurücksetzen ist nicht dasselbe wie ein Aus- und Wiedereinschalten. Sie müssen das System von Fall zu Fall analysieren, um festzustellen, was bei einem systemweiten und/oder lokalisierten Reset passiert. Aus Marks Antwort klingt es so, als wären Sie für dieses Ziel in Ordnung, drücken Sie Reset und müssen Sie nicht aus- und wieder einschalten. Bevor Sie jedoch eine Softwareversion bereitstellen oder veröffentlichen, testen Sie sie auch mit Power Cycles.

Mit Sram oder Dram. Wenn Sie die Stromversorgung nicht verlieren und das Zurücksetzen kurz genug ist, kann der Speicher sehr gut so aussehen, als hätte sich nichts geändert, aber verlassen Sie sich nicht darauf. Einige Systeme, insbesondere dram, paritätsgeprüfte, ecc-geprüfte Speicher durchlaufen einen Initialisierungsprozess, der das Löschen des Speichers umfassen kann. Verlassen Sie sich nicht darauf, dass es so ist, wie Sie es verlassen haben, es sei denn, das System wurde entwickelt, um den Speicher durch Zurücksetzen zu erhalten. Programme sollten sowieso immer schreiben, bevor sie einen Speicherort lesen (oder der Ort sollte von jemandem/etwas geschrieben werden, bevor er zum ersten Mal gelesen wird).