Flash-Speicher auslesen
Nachdem ich weiter im Datenblatt des SoC geblättert und es mit anderen Datenblättern der S3C-Familie verglichen habe, sieht es danach aus, als ob sie den gleichen Controller verwenden, um den NAND-Flash-Speicher anzusprechen wie den S3C2412, der von OpenOCD unterstützt wird. Ich ergänze die openocd.cfg entsprechend: nand device 0 s3c2412 s3c2416.cpu
Ich starte OpenOCD neu und teste den Zugriff auf den Flash-Speicher:
> nand probe 0 NAND flash device 'NAND 128MiB 3.3V 8-bit (Samsung)' found
Wunderbar! Wenn der S3C2416-SoC vom Flash-Speicher bootet, lädt der die ersten 8 KByte in den internen SRAM an der Adresse 0x40000000. Ich probiere, den Inhalt des Speichers in einer Datei zu speichern:
> nand dump 0 "first.bin" 0 8192
Der Inhalt der Datei sieht nach ARM-Maschinencode aus. Jetzt will ich den kompletten Inhalt des Flash-Speichers. Allerdings würde das Herunterladen von 128 MByte über die Schnittstelle mit 1 MHz sehr langsam sein. Ich probiere, die Übertragungsgeschwindigkeit anzuheben. 30 MHz funktionieren nicht, aber 20 MHz klappen. Also ändere ich openocd.cfg erneut:
adapter_khz 20000
Mit einer ARM-CPU gibt es allerdings noch weitere Möglichkeiten, den Vorgang zu beschleunigen. Indem OpenOCD ein wenig RAM auf dem Oszilloskop benutzen darf, kann es etwas ARM-Code hochladen und auf der CPU ausführen, anstatt Code Zeile für Zeile auszuführen. Ich ändere die Konfigurationsdatei erneut. Der Code wird dabei am Ende des DDR-RAMs platziert (0x30000000 + 64MByte - 1MByte = 0x33f00000):
s3c2416.cpu configure -work-area-phys 0x33f00000 -work-area-size 0x20000 \ -work-area-backup 0 arm7_9 fast_memory_access enable arm7_9 dcc_downloads enable
Danach weise ich OpenOCD an, loszulegen:
> nand dump 0 "flash.bin" 0 134217728
Doch selbst mit dieser Beschleunigung würde der Download grob überschlagen mindestens zehn Stunden dauern. Also gehe ich erstmal nach Hause.
Allerdings übersehe ich dabei, dass ich aus Sicherheitsgründen die Stromversorgung abgesteckt habe und das Gerät im Batteriebetrieb läuft. Als ich am nächsten Tag ins Büro zurückkehre, ist das Oszilloskop aus und der Dump unvollständig. Allerdings kann ich die Übertragung erneut starten.
So habe ich nach zwei Tagen einen vollständigen Dump des Flash-Inhaltes. Sollte ich bei zukünftigen Experimenten Mist bauen, kann ich den Flash wieder auf den Werkszustand zurücksetzen.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
OpenOCD zum Debuggen | Register auslesen |
+1 Mehr davon und ich abonniere auch. Und wie laoladabamba sagt, die Weltraumartikel...
Aber ehrlich. Wenn's nur News über neue Grafikkarten gibt heulen die selben Leute über...
ich seh das ja auch immer mit einem zwinkernden Auge. Entwickler sollen entwickeln und...
Die Chancen dass es ein Linux ist sind relativ gross. Würde es mich interessieren hätte...
Hier kann man mal sehen, was Fachkraft wirklich bedeutet. *Davon* haben wir zu wenige.