Many thanks for the quick reply!
> Don't use the force switch. It's the dark force :P
Well on that note, I also wanted to dump some AT27C010 chips, which are
one-time programmable, but electrically compatible for read operations
with "standard" chips like the AT29C010A.
I couldn't dump anything because flashrom told me no EEPROM was
detected. By using --force and specifying AT29C010A I was warned I
would probably get garbage, but the chip content was successfully
written to a file.
Are there plans to add read-only support to flashrom for these cases?
I am guessing this would be (relatively) easy because to my knowledge,
you don't need special commands to read data out of the chips. They are
all just read in the same way (at least with the nic3com and nicrealtek
programmers). I imagine you'd just need a handful of generic devices
that specify the size of the chip and only support read operations?
The reason for wanting read support for a non-flash chip is for
hardware experimentation. If you want to modify a device with a
non-flashable ROM chip, you can replace it with an electrically
compatible EEPROM. But first you have to copy the data from the ROM
chip over to the EEPROM (perhaps modifying it on the way), so for that
you need the ability to dump non-flash chips.
> > I guess I could pad out the 8kB XTIDE image to only 128kB, then
> > double that to get a 256kB image, but it's all very kludgy!
>
> But the right way, currently.
Sure. I found an actual AT29C010A which is only 128kB and tried to
flash this with the XTIDE data, padded out to 128kB. It seemed to
work, although flashrom told me it took two goes to do it. Dumping it
again afterwards produced the original data. I think the error was
probably because I hadn't put the chip securely enough into the socket,
because I wanted to remove it again without powering down the PC and
removing the 3Com NIC!
I've attached the log because it said the AT29C010A was untested.
> One needs to write a layout file to use the additional functionality
> but the base for it is already integrated, see below.
Thanks for that! I'll have a look at it and see if I can figure out
what needs to be done.
> I think our policy regarding this is not to mark them as tested
> because that access pattern could hide some real bugs even if that's
> unlikely. After all, "untested" does not mean unsupported... all
> chips in the code base should just work.
Sure no worries, completely understandable!
Cheers,
Adam.
flashrom v0.9.8-r1888 on Linux 2.6.14 (i686)
flashrom was built with libpci 2.1.11, GCC 3.3.6, little endian
Command line (6 args): ./flashrom --programmer nic3com -o ../flashrom-at29c010a.log --write xtide-padded.bin
Calibrating delay loop... OS timer resolution is 3 usecs, 114M loops per second, 10 myus = 12 us, 100 myus = 100 us, 1000 myus = 993 us, 10000 myus = 9875 us, 12 myus = 14 us, OK.
Initializing nic3com programmer
Found "3COM 3C90xB: PCI 10/100 Mbps; shared 10BASE-T/100BASE-TX" (10b7:9055, BDF 00:0a.0).
Requested BAR is of type I/O
Requested BAR is of type I/O
The following protocols are supported: Parallel.
Probing for AMD Am29F010A/B, 128 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29F002(N)BB, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29F002(N)BT, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29F016D, 2048 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29F040B, 512 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29F080B, 1024 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV001BB, 128 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV001BT, 128 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV002BB, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV002BT, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV004BB, 512 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV004BT, 512 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV008BB, 1024 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV008BT, 1024 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV040B, 512 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMD Am29LV081B, 1024 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMIC A29002B, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMIC A29002T, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for AMIC A29040B, 512 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for Atmel AT29C512, 64 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT29C010A, 128 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Found Atmel flash chip "AT29C010A" (128 kB, Parallel) on nic3com.
Probing for Atmel AT29C020, 256 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT29C040A, 512 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49BV512, 64 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49F002(N), 256 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49F002(N)T, 256 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49(H)F010, 128 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49F020, 256 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49F040, 512 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49F080, 1024 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Atmel AT49F080T, 1024 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Catalyst CAT28F512, 64 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Bright BM29F040, 512 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for ESMT F49B002UA, 256 kB: probe_jedec_common: id1 0x1f, id2 0xd5
Probing for Eon EN29F010, 128 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for Eon EN29F002(A)(N)B, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for Eon EN29F002(A)(N)T, 256 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for Eon EN29LV040(A), 512 kB: probe_jedec_common: id1 0x3f, id2 0x7f3f, id1 parity violation
Probing for Eon EN29LV640B, 8192 kB: probe_en29lv640b: id1 0x7f3f, id2 0x003f
Probing for Eon EN29GL064(A)B, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Eon EN29GL064(A)T, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Eon EN29GL064H/L, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Eon EN29GL128, 16384 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Fujitsu MBM29F004BC, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Fujitsu MBM29F004TC, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Fujitsu MBM29F400BC, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Fujitsu MBM29F400TC, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Fujitsu MBM29LV160BE, 2048 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Fujitsu MBM29LV160TE, 2048 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Hyundai HY29F002T, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Hyundai HY29F002B, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Hyundai HY29F040A, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Intel 28F001BN/BX-B, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Intel 28F001BN/BX-T, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Intel 28F002BC/BL/BV/BX-T, 256 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for Intel 28F008S3/S5/SC, 512 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for Intel 28F004B5/BE/BV/BX-B, 512 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for Intel 28F004B5/BE/BV/BX-T, 512 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for Intel 28F400BV/BX/CE/CV-B, 512 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for Intel 28F400BV/BX/CE/CV-T, 512 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for ISSI IS29GL064B, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for ISSI IS29GL064T, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for ISSI IS29GL064H/L, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for ISSI IS29GL128H/L, 16384 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29F001B, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Macronix MX29F001T, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Macronix MX29F002(N)B, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Macronix MX29F002(N)T, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Macronix MX29F022(N)B, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Macronix MX29F022(N)T, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Macronix MX29F040, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Macronix MX29GL320EB, 4096 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29GL320ET, 4096 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29GL320EH/L, 4096 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29GL640EB, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29GL640ET, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29GL640EH/L, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29GL128F, 16384 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Macronix MX29LV040, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for MoselVitelic V29C51000B, 64 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for MoselVitelic V29C51000T, 64 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for MoselVitelic V29C51400B, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for MoselVitelic V29C51400T, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for MoselVitelic V29LC51000, 64 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for MoselVitelic V29LC51001, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for MoselVitelic V29LC51002, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for PMC Pm29F002T, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x08, id2 0xff
Probing for PMC Pm29F002B, 256 kB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0x08, id2 0xff
Probing for PMC Pm39LV010, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for PMC Pm39LV020, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for PMC Pm39LV040, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for PMC Pm39LV512, 64 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Sharp LH28F008BJT-BTLZ1, 1024 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for SST SST28SF040A, 512 kB: probe_82802ab: id1 0x7f, id2 0x3f, id1 is normal flash content, id2 is normal flash content
Probing for SST SST29EE010, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST29LE010, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST29EE020A, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST29LE020, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39SF512, 64 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39SF010A, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39SF020A, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39SF040, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39VF512, 64 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39VF010, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39VF020, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39VF040, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SST SST39VF080, 1024 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29F002B, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29F002T/NT, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29F040B, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29F400BB, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29F400BT, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29W010B, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29W040B, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for ST M29W512B, 64 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for TI TMS29F002RB, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for TI TMS29F002RT, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012-old, 128 kB: Old Winbond W29* probe method disabled because the probing sequence puts the AMIC A49LF040A in a funky state. Use 'flashrom -c W29C010(M)/W29C011A/W29EE011/W29EE012-old' if you have a board with such a chip.
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W29C020(C)/W29C022, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W29C040/P, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W29GL032CB, 4096 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Winbond W29GL032CT, 4096 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Winbond W29GL032CH/L, 4096 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Winbond W29GL064CB, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Winbond W29GL064CT, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Winbond W29GL064CH/L, 8192 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Winbond W29GL128C, 16384 kB: probe_jedec_29gl: man_id 0x7f, dev_id 0x3f7f3f, man_id seems to be normal flash content, dev_id seems to be normal flash content
Probing for Winbond W39F010, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W39L010, 128 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W39L020, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W39L040, 512 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W49F002U/N, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Probing for Winbond W49F020, 256 kB: probe_jedec_common: id1 0x7f7f, id2 0x3f
Found Atmel flash chip "AT29C010A" (128 kB, Parallel).
===
This flash part has status UNTESTED for operations: WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to [email protected] if any of the above operations
work correctly for you with this flash chip. Please include the flashrom log
file for all operations you tested (see the man page for details), and mention
which mainboard or programmer you tested in the subject line.
Thanks for your help!
Reading old flash chip contents... done.
Erasing and writing flash chip... Trying erase function 0... 0x000000-0x01ffff:EWFAILED at 0x000002df! Expected=0x75, Found=0xff, failed byte count from 0x00000280-0x000002ff: 0x20
retrying.
Erase/write done.
Verifying flash... VERIFIED.
_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom