| 1 | Some quick notes about the eeprom.o module and decode_dimms.pl. |
|---|
| 2 | |
|---|
| 3 | EEPROM Module |
|---|
| 4 | ------------- |
|---|
| 5 | |
|---|
| 6 | This is a simple EEPROM module meant to enable reading the first 128 bytes |
|---|
| 7 | of an EEPROM (on a SDRAM DIMM). This module will probably need to be at |
|---|
| 8 | least expanded. A /dev file interface would probably be more effective. |
|---|
| 9 | This module was a programming exercise to get used to the new project |
|---|
| 10 | organization laid out by Frodo, but it should be at least completely |
|---|
| 11 | effective for decoding the contents of EEPROMs on DIMMs. |
|---|
| 12 | |
|---|
| 13 | Lacking functionality: |
|---|
| 14 | |
|---|
| 15 | * Read past byte 128. There is no technical restriction for not doing |
|---|
| 16 | this, but making a zillion dataxx-xx files would be a bit rediculous. |
|---|
| 17 | EEPROMs on DIMMs shouldn't use the contents past byte 128, so we are fine. |
|---|
| 18 | |
|---|
| 19 | * Enable Writing. Again, no technical reason why not, but making it easy |
|---|
| 20 | to change the contents of the EEPROMs (on DIMMs anyway) also makes it easy |
|---|
| 21 | to disable the DIMMs until the values are restored somehow. |
|---|
| 22 | |
|---|
| 23 | Use: |
|---|
| 24 | |
|---|
| 25 | After inserting the module (and any other required smbus/i2c modules), you |
|---|
| 26 | should have some EEPROM directories in /proc/sys/dev/sensors/ of names such |
|---|
| 27 | as "eeprom-i2c-0-50". Inside each of these is a series of files which |
|---|
| 28 | represent 16 bytes blocks from the EEPROM. The data is in decimal (base |
|---|
| 29 | 10) delimited by spaces. |
|---|
| 30 | |
|---|
| 31 | Note: |
|---|
| 32 | |
|---|
| 33 | EEPROMs reported are not nessesarily all from DIMMs. Xeon processors, for |
|---|
| 34 | example, have serial EEPROMs in them connected to the SMBus which will be |
|---|
| 35 | found by the module. Take care to ignore the output of decode_dimms.pl for |
|---|
| 36 | these EEPROMs. |
|---|
| 37 | |
|---|
| 38 | |
|---|
| 39 | DECODE_DIMMS.PL |
|---|
| 40 | --------------- |
|---|
| 41 | |
|---|
| 42 | This Perl script attempts to make sense of the first 128 bytes of a SDRAM |
|---|
| 43 | PC-100 DIMM. Using the 'Serial Presence Detect (SPD)' Spec (Rev1.2a)** from |
|---|
| 44 | Intel. When finished, it will decode and report all the values defined in |
|---|
| 45 | the spec. Much of the information is technical timing and interfacing info |
|---|
| 46 | (probably not all used by the Bios or clocking IC. |
|---|
| 47 | |
|---|
| 48 | Note: During testing, we noticed that many DIMMs have trucated SPD records. |
|---|
| 49 | I'm not sure if these conform to an old spec, or if the manufacturers are |
|---|
| 50 | simply just taking short-cuts. But, many DIMMs have all zeros stored past |
|---|
| 51 | byte 21. I asked an Intel SDRAM tester, Sat Kolli (skolli@smartm.com), |
|---|
| 52 | about this and this is what he had to say: |
|---|
| 53 | |
|---|
| 54 | "[...] Now in terms of SPD contents, you are right that people do all kinds |
|---|
| 55 | of things. The way to insure that any module works is to look for the most |
|---|
| 56 | basic information, such as module bank density, number of banks, and device |
|---|
| 57 | addresses. That will give you the module size and what devices are used. It |
|---|
| 58 | is very difficult to verify if the module is PC-100, because of |
|---|
| 59 | inconsistencies between spd data from different manufacturers. You could |
|---|
| 60 | read the timing information or the special Intel bytes (126 & 127) but I do |
|---|
| 61 | not know how many program that information.These inconsistencies may be |
|---|
| 62 | minimized if you or your customers stay with some of the better known |
|---|
| 63 | manufacturers." (Thanks goes to Sat Kolli for his comments and help) |
|---|
| 64 | |
|---|
| 65 | Use: |
|---|
| 66 | |
|---|
| 67 | After inserting the nessesary modules, run the script! |
|---|
| 68 | |
|---|
| 69 | Notes: |
|---|
| 70 | |
|---|
| 71 | The script assumes that Perl can be found at /usr/bin/perl. If different, |
|---|
| 72 | you will need to adjust the first line of the file accordingly, or else |
|---|
| 73 | you will get a strange "decode_dimms.pl: no such file or directory" error. |
|---|
| 74 | |
|---|
| 75 | Also note that the script assumes that _all_ the eeproms belong to DIMMs, |
|---|
| 76 | which may not be the case. |
|---|
| 77 | |
|---|
| 78 | |
|---|
| 79 | ------------------------------------------------------------------------ |
|---|
| 80 | ** PDF is available from Intel or our web site (spdsd12a.pdf): |
|---|
| 81 | http://www.netroedge.com/~lm78 |
|---|
| 82 | |
|---|
| 83 | "eeprom" doc created Dec. 14, 1998 by Philip Edelbrock |
|---|