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

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 21h：ReadBuffer 22h：WriteOpcodeWithData 30h：WriteOpcode\-Forward 31h：ReadBuffer\-Forward |
| Length | 命令长度 | 表示命令中Length之后，CRC之前的数据个数 |
| Completion Code | 完成码 | 0h：Success 1h：Opcode Not Support 2h：Data Not Ready 3h：Parameter Error 4h：Internal Error 5h：CRC Error 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：公共功能 1：扩展组件管理功能 2：机箱部件管理功能 3：计算部件管理功能 4：内存部件管理功能 5：存储部件管理功能 6：散热部件管理功能 7：IO扩展部件管理功能 8：加速扩展部件管理功能 | 命令字 见接口定义 | 0：多个读取 1：单个读取 | 0：写入 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定义
