Contents |
---|
SPI Read |
SPI Write |
Read SPI Status |
Write SPI Control |
Get Non-Volatile Area Info |
Read Non-Volatile Memory |
How to issue these commands with ipmitool |
raw
IPMI SPI "read data" command
NetFN 0x32 CMD 0x34 Params PortID (0-3) Address LS Byte Address MS byte Count (I recommend <20)
raw
IPMI SPI "write data" command
NetFN 0x32 CMD 0x33 Params PortID (0-3) Address LS Byte Address MS byte Count (I recommend <20) Byte 1 ... Byte n
raw
IPMI SPI "read status register" command
NetFN 0x32 CMD 0x31 Params 1: Port ID (0-3) Return 1: bit 7: HF1 bit 6: HF2 bit 5: CFGRDY bit 4: REQCFG bit 3-0: reserved
raw
IPMI SPI "write control register" command. For the purposes of the AMC13, we really only care about the CFGRDY
bit
NetFN 0x32 CMD 0x32 Params 1: Port ID (0-3) 2: bit 7: select UHF for update bit 6: select LHF for update bit 5: select CFGRDY for update bit 4-2: 0 bit 1: SET selected flags bit 0: CLEAR selected flags
raw
IPMI SPI "read NV area info" command
Get Nonvolatile Area Info (Partial): NetFN 0x32 CMD 0x40 Params 1: 0 Return 1: 0 ... 15: FPGA Config Area LS Byte 16: FPGA Config Area MS Byte 17: FPGA Config Area Size (32 byte units)
raw
IPMI SPI "read NV memory" command
Raw Nonvolatile Read: NetFN 0x32 CMD 0x42 Params 1: Offset LS 2: Offset MS 3: Length (<=20) Return $Data
ipmitool
as follows.
To read:
$ ipmitool -H 192.168.1.41 -U '' -P '' -T 0x82 -b 7 -t 0x76 raw 0x32 0x34 1 11 0 4
-T 0x82 | 0x82 is 0x70 + slot*2 or 0xa4 for special case of slot 13 |
0x32 0x34 | 0x32 means UWMMC special command 0x34 is configuration read |
1 11 0 4 | 1 is device select (0=T1, 1=T2) 11 0 is address (lsb msb) 4 is byte count |
$ ipmitool -H 192.168.1.41 -U '' -P '' -T 0x82 -b 7 -t 0x76 raw 0x32 0x33 0 0 0 6 0x03 0xff 0xff 0xff 0x00 0xc0
0x32 x33 | 0x33 is configuration write |
0 0 0 6 | device select, address, count (=6 e.g.) |
0x03 0xff ... | data to write |