Hallo!
Ich hoffe, jemand kann mir bei meinem Problem helfen :-)
Ich möchte mot einem Teensy 2.0++ einen Toshiba TC58NVG0S3ETA00 NAND
Flash dumpen. Der NAND-Flash befindet sich auf dem Systemboard eines
Routers mit einem Broadcom BCM68385.
Ich versuche zunächst nur die Hersteller- und Chip-ID auszulesen, was
aber schon scheitert. Egal, was ich lese, ich erhalte immer denselben
Wert:
1
DEBUG readDataBus: 7C 1111100
2
DEBUG readDataBus: 7C 1111100
3
DEBUG readDataBus: 7C 1111100
4
DEBUG readDataBus: 7C 1111100
5
DEBUG readDataBus: 7C 1111100
6
MID: 7C
7
CID: 7C
Ich verwende einen 360 NAND Clip. Die Pinbelegung ist wie folgt:
Teensy <-> Clip/NAND
C0-C7 <-> I/O0-I/O7
B0 <-> /CE (FCE1)
B1 <-> /RE
B2 <-> CLE
B3 <-> ALE
B4 <-> /WP
B5 <-> /WE
B6 <-> RY/BY (FRB1)
VCC3.3 <-> VCC
GND <-> VSS (GND)
Datenlatt des NAND Chips:
http://www.wilsolucoes.com.br/datasheet/Tc58nvg0s3eta00.pdf
Code im Anhang.
Danke schonmal!
>NAND-Flash hängt am Broadcom BCM68385.
>Teensy kontaktiert NAND-Flash per 360 NAND Clip
Ist ein bisschen ins blaue geraten;
Hast du dafür gesorgt, dass der BCM68385 alle Signalleitungen des
NAND-Flash auf Hi-Z hält?
Weil wenn nicht arbeitet die I/O des Teensy gegen die I/O des BCM68385
und das wird dann nichts...
void schrieb:>>NAND-Flash hängt am Broadcom BCM68385.> >Teensy kontaktiert NAND-Flash per 360 NAND Clip>> Ist ein bisschen ins blaue geraten;> Hast du dafür gesorgt, dass der BCM68385 alle Signalleitungen des> NAND-Flash auf Hi-Z hält?
Habe ich nicht. Ich wüsste auch nicht wie. Auf die CPU habe ich momentan
keinerlei Zugriff. Es ist kein UART vorhanden. JTAG ginge, der Zugriff
auf den NAND bleibt mir aber verwehrt, weil es keinen Treiber für den
Broadcom NAND-Controller in OpenOCD gibt.
Um zu verhindern, dass das Teil bootet und dann an den Signalleitungen
des NAND rumspielt, setze ich zunächst alle IO-Pins auf High und warte
ein paar Sekunden. Der BCM kann dann nichts lesen und bleibt stehen. Das
scheint auch zu funktionieren, die Status LED bleibt aus und blinkt
nicht wie bei einem normalen Start. Das ganze ist nicht im angehängten
Code mit drin, da ich es so einfach wie möglich halten wollte.
Michael N. schrieb:> Habe ich nicht. Ich wüsste auch nicht wie.
Dann solltest Du zumindest messen, welcher Pegel an dem NAND Flash
anliegt. Sind ja nur wenige Leitungen, die du prüfen mußt und diese sind
gut (hoffentlich) zugänglich.
Für die HW-Entwicklung und den Zugriff aufs NAND nutzt Broadcom ein
eigenes Programm, nicht öffentlich gemacht, und da die Signalpegel zw.
NAND und BCM Chip spannungskomptatibel ist da kein Pegelwandler zwischen
(den man gfs. hochohmig schalten kann).
somit: Erst mal messen. Ergebnis hier posten.
Danach ist vermutlich klar, das es leider nicht geht.
Andrew T. schrieb:> Michael N. schrieb:>> Habe ich nicht. Ich wüsste auch nicht wie.>> Dann solltest Du zumindest messen, welcher Pegel an dem NAND Flash> anliegt. Sind ja nur wenige Leitungen, die du prüfen mußt und diese sind> gut (hoffentlich) zugänglich.
Ok, werd ich mal messen.
da1l6 schrieb:> CPU beim auslesen im RESET halten, könnte helfen.
Das werde ich auch mal probieren, Danke.
Hallo und erstmal sorry für die späte Antwort... ich hatte viel zu tun
in letzter Zeit, konnte mir das jetzt aber endlich mal ansehen.
Die IO-Pins lassen sich (im "aufgehängten" Zustand durch I/O-Pins beim
Start kurzschließen) ohne Probleme mit einem 4.7k Widerstand auf 0/1
ziehen. Bei den Steuerpins CE, ALE, CLE etc. klappt das nicht.
Ein Blick auf die Platine verrät auch warum: Die I/O Pins sind jeweils
mit einem 5k Widerstand an der CPU angeschlossen, die Steuerpins mit 33
bzw. 150 Ohm.
Ich habe also wohl drei Möglichkeiten:
- Hoffen, dass der Controller im JTAG Reset die Steuerpins in Ruhe lässt
(noch nicht getestet; vielleicht morgen)
- die SMD-Widerstandsnetzwerke auslöten (da dürfte im schlimmsten Fall
am wenigesten kaputtgehen, kann man ja nachkaufen. SMD löten ist auch
kein Problem für mich.)
- versuchen, den NAND auszulöten - nein, ich habe keinen Heißluftfön;
heißt, das wäre dann die "viel Lötzinn und Nadel-Hebel"-Methode, die
bisher zwar gut funktioniert hat, aber natürlich ein gewisses Risiko mit
sich bringt und deshalb nur der allerletzte Ausweg wäre.
Michael N. schrieb:> - versuchen, den NAND auszulöten - nein, ich habe keinen Heißluftfön;> heißt, das wäre dann die "viel Lötzinn und Nadel-Hebel"-Methode, die> bisher zwar gut funktioniert hat, aber natürlich ein gewisses Risiko mit> sich bringt und deshalb nur der allerletzte Ausweg wäre.
Ich würde da zum "CHIP QUIK SMD-1 Removal Kit" raten, spezielles Zinn
das bis 150°C flüssig bleibt... gibt bei youtube einige Videos zu dem
Thema... und ich hab es selbst schon benutzt... die 15~20 EUR sind es
echt wert...
Michael N. schrieb:> - die SMD-Widerstandsnetzwerke auslöten (da dürfte im schlimmsten Fall> am wenigesten kaputtgehen, kann man ja nachkaufen. SMD löten ist auch> kein Problem für mich.)
Obiges ist ein erprobter Weg, und würde ich Dir auch anraten bevor Du:
> - versuchen, den NAND auszulöten - nein, ich habe keinen Heißluftfön;> heißt, das wäre dann die "viel Lötzinn und Nadel-Hebel"-Methode,
nimmst.
Der Vorteil den Du bei der "nur Widerstände auslöten" hast, ist dass der
Flash von der Original Platine mit Vcc versorgt wird -- und das klappt
meist besser als sich Vcc vom Dediprog o.ä. Progger zu holen.
Zusätzlich ersparst Du dem Flash die thermische Belastung - mit
Sicherheit ein starkes Argument.