Comments (20)
Hi! You have another manufacturer(KIOXIA) of this chip, I personally checked Toshiba TC58CVG2S0H programming, the chip ID was 0xCD! You can verify this yourself from another author - https://lore.kernel.org/patchwork/patch/1008151/ Unfortunately, I cannot add support for this chip due to my lack of it...
from snander.
Judging by the information from https://lore.kernel.org/patchwork/patch/1008151
- /*
-
- Toshiba SPI NAND read ID needs a dummy byte,
-
- so the first byte in id is garbage.
- */
- if (id[1] != SPINAND_MFR_TOSHIBA)
-
return 0;
Then the first byte can really be read as garbage
from snander.
Please check new workaround for Toshiba/KIOXIA...
SNANDer_linux.tar.gz
kioxia.patch.gz
from snander.
@McMCCRU Maybe it is possible to create a branch only for Toshiba/Kioxia
from snander.
I create a beta branch for changes and released.
v.1.7b
from snander.
Hi ANTI443! In SNANDer_linux.tar.gz is the executable file for Linux. Have you checked work SNANDer with your chip?
from snander.
@ANTI443 Are there any results?
from snander.
I made some board about SPI_to_MW_Adapter, see SPI_to_MW_Adapter
from snander.
Same problem
With CH341 v1.18 & AS Programme 2.2.0.8 no problem detect write & read spi flash
from snander.
Hi @McMCCRU ! My CH341A programmer (actually CH341B uses internal clock) can normally erase/write/read SPI NAND Flash of 128MiB: ESMT F50L1G41LB wiht SNANDer v.1.7.7 in Windows 11. But when I use SNANDer v.1.7.7 to erase/write/read SPI NAND Flash of 512MiB: KIOXIA TC58CVG2S0HRAIJ, I get some errors (also tested with an external 12MHz crystal oscillator). I don't know why. Is the data written/written/read correct?
[[[[[ Here is the Output Log ]]]]]
Microsoft Windows [Version 10.0.22621.963]
(c) Microsoft Corporation. All rights reserved.
E:\SNANDer -i
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.7 by McMCC [email protected]
Found programmer device: WinChipHead (WCH) - CH341A
Device revision is 3.0.4
spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
Get Status Register 1: 0x00
Get Status Register 2: 0x02
Using Flash ECC.
Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
E:\SNANDer -d -e
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.7 by McMCC [email protected]
Found programmer device: WinChipHead (WCH) - CH341A
Device revision is 3.0.4
spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
Get Status Register 1: 0x00
Get Status Register 2: 0x12
Disable Flash ECC.
Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
ERASE:
Set full erase chip!
Erase addr = 0x0000000000000000, len = 0x0000000021000000
spi_nand_erase_block : erase block fail, block = 0xba, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x2ff4000, len = 0x21000000, block_idx = 0xba
spi_nand_erase_block : erase block fail, block = 0x40f, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x10bde000, len = 0x21000000, block_idx = 0x40f
spi_nand_erase_block : erase block fail, block = 0x4a7, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x1330e000, len = 0x21000000, block_idx = 0x4a7
spi_nand_erase_block : erase block fail, block = 0x600, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x18c00000, len = 0x21000000, block_idx = 0x600
spi_nand_erase_block : erase block fail, block = 0x601, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x18c42000, len = 0x21000000, block_idx = 0x601
Erase 100% [553648128] of [553648128] bytes
Elapsed time: 8 seconds
Status: OK
E:\SNANDer -e
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.7 by McMCC [email protected]
Found programmer device: WinChipHead (WCH) - CH341A
Device revision is 3.0.4
spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
Get Status Register 1: 0x00
Get Status Register 2: 0x02
Using Flash ECC.
Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
ERASE:
Set full erase chip!
Erase addr = 0x0000000000000000, len = 0x0000000020000000
spi_nand_erase_block : erase block fail, block = 0xba, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x2e80000, len = 0x20000000, block_idx = 0xba
spi_nand_erase_block : erase block fail, block = 0x40f, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x103c0000, len = 0x20000000, block_idx = 0x40f
spi_nand_erase_block : erase block fail, block = 0x4a7, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x129c0000, len = 0x20000000, block_idx = 0x4a7
spi_nand_erase_block : erase block fail, block = 0x600, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x18000000, len = 0x20000000, block_idx = 0x600
spi_nand_erase_block : erase block fail, block = 0x601, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x18040000, len = 0x20000000, block_idx = 0x601
Erase 100% [536870912] of [536870912] bytes
Elapsed time: 7 seconds
Status: OK
E:\SNANDer -e -a 0x0 -l 0x8000000
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.7 by McMCC [email protected]
Found programmer device: WinChipHead (WCH) - CH341A
Device revision is 3.0.4
spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
Get Status Register 1: 0x00
Get Status Register 2: 0x12
Using Flash ECC.
Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
ERASE:
Erase addr = 0x0000000000000000, len = 0x0000000008000000
spi_nand_erase_block : erase block fail, block = 0xba, status = 0x4
spi_nand_erase_internal : Erase Fail at addr = 0x2e80000, len = 0x8000000, block_idx = 0xba
Erase 100% [134217728] of [134217728] bytes
Elapsed time: 2 seconds
Status: OK
E:\SNANDer -v -w mtd0_spi01_128M.bin -a 0x0 -l 0x8000000
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.7 by McMCC [email protected]
Found programmer device: WinChipHead (WCH) - CH341A
Device revision is 3.0.4
spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
Get Status Register 1: 0x00
Get Status Register 2: 0x12
Using Flash ECC.
Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
WRITE:
Write addr = 0x0000000000000000, len = 0x0000000008000000
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e80
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e80
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e80, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e81
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e81
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e81, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e82
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e82
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e82, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e83
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e83
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e83, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e84
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e84
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e84, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e85
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e85
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e85, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e86
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e86
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e86, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e87
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e87
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e87, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e88
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e88
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e88, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e89
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e89
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e89, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e8a
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e8a
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e8a, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e8b
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e8b
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e8b, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e8c
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e8c
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e8c, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e8d
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e8d
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e8d, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e8e
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e8e
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e8e, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e8f
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e8f
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e8f, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e90
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e90
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e90, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e91
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e91
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e91, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e92
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e92
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e92, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e93
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e93
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e93, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e94
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e94
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e94, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e95
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e95
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e95, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e96
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e96
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e96, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e97
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e97
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e97, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e98
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e98
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e98, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e99
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e99
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e99, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e9a
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e9a
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e9a, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e9b
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e9b
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e9b, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e9c
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e9c
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e9c, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e9d
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e9d
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e9d, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e9e
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e9e
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e9e, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e9f
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e9f
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2e9f, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea0
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea0
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea0, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea1
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea1
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea1, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea2
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea2
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea2, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea3
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea3
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea3, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea4
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea4
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea4, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea5
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea5
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea5, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea6
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea6
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea6, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea7
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea7
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea7, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea8
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea8
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea8, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ea9
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ea9
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ea9, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eaa
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eaa
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eaa, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eab
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eab
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eab, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eac
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eac
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eac, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ead
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ead
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ead, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eae
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eae
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eae, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eaf
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eaf
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eaf, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb0
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb0
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb0, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb1
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb1
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb1, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb2
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb2
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb2, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb3
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb3
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb3, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb4
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb4
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb4, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb5
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb5
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb5, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb6
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb6
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb6, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb7
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb7
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb7, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb8
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb8
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb8, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eb9
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eb9
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eb9, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2eba
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2eba
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2eba, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ebb
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ebb
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ebb, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ebc
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ebc
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ebc, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ebd
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ebd
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ebd, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ebe
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ebe
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ebe, status = 0x28
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2ebf
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2ebf
spi_nand_write_page : Program Fail at addr_offset = 0x0, page_number = 0x2ebf, status = 0x28
Written 100% [134217728] of [134217728] bytes
Elapsed time: 855 seconds
Status: OK
VERIFY:
Read addr = 0x0000000000000000, len = 0x0000000008000000
[spinand_ecc_fail_check] : ECC cannot recover detected !, page = 0x2e80
spi_nand_read_page: Bad Block, ECC cannot recovery detecte, page = 0x2e80
Status: BAD(-1)
E:\
from snander.
Hi @lgs2007m ! The problem is not in your programmer or my program, but in the NAND chip itself. It is normal that bad blocks may be present in the NAND, usually the NAND controller handles these errors itself and replaces the bad blocks with good ones from other memory locations. My program does not know how your nand controller works and how it works with bad blocks, whether it uses the next good block or a special backup table. I can only implement a mechanism for writing and reading the next block, but this may not work in your case. I usually write only the bootloader in such a situation, and then I write everything else through the bootloader.
from snander.
@McMCCRU Thanks for your help. You mean that this chip have bad blocks? OMG! I bought this chip from taobao.com, and the seller said it was a brand new chip.
from snander.
Yes, your chip has bad blocks, this is normal if the bad blocks are not at the very beginning of the memory and the bootloader can be written there. Next the nand controller should do everything. Try the new version of SNANDer with the -k option, this will allow you to ignore bad blocks or pages and use the next ones.
23f3508
from snander.
Yes, your chip has bad blocks, this is normal if the bad blocks are not at the very beginning of the memory and the bootloader can be written there. Next the nand controller should do everything. Try the new version of SNANDer with the -k option, this will allow you to ignore bad blocks or pages and use the next ones. 23f3508
Thanks! Thanks for your excellent work! This is very helpful~
from snander.
Just keep in mind that this method will work if the nand controller writes to the next good block, and not to another place. And this method will definitely not work if you clone data from one flash memory to another....
from snander.
Just keep in mind that this method will work if the nand controller writes to the next good block, and not to another place. And this method will definitely not work if you clone data from one flash memory to another....
OK. Thanks for reminding.
from snander.
Updated binaries for Linux, Windows and MacOSX.
8cf7027
from snander.
Updated binaries for Linux, Windows and MacOSX. 8cf7027
Hi, McMCCRU. I can't run SNANDer with -k. When I use -k, it just show the help message. Can you help me?
Output Log
E:\SNANDer -iSNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.8b1 by McMCC <[email protected]>
Found programmer device: WinChipHead (WCH) - CH341A
Device revision is 3.0.4
spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
Get Status Register 1: 0x00
Get Status Register 2: 0x12
Using Flash ECC.
Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
E:\SNANDer -k -e
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.8b1 by McMCC <[email protected]>
Usage:
-h display this message
-d disable internal ECC(use read and write page size + OOB size)
-o <bytes> manual set OOB size with disable internal ECC(default 0)
-I ECC ignore errors(for read test only)
-k Skip BAD pages, try read or write in to next page
-L print list support chips
-i read the chip ID info
-E select I2C EEPROM {24c01|24c02|24c04|24c08|24c16|24c32|24c64|24c128|24c256|24c512|24c1024}
select Microwire EEPROM {93c06|93c16|93c46|93c56|93c66|93c76|93c86|93c96} (need SPI-to-MW adapter)
select SPI EEPROM 25xxx {25010|25020|25040|25080|25160|25320|25640|25128|25256|25512|251024}
-8 set organization 8-bit for Microwire EEPROM(default 16-bit) and set jumper on SPI-to-MW adapter
-f <addr len> set manual address size in bits for Microwire EEPROM(default auto)
-s <bytes> set page size from datasheet for fast write SPI EEPROM(default not usage)
-e erase chip(full or use with -a [-l])
-l <bytes> manually set length
-a <address> manually set address
-w <filename> write chip with data from filename
-r <filename> read chip and save data to filename
-v verify after write on chip
E:\SNANDer -k -w mtd.bin -a 0x0 -l 0x600000
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.8b1 by McMCC <[email protected]>
Usage:
-h display this message
-d disable internal ECC(use read and write page size + OOB size)
-o <bytes> manual set OOB size with disable internal ECC(default 0)
-I ECC ignore errors(for read test only)
-k Skip BAD pages, try read or write in to next page
-L print list support chips
-i read the chip ID info
-E select I2C EEPROM {24c01|24c02|24c04|24c08|24c16|24c32|24c64|24c128|24c256|24c512|24c1024}
select Microwire EEPROM {93c06|93c16|93c46|93c56|93c66|93c76|93c86|93c96} (need SPI-to-MW adapter)
select SPI EEPROM 25xxx {25010|25020|25040|25080|25160|25320|25640|25128|25256|25512|251024}
-8 set organization 8-bit for Microwire EEPROM(default 16-bit) and set jumper on SPI-to-MW adapter
-f <addr len> set manual address size in bits for Microwire EEPROM(default auto)
-s <bytes> set page size from datasheet for fast write SPI EEPROM(default not usage)
-e erase chip(full or use with -a [-l])
-l <bytes> manually set length
-a <address> manually set address
-w <filename> write chip with data from filename
-r <filename> read chip and save data to filename
-v verify after write on chip
E:\SNANDer -k -w mtd.bin
SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.8b1 by McMCC <[email protected]>
Usage:
-h display this message
-d disable internal ECC(use read and write page size + OOB size)
-o <bytes> manual set OOB size with disable internal ECC(default 0)
-I ECC ignore errors(for read test only)
-k Skip BAD pages, try read or write in to next page
-L print list support chips
-i read the chip ID info
-E select I2C EEPROM {24c01|24c02|24c04|24c08|24c16|24c32|24c64|24c128|24c256|24c512|24c1024}
select Microwire EEPROM {93c06|93c16|93c46|93c56|93c66|93c76|93c86|93c96} (need SPI-to-MW adapter)
select SPI EEPROM 25xxx {25010|25020|25040|25080|25160|25320|25640|25128|25256|25512|251024}
-8 set organization 8-bit for Microwire EEPROM(default 16-bit) and set jumper on SPI-to-MW adapter
-f <addr len> set manual address size in bits for Microwire EEPROM(default auto)
-s <bytes> set page size from datasheet for fast write SPI EEPROM(default not usage)
-e erase chip(full or use with -a [-l])
-l <bytes> manually set length
-a <address> manually set address
-w <filename> write chip with data from filename
-r <filename> read chip and save data to filename
-v verify after write on chip
from snander.
e7e9d3f
I fix it.
from snander.
e7e9d3f I fix it.
Thanks! It works.
from snander.
Related Issues (19)
- Devices use 1.8v voltage HOT 2
- The read ECC data are all 0xFF, is this normal? HOT 3
- Adding support for different programmers. HOT 5
- Request for adding support for PN26Q01A HOT 4
- GigaDevice GD5F1GQ5UEYIG HOT 2
- Migrate a ROM MXIC HOT 1
- hello HOT 3
- SPI-Nand issue with programmer HOT 1
- '-a' flag will write to rest space of the whole chip by default. HOT 2
- Failed to write or erase when changing chips without reconnecting the programmer.
- ECC Fail Check HOT 1
- When I compile SNANDer, I got this error
- Are there plans to support FTDI ic ? HOT 2
- A build issue need fix! HOT 1
- Ecc error? HOT 5
- Question on status register and reading consistency HOT 1
- 128mb chip not reading correctly HOT 12
- SPI NAND Flash not Detected HOT 21
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from snander.