Raffinierte Frage
Wie liest und schreibt man Textinformationen von einem MTD SRAM-Gerät mit der Löschblockgröße Null?
Anmerkungen:
libmtd
nicht mit einer Löschblockgröße von null umgehen kann echo >
und cat
für mtdblock
zu verwenden, haben nur Müll erzeugt Original
Ich versuche, einen SRAM-Chip zu lesen und zu schreiben, der mit einem ARM-Prozessor verbunden ist, auf dem Linux läuft. Es ist mir egal, ob ich mit dem SRAM wie eine Datei, ein serielles Gerät oder eine Speicherpartition interagiert. Der vorhandene Gerätetreiber für den SRAM-Chip registriert das Gerät als MTD. Ich habe dies überprüft, indem ich /proc/mtd
:
Ich habe ein Tutorial gefunden, um die MTD mit MTD Utils zu formatieren. Das Problem, das ich erfahre, ist, dass ich nicht mit dem SRAM / MTD-Gerät interagieren kann, weil alle MTD / UBI / JFF2-Tools im User-Space abstürzen, wenn ich dieses Gerät anschaue, IE:
%Vor% Diese Ausnahme tritt auf, weil alle MTD-Dienstprogramme libmtd verwenden. Die mtd_get_dev_info1
Funktion in libmtd wird durch die Löschblockgröße geteilt und in meinem Fall ist die Löschblockgröße gleich Null.
Obwohl dieser Chip einen MTD-Treiber hat, glaube ich nicht, dass Schreibzyklen eine Rolle spielen, und deshalb ist der Löschblock Null. also meine Fragen sind die folgenden:
libmtd
ändern, um die Nulllöschblockgröße zu ignorieren? Wenn ja, wofür sollte ich eb_cnt
setzen? Zusätzliche Anmerkungen:
echo test > /dev/mtdblock0
und cat /dev/mtdblock0
zu machen und habe nichts als Müll Update 10/20 Die Löschblockgröße wurde im Treiber auf 1 geändert (ich wollte sie auf 4000 ändern, aber ich war mir nicht sicher über die Einheiten). MTD Utils löst die zuvor angegebene Ausnahme nicht mehr aus.
%Vor%Allerdings schlägt Ubiformat fehl:
%Vor%Update # 2 10/20 Leider führt das Setzen der Löschblockgröße auf 4000 (eigentlich 0x4000) dazu, dass der Kernel abstürzt, nachdem er ubiformat ausgeführt hat
%Vor%Update 10/23 Ich habe versucht, das Laufwerk normal mit fdisk zu formatieren, aber es scheinen Fehler bezüglich des Fehlens von Zylindern zu sein:
%Vor% Es gab ein zugrunde liegendes Hardwareproblem, das nach dem Fixieren das Schreiben und Lesen von Daten vom /dev/mtdblock0
-Gerät ermöglichte. Dies wurde überprüft, indem echo TEST > /dev/mtdblock0
zum Schreiben und cat /dev/mtdblock
zum Lesen verwendet wurde.
Hier ist eine Zusammenfassung der anderen Fehler, die bei der Untersuchung dieses Problems gefunden wurden.
cat /dev/mtdblock0
-Aufruf. Die Ausgabe wird alle gleich sein, während die tatsächliche nicht initialisierte Chipausgabe zufällig sein wird. libmtd
verwenden, einschließlich aller mtd-utils
, treten beim Umgang mit MTD-Geräten mit Löschblockgröße Null auf. fdisk
wird aufgrund der Zylindergröße von 0 fehlerhaft sein (möglicherweise ist es möglich, im Expertenmodus herumzukommen) Tags und Links linux-device-driver embedded embedded-linux