---
title: 概述
description: "BMC采用统一的接口与协议实现对组件的管理，SMC（Satellite Manager Controller）用于智能组件管理，具有以下特点："
url: https://www.hikunpeng.com/document/detail/zh/kunpengmodule/S920S08/mrm/S920S08_44_0027.html
sourcePath: /source/zh/kunpengmodule/S920S08/mrm/S920S08_44_0027.html
indexId: 85bf64b2d321fc5c9d84236ff1f7ddf42964efbbf23b7deacef903543e0d858157
---
# 概述

BMC采用统一的接口与协议实现对组件的管理，SMC（Satellite Manager Controller）用于智能组件管理，具有以下特点：

- 采用命令+响应的方式交互数据。
- 通信容量大。
- 采用I2C作为底层链路，链路设计简单，节约IO资源。
- 整个传输过程自带CRC校验，数据传输可靠。

如图1所示，I2C根链路接地址固定为0xAE的EEPROM，BMC到每个组件的根链路下下挂SMC器件，BMC通过SMC命令字访问CPLD，CPLD的SMC模块的默认I2C地址为0x60。

图1 典型组件管理拓扑示意图

一次完整的读取流程包括读取请求和读取响应两个部分，如图2和图3所示。两个部分必须配套使用，中间不能穿插其他命令。数据字段描述了读取流程的详细信息，如表1所示。

图2 SMC读取请求信息

图3 SMC读取响应信息


**表1 数据字段描述**

| 字段 | 描述 | 详细定义 |
| --- | --- | --- |
| SlaveAddress | SMC从设备地址 | 从机I2C地址 |
| CommandCode | 命令类型 | 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所示。


**表2 SMC命令字描述**

| Function（6bit） | Command（24bit） | MS（1bit） | RW（1bit） | Parameter（8bit） |
| --- | --- | --- | --- | --- |
| 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。

图4 Opcode定义
