dump_spi_flash
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
dump_spi_flash [2021/04/12 17:48] – [CH341A] kingkevin | dump_spi_flash [2021/04/13 18:14] – [BX48] kingkevin | ||
---|---|---|---|
Line 19: | Line 19: | ||
The difference between models is mainly the size (obviously), | The difference between models is mainly the size (obviously), | ||
- | + | {{: | |
- | {{: | + | {{: |
- | {{: | + | {{: |
- | {{: | + | {{: |
====== dumping tools ====== | ====== dumping tools ====== | ||
Line 35: | Line 35: | ||
The cheapest, and crudest, way to read/write SPI flash is using a CH341A based programmer. | The cheapest, and crudest, way to read/write SPI flash is using a CH341A based programmer. | ||
You can find them for less than $3. | You can find them for less than $3. | ||
+ | |||
+ | {{: | ||
+ | |||
Solder the SPI flash to a DIP-8 adapter board, and place it in the ZIF socket (Zero-Insertion-Force). | Solder the SPI flash to a DIP-8 adapter board, and place it in the ZIF socket (Zero-Insertion-Force). | ||
Line 40: | Line 43: | ||
To avoid soldering the chip on an adapter board, use sockets with spring contacts (the contacts need to be clean for it to work well). | To avoid soldering the chip on an adapter board, use sockets with spring contacts (the contacts need to be clean for it to work well). | ||
Be sure the jumper shorts pin 1 and 2 on the side (shorting pins 2 and 3 switched the CH341A to UART mode). | Be sure the jumper shorts pin 1 and 2 on the side (shorting pins 2 and 3 switched the CH341A to UART mode). | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
As software we will use [[https:// | As software we will use [[https:// | ||
Line 65: | Line 72: | ||
* slow speed (128 kbyte/s) | * slow speed (128 kbyte/s) | ||
* no power supply protection (if you insert the chip the wrong way around, you will fry it since VCC and GND/VSS get switched) | * no power supply protection (if you insert the chip the wrong way around, you will fry it since VCC and GND/VSS get switched) | ||
- | * operating voltage is 5V (you can [[https:// | + | * operating voltage is 5V (you can [[https:// |
* to support 1.8V flash chips, interpose an adapter board with level shifter | * to support 1.8V flash chips, interpose an adapter board with level shifter | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | ==== MiniPRO ==== | ||
+ | |||
+ | The [[http:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Advantages: | ||
+ | |||
+ | * supports 3.3-6.5V VCC, allowing to properly power 3.3V and 5.0V flash | ||
+ | * has over-current protection, in case you inserted the chip wrongly | ||
+ | * does signature checking (this is just a software check though) | ||
+ | * supports up to 21V VPP and has flexible pin configuration, | ||
+ | |||
+ | Disadvantages: | ||
+ | |||
+ | * does not support 1.8V (you can still use the same adapter as for the CH341A). the newer TL866II+ claims to support 1.8V, but from the [[https:// | ||
+ | * also slow (~ 100 kbyte/s) | ||
+ | |||
+ | For more information about the device (including reversed schematic), see [[https:// | ||
+ | |||
+ | To dump SPI flash, we will use [[https:// | ||
+ | |||
+ | < | ||
+ | # search for the right part using the top marking on the chip | ||
+ | minipro --search 25q32bv | ||
+ | |||
+ | Found TL866A 03.2.86 (0x256) | ||
+ | W25Q32BV | ||
+ | W25Q32BV@WSON8 | ||
+ | W25Q32BV@SOIC8 | ||
+ | W25Q32BV@SOIC16 | ||
+ | W25Q32BV(OTP) | ||
+ | W25Q32BV(OTP)@WSON8 | ||
+ | W25Q32BV(OTP)@SOIC8 | ||
+ | W25Q32BV(OTP)@SOIC16 | ||
+ | |||
+ | |||
+ | # read the device ID to be sure the connection work (it's not get_id as in the help, but read_id) | ||
+ | minipro --device ' | ||
+ | Found TL866A 03.2.86 (0x256) | ||
+ | Chip ID OK: 0xEF4016 | ||
+ | |||
+ | |||
+ | # alternatively, | ||
+ | minipro --auto_detect 8 | ||
+ | |||
+ | Found TL866A 03.2.86 (0x256) | ||
+ | Autodetecting device (ID: | ||
+ | S25FL032K@SOIC8 | ||
+ | W25Q32@MLP8 | ||
+ | W25Q32(OTP)@MLP8 | ||
+ | W25Q32BV | ||
+ | W25Q32BV@WSON8 | ||
+ | W25Q32BV@SOIC8 | ||
+ | W25Q32BV(OTP) | ||
+ | W25Q32BV(OTP)@WSON8 | ||
+ | W25Q32BV(OTP)@SOIC8 | ||
+ | W25Q32FV | ||
+ | W25Q32FV@WSON8 | ||
+ | W25Q32FV@SOIC8 | ||
+ | W25Q32FV(OTP) | ||
+ | W25Q32FV(OTP)@WSON8 | ||
+ | W25Q32FV(OTP)@SOIC8 | ||
+ | W25Q32V@MLP8 | ||
+ | W25Q32V(OTP)@MLP8 | ||
+ | 17 device(s) found. | ||
+ | |||
+ | |||
+ | # now read the memory | ||
+ | minipro --device ' | ||
+ | |||
+ | Found TL866A 03.2.86 (0x256) | ||
+ | Chip ID OK: 0xEF4016 | ||
+ | Reading Code... | ||
+ | </ | ||
+ | |||
+ | ==== BX48 ==== | ||
+ | |||
+ | The [[https:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Yes, it is expensive (> $500), but the hardware is good, and what you pay for is the support. | ||
+ | And I have to say that it is excellent. | ||
+ | Is a chip missing? | ||
+ | Just ask them and they will swiftly add support for it. | ||
+ | |||
+ | Note: This device is obsolete now, replaced by the [[https:// | ||
+ | The main difference is that the Batego I does not support VPP > 15V (only required by very old NMOS EPROM). | ||
+ | It still seems to be supported though. | ||
+ | |||
+ | The software is [[https:// | ||
+ | There is an auto-detect function, but I am too concerned it accidentally damages the chip. | ||
+ | Therefor I still select the target chip by hand. | ||
+ | |||
+ | On my setup it is not able to open the file dialog to allow me setting where I want to load/save the file (using version 3.8.8). | ||
+ | To circumvent the issue I open the built-it hex-editor. | ||
+ | There I can save read/write the data content, and save/load it. | ||
+ | |||
+ | To get the latest chip database (particularly if the Linux release it lagging), here how I update it: | ||
+ | |||
+ | < | ||
+ | wget https:// | ||
+ | unzip ChipDB.zip | ||
+ | sudo mv / | ||
+ | sudo mv ChipDB.db3 / | ||
+ | rm ChipDB.zip | ||
+ | </ |
dump_spi_flash.txt · Last modified: 2024/01/07 17:49 by 127.0.0.1