Discussion:
[flashrom] 64Mbit IS25LP064A not recognized
Buhrow, Simon
2018-08-28 08:51:40 UTC
Permalink
Hi,

Having a 64Mbit IS25LP064A and using flashrom 1.0, when calling
sudo flashrom -p ft2232_spi:type=2232H,port=A,divisor=100

I get:
flashrom v1.0 on Linux 4.15.0-33-generic (x86_64)
...
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI) on ft2232_spi.
...


:(
Writing and reading commands break with the same message.

So I checked the table at https://www.flashrom.org/Supported_hardware
The chip is not supported yet. But it says that chips supporting JESD216 should work.

Measuring the signal I got that the command given above does first a RDJDID Operation and later the RDSFDP operation (which should be according to JESD216).
I attach the signals. You can see the the operations and what is done.
According to the datasheet is MF7-MF0: 9Dh and Memory Type + Capacity (ID15 - ID0): 6017h. Which you can see on the RDJDID signals image.

I know the signal quality is not the best but doing real improves would cost a lot of time. As I already successfully programmed another supported chip and because the Flash chip response the right way I think that itŽs not a signal integrity problem.

So my questions are:
1) Does "unknown SPI chip (RDID)" mean "itŽs not in the database" or does it mean "RDID could not be read successfully"?
2) If it means "RDID could not be read successfully": Is there any other possibility than signal integrity why flashrom does not show the right RDID?
3) If it means "itŽs not in the database": Would adding it to the database solve the problem or is that not crucial?
4) Does flashrom supports flashs with memory of 64Mbit? As I canŽt find any in the supported hardware list.




The datasheet of the flash can be obtained from:
https://www.mouser.de/datasheet/2/198/25LP032-64A-B-737452.pdf

Btw: the JESD216 link at https://www.flashrom.org/Supported_hardware does not work. May be https://www.jedec.org/standards-documents/docs/jesd216b is what should be linked?



Regards,
Simon
Nico Huber
2018-08-28 11:51:34 UTC
Permalink
Hi Simon,
Post by Buhrow, Simon
Measuring the signal I got that the command given above does first a
RDJDID Operation and later the RDSFDP operation (which should be
according to JESD216). I attach the signals. You can see the the
operations and what is done.
it seems to me that flashrom has already processed parts of the SFDP
(5a 00 00 54 means it requests data at offset 0x54 of the SFDP, right?).
You can probably see more details about why it fails if you add one or
two -V to your flashrom command.
Post by Buhrow, Simon
According to the datasheet is MF7-MF0: 9Dh
and Memory Type + Capacity (ID15 - ID0): 6017h. Which you can see on the
RDJDID signals image.
I know the signal quality is not the best but doing real improves would
cost a lot of time. As I already successfully programmed another
supported chip and because the Flash chip response the right way I think
that itŽs not a signal integrity problem.
1) Does "unknown SPI chip (RDID)" mean "itŽs not in the database"
or does it mean "RDID could not be read successfully"?
It can mean both as the protocol has no means of error detection. It's
simply: the MISO level wasn't all zero, IIRC.

You can see the response if you add -V to your command. It should print
id1:... id2:... for each chip probed. For all RDID commands this should
be consistently the 0x9d 0x6017 of your chip.
Post by Buhrow, Simon
2) If it means "RDID could not be read successfully": Is there any
other possibility than signal integrity why flashrom does not show the
right RDID?
The programmer is a black box to flashrom, anything in there might fail
too. But assuming absence of bugs and that the programmer works nor-
mally, no.
Post by Buhrow, Simon
3) If it means "itŽs not in the database": Would adding it to the
database solve the problem or is that not crucial?
Likely, yes. And it's not much work, IS25LP128 is already in the
database. If you are lucky, it's just copying that entry and adapting
sizes. Let us know if you need help with that.
Post by Buhrow, Simon
4) Does flashrom supports flashs with memory of 64Mbit? As I canŽt
find any in the supported hardware list.
A lot. The `Size` column in that list is given in kB, 64Mbit is 8192kB.
Post by Buhrow, Simon
Btw: the JESD216 link at https://www.flashrom.org/Supported_hardware
does not work. May be
https://www.jedec.org/standards-documents/docs/jesd216b is what should
be linked?
I never looked at flashrom's SFDP code, but somebody told me once it's
written against some earlier spec. Probably needs some more investi-
gation before we point to a version that is not implemented at all.

Nico
Buhrow, Simon
2018-08-29 09:56:35 UTC
Permalink
Hi Nico,

thanks a lot for your quick help.

