| I wrote the attached little util program to try out the basic approach |
| and thought that you might find it useful as well as providing some |
| simple testing. It isn't a final solution so the interface is rough. The |
| program must be run as root on an Intel based machine. |
| |
| The key point is that the IO address needs to be entered - I grab it |
| from the dmesg output: |
| |
| eth0: 3Com 3c905B Cyclone 100baseTx at 0xe400, 00:10:4b:d2:5e:0d, IRQ |
| 11 |
| |
| or "cat /proc/pci" to find the "I/O at XXXXXX" for your 3Com Card. |
| |
| Some example commands are: |
| |
| romutil 0xe400 erase - erases the ROM contents |
| romutil 0xe400 protect - enables the Software Data Protection |
| on the ROM [3c905B only] |
| romutil 0xe400 unprotect - disables the Software Data Protection |
| on the ROM [3c905B only] |
| romutil 0xe400 id - displays the manufacturer and |
| device IDs |
| romutil 0xe400 read >file - writes the contents of the ROM to stdout |
| romutil 0xe400 prog <file - writes the contents of the stdin into the |
| ROM (<64k) |
| |
| I tried reading and writing the ROM while doing large ftp transfers and |
| experienced no problems. I didn't spend much time worrying about the |
| possible race conditions. My system has lots of resources (450MHx P2, |
| 128MB RAM) so it might not provide the best test candidate. |
| |
| Let me know what results you get if you try it out. |
| |
| Thanks |
| |
| John |