Zuverlässigkeit des Mikrocontroller-Speichers: Info-Speicher vs. externer Flash

Ich hatte eine kleine Frage, auf die ich in Google keine kurze Antwort finden konnte. Zum Speichern kleiner Datenmengen (z. B. 8 Bytes) in einem eingebetteten System (das auch einen externen Flash enthält) ist es vorzuziehen, in EXTERNAL FLASH anstelle des INFO MEMORY des Controllers (in meinem Fall MSP430) zu speichern.

Meine Abfrage ist nicht spezifisch für MSP430, sondern allgemein.

Mir wurde von meiner Leitung gesagt, dass INFO Memory nicht zuverlässig ist und externer Flash verwendet werden sollte. Ich bin nicht überzeugt.

Ich hatte gehofft, ob es technische Gründe dafür gibt, welcher Speicher zuverlässiger ist (wenn man bedenkt, dass beim Schreiben in den Speicher mit angemessener Sorgfalt vorgegangen wird).

Vielen Dank im Voraus.

Das klingt wie eine Frage für Ihren Lead. Vielleicht gibt es einen bestimmten Kontext oder eine Anwendung, wo dies der Fall ist.
Die Frage hängt auch davon ab, wie wertvoll die Informationen sind. Wenn es sich um Kalibrierungsdaten handelt, die selten geschrieben werden und deren Reproduktion teuer und zeitaufwändig ist, wählen Sie die sicherste Methode, die Sie haben. Welche Methode überlebt das Entfernen eines ICs von der Platine und das erneute Installieren?
@WeatherVane, Die Daten, die ich speichere, sind der CRC des Firmware-Images. Wird verwendet, um die Firmware zu aktualisieren (was passieren kann oder nicht). Daher sind die Schreibzyklen sehr niedrig und die Lesezyklen höher. In keinem Fall wird irgendein IC entfernt. Meine Frage war, die 'sichere' Wahl zwischen den 2 zu kennen.

Antworten (3)

Aus rein technischer Sicht sehe ich keinen unmittelbaren Grund, warum externes Flash bei gleicher Anzahl von Lösch- / Schreibzyklen und Speichervolumen besser wäre.

Wenn Sie alle Datenblätter überprüft haben, können Sie dies mit Ihrem Vorsprung aufgreifen, da dies dem Unternehmen Geld sparen und Ihnen einige "Punkte" für Ihre nächste jährliche Überprüfung oder eine Vertragsverlängerung usw. einbringen könnte. Aber tun Sie es nicht Widersprechen Sie dem, was Ihr Lead sagt, ohne ihn/sie zuerst auf Ihre Seite zu ziehen.

Auch die technisch überlegene Lösung ist möglicherweise nicht die richtige Lösung für Ihr Unternehmen oder Ihr Projekt.

Möglicherweise "verschwenden" Sie Geld für Chips, um an anderer Stelle Geld zu sparen, z. B. bringen Sie diese Flash-Chips vielleicht gerade über eine Mindestdollarschwelle hinaus, um kostenlosen Support zu erhalten, der sonst mehr kosten würde als der unnötige Flash.

Oder Sie verwenden externes Flash, weil der Endkunde dies erwartet/erfordert. Ich habe gesehen, wie Kunden aus scheinbar unsinnigen Gründen sagten: "Ich soll jedoch keine Komponente X verwenden", aber die Kunden bezahlen die Rechnungen :).

Oder vielleicht haben Sie absolut Recht, aber es ist zu spät/kostspielig, eine Platinen- oder Stücklistenänderung vorzunehmen.

Der Punkt ist: Wenn Sie ein echtes physisches Produkt herstellen, gibt es viele Faktoren hinter Entscheidungen, die für einen Einstiegsentwickler oder sogar einen sehr erfahrenen Entwickler, der neu in der Embedded-Arbeit ist, möglicherweise überhaupt keinen Sinn machen.

Danke für Ihre Antwort. Ich stimme dem, was Sie erwähnt haben, vollkommen zu. Ich wollte jedoch den technischen Grund dafür wissen, warum ich für mein eigenes Lernen und Wachstum das eine gegen das andere bevorzuge. Und ich möchte meinen Junioren das auch nicht irgendwann in der Zukunft aufzwingen, ohne dass ich dafür die volle Berechtigung habe. Auch in meinem Projekt habe ich bereits externes Flash für andere Zwecke an Bord. Wie gesagt, ich will nur lernen.

