Ich arbeite an einer Anwendung mit NOR-Flash-Chips. Ich musste die Chips mitten im Designprozess wechseln. Die angegebenen Unterschiede zwischen den neuen und alten Chips sind nur „Geräte-ID“ und „Sektor-Löschzeit“. Ich dachte, ich könnte angesichts der kleinen Unterschiede ohne Neuschreiben meines Flash-Treibers auskommen, aber der Treiber für den alten Chip funktioniert nicht mit dem neuen.
Warum ist die Sektorlöschzeit so wichtig für den Fahrer? Wie ändere ich es?
Die Sektorlöschzeit ist für jeden Treiber von Bedeutung, da es ein bisschen Timing ist, das notwendig ist, um den Chip richtig zu verwenden. Flash-Chips haben Löschzeiten , dh wie lange die spezielle Löschspannung an die Zellen angelegt werden muss, um sicherzustellen, dass sie gelöscht werden. Wenn diese Mindestzeit nicht eingehalten wird, werden die Zellen möglicherweise nicht vollständig gelöscht, was tatsächlich ein Datenfehler ist.
Einige Chips können auch eine maximale Löschzeit haben. Einige Chips erfordern die externe Hardware, um das Löschtiming durchzuführen, andere führen das interne Timing durch und setzen ein Statusbit, wenn das Löschen abgeschlossen ist. In diesem Fall müsste ein Treiber entweder die maximal mögliche Löschzeit abwarten oder das Bit abfragen, um sicherzustellen, dass das Löschen abgeschlossen ist, bevor er mit anderen Operationen fortfährt.
Wie bei jeder Spezifikation bedeutet eine Verletzung, dass auf keinen der anderen Parameter mehr Verlass ist. Wenn dieser Chip sich selbst löscht und nach Abschluss ein Bit setzt und der vorhandene Treiber dieses Bit abfragt, um den Abschluss des Löschvorgangs zu bestimmen, dann sollte keine Modifikation des Treibers erforderlich sein.
Auf jeden Fall ist es sehr, sehr schlechte Übung, zu denken, dass Sie mit der Verletzung einer Spezifikation "auskommen" können, nur weil sie nur ein wenig daneben liegt, und Sie sollten sich schämen, überhaupt darüber nachzudenken.
Sie haben keine Teilenummern erwähnt, aber die Hersteller von Flash-Chips haben im Laufe der Zeit verschiedene kleine Details zur Funktionsweise ihrer Chips geändert. Es ist möglich, dass Ihr Treiber einen Code hat, der die Geräte-ID verwendet, etwa "Wenn ID=dies, neue Methode verwenden, andernfalls Methode verwenden". Wenn der vorherige Chip eine "neue Methode" erforderte und der neue Chip eine andere ID hat, aber auch eine "neue Methode" erfordert, funktioniert der Code nicht, da versucht wird, die "alte Methode" zu verwenden. Es ist auch möglich, dass Ihr Code von einigen Details abhängt, wie das Gerät meldet, wenn es bereit ist. Wenn bei einigen alten Geräten Daten ausgestempelt und angehalten wurden, als das Gerät seinen „Bereit“-Status meldete, änderte sich der gemeldete Wert asynchron, wenn das Gerät den laufenden Vorgang beendete. Auf neueren Geräten
WütendEE
darron