概述
BMC采用统一的接口与协议实现对组件的管理,SMC(Satellite Manager Controller)用于智能组件管理,具有以下特点:
- 采用命令+响应的方式交互数据。
- 通信容量大。
- 采用I2C作为底层链路,链路设计简单,节约IO资源。
- 整个传输过程自带CRC校验,数据传输可靠。
如图1所示,I2C根链路接地址固定为0xAE的EEPROM,BMC到每个组件的根链路下下挂SMC器件,BMC通过SMC命令字访问CPLD,CPLD的SMC模块的默认I2C地址为0x60。
一次完整的读取流程包括读取请求和读取响应两个部分,如图2和图3所示。两个部分必须配套使用,中间不能穿插其他命令。数据字段描述定义了读取流程的详细信息,如表1所示。
字段 |
描述 |
详细定义 |
---|---|---|
SlaveAddress |
SMC从设备地址 |
从机I2C地址 |
CommondCode |
命令类型 |
20h:Write Opcode<br> 21h:ReadBuffer<br> 22h:WriteOpcodeWithData<br> 30h:WriteOpcode-Forward<br> 31h:ReadBuffer-Forward |
Length |
命令长度 |
表示命令中Length之后,CRC之前的数据个数 |
Completion Code |
完成码 |
0h:Success<br> 1h:Opcode Not Support<br> 2h:Data Not Ready<br> 3h:Parameter Error<br> 4h:Internal Error<br> 5h:CRC Error<br> 6h:Device Error |
CRC8 |
CRC校验码 |
参考Smbus PEC机制,CRC多项式使用x8+x2+x1+1,从DEV_ADDR开始计算 |
Opcode |
命令字 |
详见图4 |
SMC使用命令字进行管脚功能配置,命令字的格式描述如表2所示。
Function(6bit) |
Command(24) |
MS(1) |
RW(1) |
Parameter(8) |
---|---|---|---|---|
0:公共功能<br> 1:扩展组件管理功能<br> 2:机箱部件管理功能<br> 3:计算部件管理功能<br> 4:内存部件管理功能<br> 5:存储部件管理功能<br> 6:散热部件管理功能<br> 7:IO扩展部件管理功能<br> 8:加速扩展部件管理功能<br> |
命令字<br> 见接口定义 |
0:多个读取<br> 1:单个读取 |
0:写入<br> 1:读取 |
1-N:获取/设置第N个设备信息 |
协议定义了位读,块读,位写、块写四种操作模式。
- 位读:M/S=1;RW=1;Param=要读取的设备/对象序号; 返回单个对象的数据。
- 块读:M/S=0;RW=1;Param=0;返回该命令所有数据。
- 位写:M/S=1;RW=0;Param=要读取的设备/对象序号。
- 块写:M/S=0;RW=0;Param=0。
Function、Command、MS和RW组合在一起为Opcode,定义如图4所示。具体的SMC命令字信息参考表1/表1。