Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Weirdness erasing / reading flash in urjtag

Wireb
2012-10-25
2013-05-28
  • Wireb
    Wireb
    2012-10-25

    Have today's current git repository installed on my machine and have tested that when I toggle a IO manually I get the correct pin reporting a change in "scan"

    I have a custom asic with a micron js28f00am29ewhb flash hanging off it. (1Gb NOR flash) 
    At any time when I do a "detectflash 0x00" it is found and returns this

    jtag> detectflash 0x00
    Query identification string:
    Primary Algorithm Command Set and Control Interface ID Code: 0x0002 (AMD/Fujitsu Standard Command Set)
    Alternate Algorithm Command Set and Control Interface ID Code: 0x0000 (null)
    Query system interface information:
    Vcc Logic Supply Minimum Write/Erase or Write voltage: 2700 mV
    Vcc Logic Supply Maximum Write/Erase or Write voltage: 3600 mV
    Vpp  Supply Minimum Write/Erase voltage: 0 mV
    Vpp  Supply Maximum Write/Erase voltage: 0 mV
    Typical timeout per single byte/word program: 64 us
    Typical timeout for maximum-size multi-byte program: 64 us
    Typical timeout per individual block erase: 512 ms
    Typical timeout for full chip erase: 524288 ms
    Maximum timeout for byte/word program: 512 us
    Maximum timeout for multi-byte program: 2048 us
    Maximum timeout per individual block erase: 4096 ms
    Maximum timeout for chip erase: 2097152 ms
    Device geometry definition:
    Device Size: 134217728 B (131072 KiB, 128 MiB)
    Flash Device Interface Code description: 0x0002 (x8/x16)
    Maximum number of bytes in multi-byte program: 64
    Number of Erase Block Regions within device: 1
    Erase Block Region Information:
    Region 0:
    Erase Block Size: 131072 B (128 KiB)
    Number of Erase Blocks: 1024
    Primary Vendor-Specific Extended Query:
    Major version number: 1
    Minor version number: 3
    Address Sensitive Unlock: Required
    Process Technology: Bad value
    Erase Suspend: Read/write
    Sector Protect: 1 sectors per group
    Sector Temporary Unprotect: Supported
    Sector Protect/Unprotect Scheme: Bad value
    Simultaneous Operation: Not supported
    Burst Mode Type: Supported
    Page Mode Type: 8 word Page
    ACC (Acceleration) Supply Minimum: 11500 mV
    ACC (Acceleration) Supply Maximum: 12500 mV
    Top/Bottom Sector Flag: Uniform top boot device
    Program Suspend: Not supported
    jtag>

    So it looks like my setup and initbus is all functioning correctly..

    BUT… when I do a "peek 0x20" back to back it works for a while then stops (just returns 0xFFFF)
    Also when I try and run "eraseflash 0x00 1" to erase the first block I get this

    jtag> eraseflash 0x00 1
    Chip: AMD Flash
    Manufacturer: AMD
    Chip: S92GLxxxN
    Protected: 0000

    Erasing 1 Flash block from address 0x0
    (100% Completed) FLASH Block 0 : Unlocking … flash_unlock_block 0x00000000 IGNORE
    Erasing … flash_erase_block 0x00000000
    flash_erase_block 0x00000000 DONE
    (100% Completed) FLASH Block 0 : Unlocking … Erasing … Ok.

    Erasing Completed.
    jtag>

    So looks like it all worked but when I read back the flash the device is still programmed.

    Any ideas what I am doing wrong?

     
  • Wireb
    Wireb
    2012-10-25

    Update already… Way playing around trying to manually scan the bits out and found if I set my address lines to outputs then the peeks will work forever….

    IE
    instruction EXTEST
    shift ir
    set signal A0 out
    set signal A1 out
    …..
    set signal A24 out
    set signal A25 out
    shift dr

    No idea why peek and readmem work for the first few reads without this but things are much happier now that I added that.
    Also looks like eraseflash works properly as well. Tomorrow will try and reprogram it and see what happens :)