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.
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.
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.
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:
semaj
Wetterfahne
Feroze Mohamed