I got it running by adding the chip data to the database. Before that I run the command with the -VV parameter where I could see that the IDs were read correctly (-> so there was no signal integrity problem).

To get it running I added the following lines:

in flashchips.h:
#define ISSI_IS25LP064 0x6017

in flashchips.c
{
.vendor = "ISSI",
.name = "IS25LP064",
.bustype = BUS_SPI,
.manufacture_id = ISSI_ID_SPI,
.model_id = ISSI_IS25LP064,
.total_size = 8192,
.page_size = 256,
/* OTP: 1024B total; read 0x48; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 2048} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {4 * 1024, 2048} },
.block_erase = spi_block_erase_d7,
}, {
.eraseblocks = { {32 * 1024, 256} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 128} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {8 * 1024 * 1024, 1} },
.block_erase = spi_block_erase_60,
}, {
.eraseblocks = { {8 * 1024 * 1024, 1} },
.block_erase = spi_block_erase_c7,
}
},
.unlock = spi_disable_blockprotect,
.write = spi_chip_write_256,
.read = spi_chip_read,
.voltage = {2300, 3600},
},
sudo flashrom -p ft2232_spi:type=2232H,port=A,divisor=30 -VV
flashrom v1.0 on Linux 4.15.0-33-generic (x86_64)
...
Probing for ISSI IS25LP064, 8192 kB: probe_spi_rdid_generic: id1 0x9d, id2 0x6017
Found ISSI flash chip "IS25LP064" (8192 kB, SPI) on ft2232_spi.
...
Found ISSI flash chip "IS25LP064" (8192 kB, SPI) on ft2232_spi.
No operations were specified.
This chip may contain one-time programmable memory. flashrom cannot read
and may never be able to write it, hence it may not be able to completely
clone the contents of this chip (see man page for details).
No operations were specified.


As I understand the doc at https://www.flashrom.org/Development_Guidelines#Adding.2Freviewing_a_new_flash_chip
I´m not able to add this to the repo. Could anyone do this? (or tell me how to do if I can)
I was able to write and read from the flash as well. So should be fine.

Regards,
Simon



-----Ursprüngliche Nachricht-----
Von: Nico Huber <***@secunet.com>
Gesendet: Dienstag, 28. August 2018 13:52
An: Buhrow, Simon <***@sieb-meyer.de>
Cc: ***@flashrom.org; Stefan Tauner <***@alumni.tuwien.ac.at>
Betreff: Re: [flashrom] 64Mbit IS25LP064A not recognized

Hi Simon,
Measuring the signal I got that the command given above does first a
RDJDID Operation and later the RDSFDP operation (which should be
according to JESD216). I attach the signals. You can see the the
operations and what is done.
it seems to me that flashrom has already processed parts of the SFDP (5a 00 00 54 means it requests data at offset 0x54 of the SFDP, right?).
You can probably see more details about why it fails if you add one or two -V to your flashrom command.
According to the datasheet is MF7-MF0: 9Dh and Memory Type + Capacity
(ID15 - ID0): 6017h. Which you can see on the RDJDID signals image.
I know the signal quality is not the best but doing real improves
would cost a lot of time. As I already successfully programmed another
supported chip and because the Flash chip response the right way I
think that it´s not a signal integrity problem.
1) Does "unknown SPI chip (RDID)" mean "it´s not in the database"
or does it mean "RDID could not be read successfully"?
It can mean both as the protocol has no means of error detection. It's
simply: the MISO level wasn't all zero, IIRC.

You can see the response if you add -V to your command. It should print id1:... id2:... for each chip probed. For all RDID commands this should be consistently the 0x9d 0x6017 of your chip.
2) If it means "RDID could not be read successfully": Is there any
other possibility than signal integrity why flashrom does not show the
right RDID?
The programmer is a black box to flashrom, anything in there might fail too. But assuming absence of bugs and that the programmer works nor- mally, no.
3) If it means "it´s not in the database": Would adding it to the
database solve the problem or is that not crucial?
Likely, yes. And it's not much work, IS25LP128 is already in the database. If you are lucky, it's just copying that entry and adapting sizes. Let us know if you need help with that.
4) Does flashrom supports flashs with memory of 64Mbit? As I can´t
find any in the supported hardware list.
A lot. The `Size` column in that list is given in kB, 64Mbit is 8192kB.
Btw: the JESD216 link at https://www.flashrom.org/Supported_hardware
does not work. May be
https://www.jedec.org/standards-documents/docs/jesd216b is what should
be linked?
I never looked at flashrom's SFDP code, but somebody told me once it's written against some earlier spec. Probably needs some more investi- gation before we point to a version that is not implemented at all.

Nico

Loading...