Hi!
Kürzlich hab ich so einen Samsung UE46D5000 mit Bootloop geschenkt
bekommen. Kurzfristig lies er sich durch Eineisen des NAND Flash mit
Feuerzeuggas wiederbeleben. Mittlerweise ist ein neues drin, welches ich
vorprogrammiert auf Ebay erworben hab. Mal sehen, wie lang er läuft.
In dem Zusammenhang hat mich die Neugier des Laien gepackt und ich hab
mir eine Arduino FW fürs Bluepill samt dazugehöriger Desktop App
gestrickt, um den Ínhalt derartiger NAND Chips zu dumpen (und irgendwann
vielleicht mal zu beschreiben?). Ich hab meine Verbrechen mal
angehangen.
Aufgebaut ist der Spass natürlich fliegend mit ein paar Drahtbrücken.
Siehe Foto. Verschaltung ist im .ino zu lesen.
Getestet hab ich bisher mit zwei Flashes: K9F2G08U0M aus einem uralten
Flashdrive (256MiB) und dem "defekten"
K9GAG08U0E aus dem TV (2GiB+). Prinzipiell funktioniert das auch ganz
gut mit immerhin ca. 200KiB/s. Allerdings hab ich einige Restprobleme:
1.) Nach Anschluss der Stromversorgung ist das NAND Flash in keinem
vernünftigen Zustand. Mein nandReset() im setup() macht irgendwie nicht
das, was es soll. Delays davor im setup() helfen auch nicht. Ich lese
nur Mist, bis ich ein weiteres nandReset() über ein serielles Kommando
ausführe. Danach kann ich reproduzierbar immer lesen solange ich die
Stromversorgung nicht wegnehme (auch über Controller Resets hinweg).
Sicher ist da irgendwo ein dummer Fehler im Code und ich seh den Wald
vor lauter Bäumen nicht.
2.) Wenn ich mehrere Dumps hintereinander ziehe, dann sind diese nicht
völlig identisch.
a) Bei beiden Chips sind jeweils immer vereinzelte Bits unterschiedlich.
Ich schätz mal es trifft bei beiden so etwa 5-10% der Pages, und pro
Page dann meistens nur ein oder zwei Bits. Ich hab keinerlei Erfahrung
und kann nicht einschätzen, wie "normal" das ist und ob das durch die
ECC abgedeckt wird. Was ist da eure Erfahrung?
b) Bei beiden Chips sind jeweils immer eine Handvoll Pages komplett
unterschiedlich. Ich vermute einen Fehler oder zufällig falsche Bits bei
der Adressierung, wodurch eine andere als die beabsichtigte Page gelesen
wurde. Seht ihr einen offensichtlichen Fehler?
Danke!