Ich kenne keinen Grund, warum ein externer FLASH-Speicher zuverlässiger sein sollte als ein interner FLASH-Speicher. Wenn es damals nicht technisch zuverlässig wäre, wäre das Programmieren des Chips wie Roulette spielen ;-).

Im Vergleich zu RAM-Speichern können FLASH-Speicher jedoch nur eine geringe Anzahl von Umschreibzyklen benötigen (~1000 bis zu ~10.000 Mal, je nach Typ). Aber das ist auch beim externen Blitz der Fall. Wenn Sie also kontinuierlich Daten schreiben möchten, wäre es besser, batteriegepuffertes RAM zu verwenden (z. B. DS1307 ist eine RTC mit zusätzlichen 56 Bytes nichtflüchtigem RAM). Eine Alternative ist EEPROM, das ~1.000.000 bis ~100.000.000 Mal programmiert werden kann.

Wenn Sie Ihre MCU verwenden, um häufig neue Programme auszuprobieren, bei denen sich die von Ihnen erwähnten zusätzlichen Daten dann nicht ändern, ist es wahrscheinlich besser, einen externen FLASH zu verwenden, um ein versehentliches Überschreiben der Daten zu verhindern. Vielleicht war das die Intention deines Leads.

Und es ist auch möglich, dass die Daten aus der Programmausführung stammen. (?) Dann, wenn Sie nicht aufpassen, könnte eine Neuprogrammierung des Chips die zuvor gesammelten Daten überschreiben. Das wäre beim externen Speicher nicht der Fall. Es ist also möglich, dass Sie wertvolle Daten zerstören, indem Sie den Chip neu programmieren. Das könnte auch die Bedeutung dessen sein, was Ihr Lead gesagt hat.

hallo, danke für die antwort. Im Grunde genommen sind Schreibzyklen für den externen Speicher im Vergleich zum INFO-Speicher hoch, was sinnvoll ist, aber in meinem Fall werde ich den INFO-Speicher sehr selten zum SCHREIBEN und häufiger nur zum LESEN verwenden. Auch der INFO-Speicher ist passwortgeschützt und kann nicht versehentlich überschrieben werden. Ich habe eine dedizierte Funktion, die den Infospeicher entsperrt, schreibt und wieder sperrt. Ich verwende dies, um den CRC der Bilddatei zu speichern. und dieser CRC wird sehr selten aktualisiert (wenn jemals die Firmware aktualisiert wird, was möglicherweise 2 Mal in ihrem gesamten Lebenszyklus ist).

Nun, das kann von so vielen Dingen abhängen. Aber zuerst: Hast du ihn/sie gefragt "Warum?" Was war die Antwort?

Wie auch immer, wenn alle Dinge gleich sind (einschließlich Schreibdauer – übrigens, bitte geben Sie den externen Flash-Chip an, damit wir genauer sein können!), gibt es Probleme wie:

  • Zweck und Lebenszyklus der Daten, die Sie aufbewahren müssen: Müssen sie einen MCU-Ausfall/ein Upgrade überleben? (Siehe auch den Kommentar von Weather Vane zu der Frage.)

  • Die Sache, auf die Peter P. Kiefer auch anspielte: Neben allgemeinen Programmierfehlern, die für internes und externes Flash ungefähr das gleiche Risiko darstellen, könnte der Infospeicher auch versehentlich durch Code überschrieben werden, der nur für die Manipulation des MSP spezifisch ist.

  • Leistung: Das Schreiben auf den MSP-Flash erfordert einen bestimmten Mindestspannungspegel.

  • Timing: Falsch eingestellte Systemuhr oder falsche (z. B. zu lange) Schreibzeit können das Flash-Update vermasseln.

usw. Je nach externem Chip gelten diese potenziellen Fallstricke dort möglicherweise nicht. (Aber vielleicht gibt es noch andere...)

Siehe (viel) mehr Details über Überlegungen zum MSP430-Flash, z. B. hier:

Danke für die Antwort und die Links. 1. Die gespeicherten Daten umfassen maximal etwa 4 bis 8 Bytes, und WRITE findet nur ein- oder zweimal in seinem gesamten Lebenszyklus statt. die READ-Operation findet jedoch häufiger statt. 2. Der Infospeicher ist passwortgeschützt und vom Codestandpunkt aus besteht die geringste Chance, dass Daten überschrieben werden. 3. Meine Besorgnis war, dass nach dem Schreiben von Daten in den Speicher die Möglichkeit besteht, dass die Daten im Vergleich zum externen Flash beschädigt werden. schon mal danke für die links. Ich werde den Datenerhalt des INFO-Speichers überprüfen.