Alles über den Zustand der SD-Karte auf dem Raspberry Pi
Die SD-Karte ist - neben der Stromversorgung - eine wichtige zusätzliche Komponente des Raspberry Pi. Die Überwachung ihres Zustands ist sehr wichtig, um einen reibungslosen Betrieb des Raspberry Pi-Betriebssystems und eine gute Benutzererfahrung zu gewährleisten. Dieser Artikel zeigt Ihnen mehrere Möglichkeiten, wie Sie den Zustand Ihrer microSD-Karte überprüfen und überwachen können.
Zunächst gebe ich einen ausführlichen Überblick über die Funktionsweise von Speicherkarten, damit Sie die Möglichkeiten und Grenzen der Überprüfung des Zustands Ihrer SD-Karte verstehen können.
Dann erkläre ich, wie Sie Ihre microSD-Karte schützen können, indem Sie häufige Probleme von Raspberry Pi-Benutzern vermeiden. Wir gehen auch auf die besten microSD-Kartenmarken für Raspberry Pi ein, die wir empfehlen.
Wenn Sie möchten, können Sie auch weiter nach unten springen, um nur die Linux-Befehle zur Überprüfung des aktuellen Status der microSD-Karte zu erhalten.
Die Grundlagen: Das Innere der microSD-Karte
Die microSD-Karte enthält einen Flash-Speicherchip (links im Bild) und einen Mikrocontroller (rechts im Bild, meist ARM-basiert).
Blitzlicht
Der Flash-Speicher speichert Informationen durch "Einfangen" von Elektronendie mit Hochspannung durch einen Nichtleiter in eine so genannte bewegliches Tor(**). Die Elektronen sind also Teil eines Transistors, der je nach der Ladung des schwebenden Gates einen angeschlossenen Strom fließen lässt oder nicht. Theoretisch können sie nicht abfließen, weil das schwebende Gate elektrisch isoliert ist. Das bedeutet, dass die Informationen auch nach dem Abschalten der Stromversorgung erhalten bleiben.
Die Information wird immer zwischen Source (S) und Drain (D) gelesen. In das Floating Gate eingebrachte Elektronen erhöhen z. B. die Schwellenspannung des Transistors, ab der Strom fließen würde. Der Transistor sperrt dann bei einer normalen Lesespannung (leitet nicht).
Für die Programmierung des Floating-Gates sind deutlich höhere elektrische Spannungen (z.B. 10 V) notwendig als für den normalen Lesebetrieb (z.B. 3,3 V). Dabei spielt zusätzlich das Steuergate (V1/V2/V3) eine Schlüsselrolle.
Um alles zu löschen, treibt das Steuer-Gate Elektronen aus dem Floating-Gate, indem es eine hohe negative Spannung anlegt.
Die in microSD-Karten verwendeten NAND-Flash-Komponenten gruppieren die einzelnen Speichertransistoren zu Seiten und mehrere der Seiten zu Blöcken. Eine Seite hat zwischen 512 und 8192 Byte, ein Block kann bis zu 256 Seiten enthalten (also insgesamt 2048 kB bei 8kB Seitengröße).
Das Schreiben (für eine logische "1") kann bitweise oder zumindest byte-/wortweise erfolgen. Das Löschen (für eine logische "0") kann nur blockweise erfolgen. Unveränderte Informationen müssen neu einprogrammiert werden.
Flash-Speicher haben aufgrund des Programmierens und Löschens eine begrenzte Lebensdauer, die wir in Löschzyklen berechnen.
Der Grund für die begrenzte Lebensdauer ist die Beschädigung der isolierenden Oxidschicht, die das schwebende Gate vor Ladungsverlusten schützt und durch die hohen Spannungen verursacht wird. Sobald diese Schicht leitfähig wird, kann die Speicherzelle keine Informationen mehr aufnehmen.
Übrigens: Mehrstufige Zellspeicherzellen
Ursprünglich gab es nur zwei Ladungszustände (1 Bit an Informationen) pro Speicherzelle. Dank mehrerer Floating Gates pro Transistor speichern nun mehrstufige Zellspeicherzellen unterschiedliche Ladungszustände und damit mehrere Bits pro Speichertransistor. Beim Auslesen wertet das System aus, wie unterschiedlich der angelegte Strom durch den Transistor geleitet wird.
Dadurch lässt sich einerseits die Dichte der Speicherzellen deutlich erhöhen, andererseits ist das Auslesen langsamer und die Speicherzellen reagieren wesentlich empfindlicher mit Bitfehlern auf Ladungsverluste. Bei Single-Level-Zellen sind 100.000 bis 1.000.000 Schreib-Löschzyklen möglich, bei TLCs (Triple-Level-Zellen mit drei Bits pro Speicherzelle) ca. 1000 Schreib-Löschzyklen.
Aus diesem Grund haben industrielle SD-Karten in der Regel eine geringere Speicherdichte und verwenden SLC (Single Level Cells), um eine bessere Datenintegrität zu gewährleisten..
Der Controller
Die Aufgabe des Controllers ist die Verwaltung des Blitzes, insbesondere die Durchführung Verschleißnivellierung und Lesefehlerkorrektur. Die Leistung und Langlebigkeit der microSD-Karte hängt entscheidend von den im Controller verwendeten Algorithmen ab.
Flash-Speicher können aufgrund der oben beschriebenen Beschädigung der isolierenden Oxidschicht der Floating-Gates nicht beliebig oft wiederbeschrieben werden. Um Schäden an einzelnen, besonders häufig genutzten Bereichen zu vermeiden, der Controller variiert die physische Zuordnung zu den Blöcken, die vom Dateisystem logisch adressiert werden können (= Wear Leveling).
Diese Variation der physischen Zuweisung ist auch der Grund dafür, dass die Schreibprüfung der SD-Karte (durch Schreiben und Lesen mit Bad-Block-Tools usw.) die wirklich fehlerhaften Blöcke nicht identifiziert und es Ihnen ermöglicht, sie auf der Ebene des Betriebssystems/Dateisystems zu vermeiden! Nur der Flash-Speicher-Controller in der microSD-Karte weiß, welcher Block zu einem bestimmten Zeitpunkt beschrieben oder gelesen wird, und wie bereits erwähnt, kann sich dies im Laufe der Zeit ändern.
Defekte Blöcke (Bad Blocks) sind bereits im fabrikneuen Flash-Speicher vorhanden. Diese defekten Blöcke werden in einem speziellen Bereich des Flash-Speichers markiert.
Es werden auch Fehlerkorrekturinformationen für einzelne Blöcke verwaltet, so dass Lesefehler durch Prüfsummen korrigiert werden können. Der Controller fügt Blöcke mit gehäuften Lesefehlern zur Liste der fehlerhaften Blöcke hinzu und verschiebt die tatsächliche physische Zuordnung des logischen Blocks.
Die microSD-Karte hat - je nach Hersteller - in der Regel etwa 10% freie Kapazität, um die schlechten Blöcke durch gute "Reserveblöcke" zu ersetzen.
Schmutzige kleine Geheimnisse: Probleme mit dem Flash-Speicher
Die Löschung erfolgt nur blockweise
Daten können nur Block für Block gelöscht werden. Das Löschen belastet die Speicherzellen und verkürzt ihre Lebensdauer - es entstehen neue fehlerhafte Blöcke.
Defekte Blöcke aus der Fabrik
Flash-Speicher werden bereits mit defekten Blöcken ausgeliefert. Im Laufe des Betriebes kommen weitere defekte Blöcke (Bad Blocks) hinzu. Der Controller versucht daher, durch Wear-Leveling möglichst gleichmäßig verteilte Blöcke zu schreiben / zu löschen.
MLC und TLC besonders empfindlich
Speicherzellen mit mehreren Ebenen (MLCs) reduzieren die Anzahl der Löschzyklen und damit die langfristige Zuverlässigkeit.
Lesen stören
Ein von mir noch nicht erwähntes, aber besonders perfides Phänomen ist Lesen stören. Selbst wenn nur von der Karte gelesen wird, kann dies - allein durch das Lesen - dazu führen, dass benachbarte Speicherzellen im selben Block ihre Programmierung ändern. Die Wahrscheinlichkeit, dass dies geschieht, steigt nach einigen 100.000 Lesevorgängen stark an.
Um Read Disturb zu vermeiden, protokolliert der Controller daher die Anzahl der Zugriffe auf einen Block, um ihn bei Überschreiten eines Schwellenwertes in einem Stück an eine neue Stelle zu kopieren und den ursprünglichen Block zu löschen. Danach kann der Block wiederverwendet werden.
All dies sind Dinge, die ein Controller kompensieren muss, um uns vorzugaukeln, dass es sich um eine "perfekte Speicherkarte" handelt, während sie im Inneren alles andere als perfekt aussieht!
Nicht zuletzt können mit Röntgenstrahlen geschriebene Bits ungewollt gelöscht werden. Hier kann nur ein röntgensicheres Design der Karte sicherstellen, dass die Daten unversehrt bleiben.
Hersteller & Auswahl einer guten Karte
Sowohl der Mikrocontroller und der Flash-Baustein als auch die fertige microSD-Karte können von verschiedenen Herstellern stammen - die Panasonic-SD-Karte auf dem Beispielfoto hat einen Samsung-Flash. Der Controller wurde in Japan hergestellt.
Es gibt vier Hersteller, die NAND-Flash-Geräte produzieren:
- Samsung <- Marktführer
- Toshiba
- IM Flash Technologies (Gemeinschaftsunternehmen von Micron Technology und Intel)
- Hynix in Zusammenarbeit mit Numonyx
Toshiba und Samsung produzieren den Großteil aller Chips.
SanDisk (empfohlen)
SanDisk und Toshiba haben ein Joint Venture für die Flash-Fertigung. Im Jahr 2009 übertrug SanDisk jedoch die Rechte an den Produktionsstätten an Toshiba und wurde damit zu einem Hersteller von Flash-Speicher ohne Fertigungsanlagen. Sie arbeiten noch immer bei der Speicherentwicklung zusammen. SanDisk und Toshiba sind zusammen mit Matshushita die Begründer des SD-Standards, der 1999 eingeführt wurde. SanDisk hat auch den microSD-Standard entwickelt.
Wir vertrauen schon seit langem auf die Marke SanDisk und haben bisher sehr gute Erfahrungen damit gemacht.
Samsung (empfohlen)
Wir empfehlen auch Speicherkarten von Samsung. Als Marktführer im Bereich NAND-Flash kann Samsung alle Komponenten der SD-Karte perfekt aufeinander abstimmen und verfügt über alle notwendigen Informationen für ein solides Produkt.
Kingston (NICHT empfohlen)
Wir haben schlechte Erfahrungen mit der Zuverlässigkeit von 128-GB-Karten von Kingston in einem kritischen Projekt gemacht. Kingston hat keine eigenen Produktionsstätten und kauft überschüssige Kapazitäten von anderen Flash-Herstellern. Folglich gibt es keine Garantie für eine gleichbleibende Leistung.
Die folgenden Artikel von Bunny Huang ist in diesem Zusammenhang ebenfalls interessant.
Toshiba
Toshiba, die Nummer #2 auf dem weltweiten DRAM-Markt, vertreibt auch seine eigenen Speicherkartenprodukte. SanDisk und Toshiba sind zusammen mit Matshushita die Begründer des SD-Standards, der 1999 eingeführt wurde. Wir haben bisher keine Erfahrungen mit Toshiba-Karten.
Transcend / Silicon Power
Wir haben auch Transcend- und Silicon Power-Karten verwendet, insbesondere im Niedrigpreissegment. Die Karten sind grundsätzlich gut, aber wir haben bei Transcend höhere Rückläufer/Defekte gesehen als bei SanDisk. Für kritische Projekte würde ich daher eher SanDisk / Samsung empfehlen.
Auswahl einer guten Speicherkarte
Um eine gute Speicherkarte auszuwählen, muss man sich zunächst für einen Hersteller entscheiden. Wir empfehlen Samsung oder SanDiskund möglicherweise Toshiba in die engere Wahl.
Als nächstes ist die Speicherklasse wichtig. Diese Klasse gibt die schnellste Schreibgeschwindigkeit Block für Block an. Es handelt sich nicht um die Schreibgeschwindigkeit für verstreute Schreibvorgänge mit wahlfreiem Zugriff, die in realen Anwendungen sinnvoller ist.
Eine höhere Klasse ist zwar teurer, wird aber wegen der deutlich höheren Leistung empfohlen. In der Regel versenden wir Karten der Klasse 10.
Unter diese Übersicht auf eLinux.orgkönnen Sie eine geeignete Speicherkarte auf Kompatibilität mit Ihrem Raspberry Pi prüfen. Wichtiger Hinweis: Die Raspberry Pi-Firmware wird ständig modifiziert, um die Kompatibilität mit Speicherkarten zu verbessern und Datenbeschädigungen zu vermeiden.
Sie sollten bei vertrauenswürdigen Quellen bestellen - zum Beispiel, wir bekommen unsere SanDisk microSD-Karten direkt von Raspberry Pi Trading und seriösen, großen deutschen Distributoren. Bei Amazon sollten Sie darauf achten, dass Sie direkt bei Amazon und nicht bei einem Marketplace-Händler bestellen.
Bestimmte Informationen (cid, csd, Datum, manfid, oemid, Serie) der microSD-Karte kann mit Linux gelesen werden, um zu prüfen, ob Sie den richtigen Hersteller erhalten haben. Beispiele mit einer Transcend-Karte:
cd /sys/class/mmc_host/mmc?/mmc?:*
echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"
man:0x000074 oem:0x4a60 name:USD hwrev:0x1 fwrev:0x0
echo "serial:$(cat serial) mdt:$(cat date)"
Seriennummer:0x401e39f2 mdt:03/2017
Die Hersteller-ID (manfid) wird zugewiesen durch SD-3C LLCsowie die OEM-/Anwendungs-ID (oemid). Die Website oemid identifiziert den OEM der Karte und/oder den Inhalt der Karte.
Der Produktname (Name) ist 5 Zeichen lang (ASCII). hwrev ist die Hardware-Revision und fwrev die Firmware-Revision. Zusammen bilden sie die Produktrevision (hwrev.fwrev).
Die Serie ist die Seriennummer der microSD-Karte. Es handelt sich um ein 32-Bit-Feld, das als Ganzzahl ohne Vorzeichen gelesen wird.
Die mdt (Herstellungsdatum) gibt an, wann die Karte hergestellt wurde - Jahr und Monat.
Sie können die Werte mit Websites vergleichen, um Betrug durch gefälschte microSD-Karten zu erkennen. Ich empfehle zu lesen Bunnys Blogartikel (einer) und dieser Artikel (zwei).
Stabil man/oem Kombinationen einer Marke deuten auf eine gut kontrollierte und konsistente Lieferkette hin. SanDisk hat zum Beispiel die folgende Kombination für alle Einträge im eLinux.org Wiki: man:0x000003 oem:0x5344. Andere Marken, wie z. B. Transcend, wechseln ihre Lieferanten, so dass gleichbleibende Qualität keine Selbstverständlichkeit ist.
Vermeidung von Datenbeschädigungen während des Betriebs
Die microSD-Karte ist die "Festplatte" des Raspberry Pi. Bei einer normalen Linux-Konfiguration funktioniert sie wie eine normale Festplatte - es finden sowohl Lese- als auch Schreibzugriffe statt. Linux protokolliert Informationen in vielen Protokolldateien und aktualisiert unter anderem die Dateizugriffszeiten. Die Daten ändern sich also häufig. Das ist etwas, wofür microSD-Karten von vornherein nicht konzipiert wurden.
Tipp #1: Raspberry Pi richtig herunterfahren und eine gute Stromversorgung verwenden
Auch einen Windows-Computer würden Sie nicht einfach ausstecken. Bei Linux-Computern und insbesondere bei den Raspberry Pi-Computern mit microSD-Kartenunterstützung ist es nur eine Frage der Zeit bevor die Daten bei Stromausfällen beschädigt werden.
Linux verfügt über Schreib-Lese-Caches, um Dateivorgänge zu beschleunigen. Wenn Sie den Pi einfach vom Stromnetz trennen, gehen möglicherweise die Informationen in den Schreib-Caches verloren, die noch nicht auf der microSD-Karte gespeichert sind.
Wie bereits erwähnt, verschiebt der microSD-Kontroller aktiv Daten zur Laufzeit, um den Verschleiß auszugleichen und Lesestörungen zu vermeiden. Dies geschieht ohne das Wissen des Linux-Systems ("transparent"). Und je nach Hersteller mehr oder weniger konservativ. Auch hier können - insbesondere bei Schreibvorgängen! - kann es zu Datenbeschädigungen und -verlusten kommen.
Stellen Sie also sicher, dass nach dem Herunterfahren Ihres Pi die ACT-LED des Raspberry Pi aufhört zu blinken, und ziehen Sie erst dann den Strom.
Eine schlechte Stromversorgung kann auch zu Problemen führen aufgrund von Stromausfälle (Unterspannung). Verwenden Sie im Zweifelsfall das von Raspberry Pi Trading empfohlene/gelieferte Netzteil.
Tipp #2 Nur-Lese-System mit Overlays
Ein Nur-Lese-System schützt die SD-Karte nicht vor Lesestörungen und damit vor Alterung durch die notwendigen Löschzyklen. Dies geschieht jedoch viel langsamer als beim aktiven Schreiben.
Ein schreibgeschütztes Dateisystem hat auch andere Vorteile, z. B. weniger Dateisystemprüfungen beim Starten.
Vor allem eingebettete Systeme - d.h. Systeme, die einem bestimmten Zweck in einer Anwendung dienen (z.B. Digital Signage) - benötigen nicht unbedingt die Möglichkeit, ständig neue Software zu installieren und genaue Protokolle vor Ort zu führen. Sie können die Protokolle über das Netzwerk an einen zentralen Server senden (ggf. verzögert), und bei Systemaktualisierungen kann das System in den Wartungsmodus versetzt werden, um die Aktualisierungen anzuwenden.
Hier sind einige Informationen aus dem Debian-Projekt, auf dem Raspbian basiert: https://wiki.debian.org/ReadonlyRoot.
Mit RAM-Disk-Overlays (in tmpfs) kann ein System weiterhin Protokolldateien schreiben oder Änderungen an Dateien vornehmen. Sie können die RAM-Disk-Overlays in regelmäßigen Abständen mit speziell dafür vorgesehenen Partitionen auf der SD-Karte synchronisieren. Sie sollten mit der RAM-Disk vorsichtig umgehen, damit sie nicht überläuft (wegen der Protokolldateien), und es steht natürlich weniger RAM-Speicher für normale Aktivitäten zur Verfügung.
Wir verwenden diese Technik mit unserem Produkt AnonymeboxEs muss davon ausgegangen werden, dass die Nutzer einfach den Stecker aus der Steckdose ziehen.
Sind Sie auf der Suche nach einem Partner, der eine solide Nur-Lese-Lösung für Ihr Embedded Raspberry Pi Projekt realisiert? Wir (als pi3g e.K.) bieten Beratungs- & Entwicklungsdienstleistungenfür Hardware und Software.
Tipp #3 Verringerung der Schreibvorgänge
Insbesondere bei älteren Kerneln aktualisiert Linux die Zugriffszeit für jeden Dateizugriff gemäß dem POSIX-Standard. Dies bedeutet, dass jeder Lesevorgang automatisch zu einem Schreibvorgang führt.. Es besteht die Möglichkeit, explizit festzulegen noatime in /etc/fstab falls Sie es nicht bereits eingestellt haben (Raspbian scheint es automatisch einzustellen).
Mehr Informationen über relatime und noatime
Systemprotokoll mit Maske deaktivieren:
systemctl mask systemd-journald.service
Symlink von /etc/systemd/system/systemd-journald.service nach /dev/null erstellt.
sudo systemctl mask rsyslog.service
Symlink von /etc/systemd/system/rsyslog.service nach /dev/null erstellt.
Andere Protokolle, die von anderen Anwendungen erstellt werden, und die Folgen der Deaktivierung dieser Dienste (z. B. dass bestimmte Dienste nicht mehr starten) sollten natürlich im Detail untersucht werden.
Auslagerungsdatei:
Wenn nicht genügend RAM vorhanden ist, verschiebt Linux einzelne RAM-Bereiche in eine SWAP-Datei. (Denken Sie daran, einen Raspberry Pi 4 mit ausreichend RAM zu verwenden, z. B. der Pi 4 / 4 GB oder der Pi 4 / 8 GB für Ihren Anwendungsfall). Mit dem folgenden Befehl können Sie den Status der SWAP-Datei überprüfen:
sudo systemctl status dphys-swapfile
● dphys-swapfile.service - LSB: Autogenerierung und Verwendung einer Auslagerungsdatei Geladen: geladen (/etc/init.d/dphys-swapfile) Aktiv: aktiv (beendet) seit Sat 2017-07-01 19:11:57 UTC; vor 8min Prozess: 498 ExecStart=/etc/init.d/dphys-swapfile start (code=exited, status=0/SUCCESS)
Sie können SWAP mit dem folgenden Befehl deaktivieren:
sudo systemctl disable dphys-swapfile
Schlussfolgerung
microSD-Karten im Dauereinsatz stellen die langfristige Zuverlässigkeit von Raspberry Pi-basierten Systemen auf eine harte Probe.
Mit der richtigen Stromversorgung, Nur-Lese-Systemen mit Overlays, konsequenter Reduzierung der Schreibvorgänge und der Auswahl einer guten SD-Karte einer bekannten Marke können Sie die Stabilität auf Dauer erhöhen.
Anmerkungen
(*) AnmerkungRaspberry Pi 3, 3B+ und 4 können von USB-Medien oder über das Netzwerk (Ethernet) ohne microSD-Karte booten.
Speziell für das Booten über das Netzwerk empfiehlt es sich, eine microSD-Karte mit einer speziellen Firmware zu installieren, da ein Timeout-Bug im Bootcode ein stabiles Booten verhindert (Raspberry Pi 3B).
Die obigen Erläuterungen zum Aufbau von Flash-Speicher gelten auch für USB-Sticks, da diese ebenfalls auf Flash-Speicher basieren.
(**) AnmerkungEine zunehmend verwendete Alternative zu Floating-Gates sind Charge-Trapping-Flash-Speicher, wobei das Funktionsprinzip dasselbe bleibt. Die Charge Trapping Flash-Zelle ermöglicht höhere Speicherdichten.
Wenn Sie mehr über SD-Karten mit Ihrem Raspberry Pi erfahren möchten, lesen Sie unsere zahlreichen Artikel zu diesem Thema hier.
Hallo,
Gibt es eine Möglichkeit, den Controller auf der SD-Karte daraufhin zu überprüfen, wie viele schlechte Plocks vorhanden sind?
Indem ich dies regelmäßig überprüfe, möchte ich ein Trenddiagramm erstellen.
Ich danke Ihnen für Ihre Arbeit.
Herzliche Grüße,
Peter
Das ist bei normalen SD-Karten nicht möglich, es sei denn, Sie haben das MP-Tool für den verwendeten Controller, das nie verfügbar ist.
Es wäre möglich, wenn die Karte industrietauglich ist und über SMART-Informationen verfügt (die im jeweiligen Datenblatt angegeben sind), und dann können Sie einen Code zum Auslesen der SMART-Daten schreiben.
Aber das ist nur der Anfang des Problems. Es gibt keinen Industriestandard für die Zustandsüberwachung von SD-Karten, so dass jeder Hersteller das Protokoll anders implementiert und es nicht immer veröffentlicht wird.
Der SMART-Bericht einiger Hersteller gibt nur einen Prozentsatz der verbleibenden Lebensdauer der Karte an, andere liefern detailliertere Informationen wie reservierte Blöcke, anfängliche fehlerhafte Blöcke, spätere fehlerhafte Blöcke, Anzahl der maximalen, minimalen und durchschnittlichen Löschvorgänge, P/E-Lebensdauer usw.
Derzeit kann ich die Gesundheitsstatistiken von Karten von Lexar, ADATA, ATP, Sandisk, Apacer, Metorage, Delkindevices, SiliconePower, Swissbit und einigen anderen auslesen.
Meine Motivation ist es, die SMART-Informationen von spottbilligen, gebrauchten Industriekarten zu knacken, die von Foresee hergestellt werden. Bisher konnte ich die Karten der Serien MPS/M9M/M9H/D7D/X52/X53 knacken, und ich arbeite noch an einigen weiteren Modellen.
Ich hoffe, dass es bald einen Industriestandard für SD-Karten mit intelligenten Informationen gibt. Ich fand es auch amüsant, dass einige SD-Karten eine höhere TBW-Lebensdauer haben als viele SSDs lmao
oh, ich vergaß zu erwähnen, dass die Mehrheit (aber nicht alle von ihnen, Scheiße.) der Karten gibt SMART-Informationen über das Senden von CMD56-Befehl an die Karte mit einem 32bit int-Argument, müssen Sie diese magische Zahl aus dem Datenblatt und jeweiligen Datenformat zu finden, um die Daten zu lesen. Wenn Sie das Datenblatt haben, dann sind Sie im Grunde fertig, schauen Sie sich sdmon Tool auf Github für Beispielcode.
Wenn das Datenblatt nicht verfügbar ist oder die magische Zahl nicht veröffentlicht wurde, müssen Sie den gesamten 31-Bit-Bereich von int iterieren (das niedrigste Bit ist immer 1), um sie mit Gewalt zu knacken, und das kann je nach Glück 12 Stunden bis zu einem halben Monat dauern. Ich hoffe, es gibt keinen bösen Hersteller, der seine magische Zahl mit 0xF_______ beginnt. Im Moment beginnen alle magischen Zahlen, die ich knacken/erfassen konnte, mit 0x1_______.
Bei einigen Karten ist eine komplexere Routine erforderlich, um die SMART-Informationen auszulesen, wie z. B. bei Apacer, aber es ist gut, dass die notwendigen Informationen im Datenblatt enthalten sind. Apacer stellt auch OEM-Karten für einige andere Marken her, so dass die gleiche Routine gilt.
[...] Gesundheit der SD-Karte (einschließlich bewährter Methoden zur Pflege der SD-Karte!) [...]
[...] Alles über den Zustand der SD-Karte / microSD-Karte auf dem Raspberry Pi [...]