Ich überarbeite einige meiner Designgewohnheiten, und eine davon wird ernsthaft geprüft: Das SPI-basierte Speichergerät besteht aus (Mikro-) SD-Karten, da sie ein Preis-Leistungs-Verhältnis aufweisen und im Allgemeinen höhere Geschwindigkeiten aufweisen.
Unter den drei Haupttypen von SPI-basierten Speichergeräten - (Mikro-) SD-Karte, DataFlash und 25Cxx
SPI-EEPROM der einfacheren Serie (und auch integriertes EEPROM für Mikrocontroller und 24Cxx
I2C-EEPROM), ist dies das geeignete Medium für die jeweiligen Anwendungsfälle unten? Denken Sie daran, dass ich alle Medien als Raw-Block-Geräte verwende, sodass das Argument "SD-Karten benötigen ein Dateisystem" nicht gültig ist.
Anwendungsfälle:
- Systemkonfigurations- und Kalibrierungsdaten. Beispiele: MAC-Adresse für die Ethernet-Schnittstelle, gemessene Spannung der integrierten Spannungsreferenz.
- Protokolle. Beispiel: Daten von Sensoren erfasst.
- Code und Code-Ressourcen (zu groß, um in den Programmspeicher zu passen oder tragbar zu sein). Beispiel: Systemaktualisierungen, Internationalisierungs- und Lokalisierungszeichenfolgen, Benutzeroberflächenressourcen, Schriftarten.
- Sicherheits- und Digital Rights Management. Beispiel: Kryptografische Schlüssel (öffentliche und / oder private, symmetrische und / oder asymmetrische) digitale Signaturen.
spi
flash
eeprom
data-storage
Maxthon Chan
quelle
quelle
Antworten:
Grundsätzlich hängt die Auswahl hauptsächlich von zwei Kriterien ab: ob die zu speichernden Daten groß oder klein sind und ob sie häufig neu geschrieben werden oder nicht:
Ich werde nicht näher auf den Unterschied zwischen beiden eingehen, er wurde bereits behandelt:
In Bezug auf SD-Karten: Die SD-Karte ist ein entfernbarer Flash-Typ und unterliegt als solcher denselben Einschränkungen wie ein normaler Flash. In der Regel wird jedoch NAND-Flash verwendet, während in seriellen Flash-Chips normalerweise NOR-Flash verwendet wird. NAND-Flash ist bequemer zum Schreiben (kleinere Seiten, schnelleres Löschen), aber weniger zuverlässig. Sie können nach einer Weile schlechte Blöcke bekommen, wenn Sie viele Schreibvorgänge ausführen. Verschleißnivellierung kann dies abschwächen, ist jedoch nicht immer in billigen SD-Karten implementiert ( Stimmt es, dass eine SD / MMC-Karte eine Verschleißnivellierung mit einem eigenen Controller durchführt? ). Sie könnten es in Software implementieren, aber es ist nicht trivial.
Die Wahl der Schnittstelle (I2C oder SPI) ist jedoch völlig unabhängig. I2C ist langsamer, verwendet jedoch weniger Pins. I2C-EEPROM ist normalerweise auch billiger als SPI, aber Sie entscheiden sich normalerweise für die Verwendung des einen oder anderen, je nachdem, wie Sie MCU-Pins in Ihrer Anwendung zugeordnet haben.
Jetzt haben Sie bestimmte Anwendungsfälle angegeben. Schauen wir sie uns also einzeln an:
Systemkonfigurations- und Kalibrierungsdaten
Nun, dies bringt nicht viele Einschränkungen mit sich: Diese Daten sind normalerweise sehr klein und ändern sich nicht oft. Am einfachsten ist es also, es dort zu platzieren, wo es weniger kostet:
Wenn auf Ihrem Gerät kein anderer Bedarf an dauerhaftem Speicher besteht und kein internes EEPROM in der MCU vorhanden ist, können Sie möglicherweise eine bestimmte Flash-Seite im Flash der MCU selbst verwenden (sofern die MCU dies zulässt). Andernfalls können Sie auf ein kleines externes EEPROM zurückgreifen.
Beachten Sie, dass es im speziellen Fall von MAC-Adressen EEPROMs gibt, die mit einer vorprogrammierten MAC-Adresse verkauft werden, die garantiert eindeutig ist (z. B. Microchip 24AAxxx). Dies wäre also der richtige Weg, es sei denn, Ihnen wurde von IEEE offiziell ein Adressblock zugewiesen oder Sie sind bereit, das Risiko einzugehen, lokal zugewiesene Adressen zu verwenden.
Protokolle
Dies ist normalerweise groß und ändert sich häufig. Groß bedeutet Blitz, nicht EEPROM. Sie können also entweder einen Flash-Chip oder eine SD-Karte verwenden. Wenn die Protokolle jedoch häufig neu geschrieben werden, sollten Sie eine SD-Karte verwenden. Andernfalls besteht die Gefahr, dass der Flash-Chip abgenutzt wird. Wenn er auf die Platine gelötet ist, ist der Austausch schwieriger als bei einer SD-Karte. Beachten Sie auch, dass beim Schreiben von Protokollen über die gesamten Flash-Seiten die Verschleißnivellierung tatsächlich trivial zu implementieren ist.
Wenn es sich um kleine Protokolle handelt, haben Sie Glück, wählen Sie das EEPROM (solange die Ausdauer akzeptabel ist).
Wenn Ausdauer ein echtes Problem ist, gibt es zusätzliche Lösungen mit praktisch unbegrenzter Ausdauer und relativ großer Größe: F-RAM und MRAM. Aber diese kosten einen Arm und ein Bein, und Sie haben sie nicht als Option erwähnt. Beachten Sie auch, dass diese beiden neueren Technologien eine viel bessere Lösch- / Schreibgeschwindigkeit als Flash erzielen. Für die kontinuierliche Protokollierung kann dies daher interessant sein.
Code und Code-Ressourcen
Normalerweise groß, ändert sich aber nicht oft. Ein externer Flash-Chip (typischerweise NOR-Flash) ist hierfür ideal.
Sicherheits- und Digital Rights Management
Dieser ist schwieriger. Wenn es wirklich vertrauliche Daten enthält, die niemals extrahiert werden sollten, sollten Sie eine Smartcard im SIM-Formfaktor verwenden (eventuell mit einer benutzerdefinierten Firmware). Aber das ist natürlich kompliziert das Design viel . Eine alternative (einfachere und billigere) Lösung kann ein dedizierter Sicherheitschip wie die Atmel AT88SC-Serie sein, aber die auf dem Chip verfügbaren Befehle müssen für Ihre spezifische Anwendung sinnvoll sein. Was auf diesem Chip getan werden kann und unter welchen Bedingungen, muss sorgfältig geplant werden.
Wenn Sie nur "grundlegende" Sicherheit benötigen, ist es am einfachsten, das interne MCU-EEPROM zu verwenden. Es ist nicht so sicher wie eine Smartcard oder ein dedizierter Chip (der bestimmte Sicherheitsmaßnahmen wie Schutz vor leichten Angriffen, Gegenmaßnahmen gegen Strom- / Fehleranalyse innerhalb des Chips usw. enthält), aber dies ist das Beste, was Sie können tun.
Andernfalls haben Sie, wenn kein internes EEPROM vorhanden ist, dieselben Optionen wie für die Konfigurations- / Kalibrierungsdaten. Die Verwendung eines externen Chips zum Speichern sicherer Daten ist jedoch ein Risiko, da die Datenleitungen mit einem einfachen Logikanalysator leicht überwacht und die sensiblen Daten extrahiert werden können. Selbst wenn EEPROM als schwieriger zu manipulieren gilt als Flash, macht die Auswahl des einen oder anderen im Fall eines externen Chips aus Sicherheitsgründen keinen Unterschied.
Schließlich ist die SD-Karte hier definitiv die schlechteste Idee, da sie herausnehmbar ist. Die sensiblen Daten können dann von einem PC gelesen werden, ohne dass eine bestimmte Hardware erforderlich ist.
quelle