<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    RDID Error: Probing for SST SST25VF040B, 512 KB: RDID byte 0 parity
    violation. probe_spi_rdid_generic: id1 0x8d, id2 0xbf25<br>
    RDID OK: Probing for SST SST25VF040B, 512 KB:
    probe_spi_rdid_generic: id1 0xbf, id2 0x258d<br>
    <br>
    Definately something with buffers.<br>
    Anyone knows a libftdi-dev version tested as working with flashrom?<br>
    I'm using Ubuntu 10.04 with libftdi-dev from it's repositories.<br>
    <br>
    Thanks<br>
    <br>
    On 18/12/10 02:02, Carlos C wrote:
    <blockquote cite="mid:4D0C083A.8030703@gmail.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <title></title>
      Hi,<br>
      <br>
      Sometimes flashrom identifies the flash chip but gives a "RDID
      byte 0 parity violation". When the probing process ends without
      RDID error, the chip status register is incorrectly read as "BF".<br>
      After checking the eeprom board one hundred times, i've plugged a
      logic analizer into spi lines and logged two ID procceses, one
      with RDID error and the other with "BF" status register read.<br>
      <br>
      This is the part of the probbing sequence related to SST25VF040B
      which gives "RDID byte 0 parity violation".<br>
          flashrom -p ft2232_spi:type=jtagkey,port=A -V<br>
      <blockquote>MISO Data     0x9F<br>
            MOSI Data     0xBF<br>
        MISO Data     0xFF<br>
            MOSI Data     0x25<br>
        MISO Data     0xFF<br>
            MOSI Data     0x8D<br>
        MISO Data     0xFF<br>
            MOSI Data     0xFF<br>
        MISO Data     0xAB<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xBF<br>
        MISO Data     0x00<br>
            MOSI Data     0x8D<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x90<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xBF<br>
        MISO Data     0x00<br>
            MOSI Data     0x8D<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
      </blockquote>
      And this one for the correct ID, but incorrectly read status
      register:<br>
          flashrom -p ft2232_spi:type=jtagkey,port=A -V<br>
      <blockquote>MISO Data     0x9F<br>
            MOSI Data     0xBF<br>
        MISO Data     0xFF<br>
            MOSI Data     0x25<br>
        MISO Data     0xFF<br>
            MOSI Data     0x8D<br>
        MISO Data     0xFF<br>
            MOSI Data     0xFF<br>
        MISO Data     0x05<br>
            MOSI Data     0x1C<br>
        MISO Data     0xFF<br>
            MOSI Data     0x1C<br>
        MISO Data     0xFF<br>
            MOSI Data     0xFF<br>
        MISO Data     0xAB<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xBF<br>
        MISO Data     0x00<br>
            MOSI Data     0x8D<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x90<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
        MISO Data     0x00<br>
            MOSI Data     0xBF<br>
        MISO Data     0x00<br>
            MOSI Data     0x8D<br>
        MISO Data     0x00<br>
            MOSI Data     0xFF<br>
      </blockquote>
      <br>
      As you can see, the difference starts after reading the ID (0xBF
      0x25 0x8D). Sometimes flashrom sends 0xAB, the eeprom answer with
      a chunk of 0xFF's and shows a RDID error, and on some ocasions, it
      sends 0x05 to get the status register, so the eeprom answer 0x1C
      twice.<br>
      <br>
      Appart from the RDID error, flashprog is reading 0xBF instead of
      0x1C when asking for the status register. It seems to have some
      problem with FTDI buffers or something related, because the
      electric communication is perfect. The flash chip is answering as
      expected.<br>
      <br>
      Any idea?<br>
      <br>
      Regards,<br>
      Carlos<br>
      <br>
      <br>
      On 16/12/10 22:56, Carlos C wrote:
      <blockquote cite="mid:4D0A8B29.8070504@gmail.com" type="cite">
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        Hi,<br>
        <br>
        I'm testing an Amontec JtagKey-tiny interface for programming a
        SST25VF040B eeprom i'm using in a project.<br>
        The Jtagkey-tiny is detected without problems, it reads the
        eeprom ID and is detected.<br>
        <br>
        But when i try to read it contents, i get an error:<br>
        <br>
        <blockquote>$ ./flashrom -p ft2232_spi:type=jtagkey,port=A -Vr
          test.bin<br>
          flashrom v0.9.3-r1205 on Linux 2.6.32-26-generic (i686), built
          with libpci 3.0.0, GCC 4.4.3, little endian<br>
          flashrom is free software, get the source code at <a
            moz-do-not-send="true" class="moz-txt-link-freetext"
            href="http://www.flashrom.org">http://www.flashrom.org</a><br>
          <br>
          Calibrating delay loop... OS timer resolution is 2 usecs,
          1000M loops per second, 10 myus = 11 us, 100 myus = 91 us,
          1000 myus = 904 us, 10000 myus = 9823 us, 8 myus = 10 us, OK.<br>
          Initializing ft2232_spi programmer<br>
          Using device type Amontec JTAGkey interface A<br>
          Set clock divisor<br>
          SPI clock is 2.000000MHz<br>
          No loopback of TDI/DO TDO/DI<br>
          Set data bits<br>
          [Probings ommited]<br>
          Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic:
          id1 0xbf, id2 0x258d<br>
          Chip status register is bf<br>
          Chip status register: Block Protect Write Disable (BPL) is set<br>
          Chip status register: Auto Address Increment Programming (AAI)
          is not set<br>
          Chip status register: Bit 5 / Block Protect 3 (BP3) is set<br>
          Chip status register: Bit 4 / Block Protect 2 (BP2) is set<br>
          Chip status register: Bit 3 / Block Protect 1 (BP1) is set<br>
          Chip status register: Bit 2 / Block Protect 0 (BP0) is set<br>
          Chip status register: Write Enable Latch (WEL) is set<br>
          Chip status register: Write In Progress (WIP/BUSY) is set<br>
          Resulting block protection : all blocks<br>
          Found chip "SST SST25VF040B" (512 KB, SPI) at physical address
          0xfff80000.<br>
          [More probings ommited]<br>
          [UNTESTED status warning ommited]<br>
          Some block protection in effect, disabling<br>
          Missing status register write definition, assuming EWSR is
          needed<br>
          Reading flash... ftdi_write_data: -110, usb bulk write failed<br>
          send_buf failed at end: 1<br>
          Read operation failed!<br>
          FAILED.<br>
          <br>
        </blockquote>
        As you can see, i tried to low the SPI speed to 2MHz.<br>
        Any idea? I know this part is marked as UNTESTED, but it should
        work as SST25VF080B do.<br>
        <br>
        Thanks,<br>
        Carlos<br>
        <br>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>