Hallo! Ich bin Anfänger in diesem Bereich und möchte gerne einen GD5F1GQ4UB SPI flash auslesen (http://www.gigadevice.com/product/detail/7/466.html). Nun hab ich bei der Suche nach passender Hard- und Software nichts gefunden: PonyProg und flashrom unterstützen diesen Chip nicht. Suche ich hier am falschen Ort oder gibt es keine Softwareunterstützung für diesen Chip? könnte mir jemand einen Tipp geben in welcher Richtung ich weitersuchen soll, bzw. ob ich das vergessen kann? Robert
Robert W. schrieb: > könnte mir jemand einen Tipp geben in welcher Richtung ich weitersuchen > soll, bzw. ob ich das vergessen kann? So etwas kann (fast) jeder uC, ATMEL MEGA auf jeden Fall. Falls du aber nicht programmieren kannst, wird es schon schwieriger.
Marc V. schrieb: > So etwas kann (fast) jeder uC, ATMEL MEGA auf jeden Fall. > Falls du aber nicht programmieren kannst, wird es schon schwieriger. Hallo Marc, danke für Deine Antwort! Ich hab ein wenig Erfahrung mit ATMEL aber nicht mit SPI und hab auf Deine Anregung mal schnell quergelesen: Eine Bibliothek habe ich nur für Winbond Flash Memory Chips gefunden (SPIFlash). Bleibt da nur noch die SPI-Bibliothek mit den Kommandos aus dem Datenblatt? Robert
Robert W. schrieb: > Bleibt da nur noch die SPI-Bibliothek mit den Kommandos aus dem > Datenblatt? DaBla für Flash ? Falls du das meinst, dann ja. Ich kenne dieses Flash nicht, aber es sollte nicht übermässig schwer sein - Kommandos raussuchen und probieren, zuerst mit irgendeinem Register oder ID auslesen oder so ähnlich...
Schade das Du nicht mit STM32 arbeitest. Für den und deinen Chip gibt es hier etwas: https://github.com/rgwan/stm32-gcc/blob/master/workspace/src/msc/bsp_nand.c Vielleicht lässt sich daraus eine abgespeckte Version für AVR machen.
hp-freund schrieb: > Schade das Du nicht mit STM32 arbeitest. Einen STM32 hab ich rumliegen. > Vielleicht lässt sich daraus eine abgespeckte Version für AVR machen. Da ist ja gleich ein ganzes Dateisystem dabei... Ich befürchte das macht die Sache kompliziert. Da fällt mir ganz was anderes ein: Wie lesen eigentlich die ganzen Minirouter die flash-chips? Ist das alles closed source oder könnte das mit einem Raspberry mit linux "out of the box" funktionieren? Robert
Weißt Du denn was drauf ist? Vielleicht ein Dateisystem? Auf jeden Fall gibt es einen Linux Treiber für den Chip. [dumme Idee] Was würde der Chip in einem SD Adapter machen? [/dumme Idee]
hp-freund schrieb: > Weißt Du denn was drauf ist? > Vielleicht ein Dateisystem? > ja, auch, aber ich möchte ein image file. > > Auf jeden Fall gibt es einen Linux Treiber für den Chip. > Super! ich probier das mal mit dem raspberry pi! > [dumme Idee] > Was würde der Chip in einem SD Adapter machen? > [/dumme Idee] Ich habe leider keine Ahnung was ein SD-Adapter macht. Robert
:
Bearbeitet durch User
Beitrag #4981903 wurde von einem Moderator gelöscht.
Hallo! Ich möchte bei hp-freund und rwalli herzlich für die guten Ideen bedanken! Mir ist es damit gelungen ein SPI Flash GD5F1GQ4UB von Gigadevice mit einem Raspberry Pi (1B) auszulesen. Den Treiber [1] gibt es aber erst seit 2019 im Mainline-Kernel (5.3). Der Raspbian Kernel ist derzeit 4.19, also habe ich den den Mainline-Kernel (5.4) kompiliert. Support für MTD Block Device und SPI-NAND habe ich in der Kernel-Konfiguration aktiviert. Weil der Mainline-Kernel keine Device-Tree-Overlays unterstützt habe ich einen Eintrag für das SPI-NAND direkt in das DTS gesetzt. Noch ein kleiner Bugfix im Treiber und das Flash erscheint als /dev/mtdblock0. Ich kopiere es gerade mit dd und sehe bereits gültige Daten. Bei Interesse kann ich den Prozess und genauer beschreiben und meine Patches teilen -- oder gar ein Image für den Raspberry Pi bereitstellen. Danke nochmal für die Ideen! Christian [1] https://github.com/torvalds/linux/blob/master/drivers/mtd/nand/spi/gigadevice.c
Hallo Christian, ich bin sehr an Details zum Prozedere interessiert (besonders am DTS mod und Patch) - ich stehe vor dem selben Problem and Daten aus diesem Chiptyp zu bekommen. Danke, Mario
Hier sind Binaries: https://drive.google.com/file/d/1WoTvIU7dZOQgkUYEzVBCMg9yF_WlHS7y/view?usp=sharing Patches kommen noch. Ein kleines Kochrezept dazu: Die Basis ist Raspberry Pi OS (früher Raspbian genannt) auf einer SD-Karte. Ich verwende 2020-05-27-raspios-buster-lite-armhf.zip. Die SD-Karte muss einmal bis zum Login-Prompt gestartet werden, weil der erstmalige Prozess sonst scheinbar nicht funktioniert. Den Inhalt von rpi1-spinand-v1.zip dann auf die Partition "boot" der SD-Karte entpacken. In einem Raspberry Pi Model 1B(+) starten. Andere Modelle werden vermutlich nicht alle funktionieren -- sie starten den falschen Kernel. Version prüfen: pi@raspberrypi:~$ uname -a Linux raspberrypi 5.4.0+ #3 Wed Jan 22 23:20:14 GMT 2020 armv6l GNU/Linux Kernel-Module entpacken: pi@raspberrypi:~$ sudo tar xfz /boot/lib_modules_5.4.0+.tar.gz -C /lib/modules Den Kernel-Output mitverfolgen: pi@raspberrypi:~$ tail -n 0 -f /var/log/kern.log & Treiber laden: pi@raspberrypi:~$ sudo modprobe spinand May 27 09:02:53 raspberrypi kernel: [ 311.606977] spi-nand spi0.0: GigaDevice SPI NAND was found. May 27 09:02:53 raspberrypi kernel: [ 311.607008] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 128 spinand versucht die ID auszulesen und erkennt daran den Typ. Es weden die SPI-Pins des Raspberry Pi mit 10 MHz und CS0 verwendet. Falls es Hardware-Probleme gibt kann das wiederholt werden: pi@raspberrypi:~$ sudo rmmod spinand ; sudo modprobe spinand May 27 09:04:18 raspberrypi kernel: [ 396.260712] spi-nand spi0.0: GigaDevice SPI NAND was found. May 27 09:04:18 raspberrypi kernel: [ 396.260742] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 128 Die ersten 128 Byte lesen: pi@raspberrypi:~$ sudo head -c 128 /dev/mtd0 | hd 00000000 10 00 00 24 00 00 00 00 80 00 3f 7c 80 00 3f 80 |...$......?|..?.| 00000010 80 00 40 00 80 00 40 60 80 00 00 00 80 00 40 00 |..@...@`......@.| 00000020 80 00 bf d0 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 80 00 21 f0 80 00 22 94 80 00 22 8c 80 00 39 a8 |..!..."..."...9.| 00000040 80 00 3a 94 80 00 3a 94 80 00 3a 94 80 00 3a 9c |..:...:...:...:.| 00000050 80 00 25 98 80 00 3a a4 80 00 3b 5c 80 00 21 50 |..%...:...;\..!P| 00000060 80 00 16 44 80 00 16 4c 80 00 23 54 80 00 16 24 |...D...L..#T...$| 00000070 80 00 24 98 80 00 16 54 80 00 22 e0 80 00 3a 94 |..$....T.."...:.| 00000080 Ein Image erstellen und Fortschritt ansehen: pi@raspberrypi:~$ sudo dd if=/dev/mtd0 of=/boot/spinand.img bs=16k & [2] 514 pi@raspberrypi:~$ sudo kill -USR1 514 253+0 records in 252+0 records out 4128768 bytes (4.1 MB, 3.9 MiB) copied, 35.0957 s, 118 kB/s pi@raspberrypi:~$ sudo kill -USR1 514 581+0 records in 580+0 records out 9502720 bytes (9.5 MB, 9.1 MiB) copied, 80.4399 s, 118 kB/s
Hier das Ganze in Aktion: https://photos.google.com/share/AF1QipP5M9s_O8QJaqFuOtV1GZZSeEtGuUNJW1Fw4fSZsZfwZpwejPcniprRKlQ05TXg8g?key=aU9BRER4aG1CenBsU1kxOWVKTUdqdDJZMTBUNjl3 Es wird der Flash von einem DSL-Router ausgelesen. Damit ich nicht auslöten muss habe ich den Router eingeschaltet und per Konsole am UART den Startvorgang des Routers im Bootloader gestoppt. Dann klappt der Zugriff vom Raspberry Pi.
Hier sind Patches gegen Mainline Linux 5.4: https://pastebin.com/bgFDtb40 https://pastebin.com/X6K1EeAK Sollte sich analog auf alle Kernel ab 5.0 anwenden lassen.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.