概述
BIOS采用统一的接口与协议实现对组件的管理,SMC(Satellite Manager Controller)用于智能组件管理,具有以下特点:
- 采用命令+响应的方式交互数据
- 通信容量大
- 采用Local bus作为底层链路,链路设计简单,节约IO资源
- 整个传输过程自带CRC校验,数据传输可靠
一次完整的读取流程包括读取请求和读取响应两个部分,如表1和表2所示。两个部分必须配套使用,中间不能穿插其他命令。
字段 |
OpCode1 |
OpCode2 |
Parameter1 |
Parameter2 |
Set action |
Set status busy |
Length |
DATA1 |
… |
DATAN |
Set status complet |
Master Read |
clear lock |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
偏移地址 |
0x04 |
0x05 |
0x06 |
0x07 |
0x02 |
0x01 |
0x08 |
0x09-0xff |
0x01 |
- |
0x00 |

加粗字段是CPLD的响应信息,不用CPU下发该部分字段;其它字段需要CPU下发。
- Master读取时序步骤
- 读锁寄存器,检测是否被锁。
- 如果未锁,则读状态寄存器,检测是否idle/complet。
- 如果状态idle/complet,在写入4个opcode后,再写操作寄存器通知CPLD解析命令。
- 检测总线状态。检测到complet之后,从数据区读取数据。
- 清锁寄存器,释放控制权。
- Slave读取时序步骤
- CPLD检测we上升沿,认为存在写操作,读取操作寄存器,收到操作指令,写状态寄存器为busy。
- 读取opcode。
- 根据opcode将对应数据写入数据区后,写状态寄存器为complet,等待BIOS读取。
字段 |
OpCode1 |
OpCode2 |
Parameter1 |
Parameter2 |
Length |
DATA1 |
… |
DATAN |
Set action |
Set status busy |
Slave Read |
Set status complet |
---|---|---|---|---|---|---|---|---|---|---|---|---|
偏移地址 |
0x04 |
0x05 |
0x06 |
0x07 |
0x08 |
0x09-0xff |
0x02 |
0x01 |
- |
0x01 |

加粗字段是CPLD的响应信息,不用CPU下发该部分字段;其它字段需要CPU下发。
- Master写入时序步骤
- 读锁寄存器,检测是否被锁。
- 如果未锁,则读状态寄存器,检测是否idle/complet。
- 如果状态idle/complet,在写入4个opcode + data后,再写操作寄存器通知CPLD解析命令。
- Slave写入时序步骤
- CPLD检测we上升沿,认为存在写操作,读取操作寄存器,收到操作指令,写状态寄存器为busy。
- 读取opcode。
- 解析opcode,读取数据处理。
- 写状态寄存器为complet。
数据字段描述定义了读取流程的详细信息,如表3所示。
字段 |
地址 |
描述 |
属性 |
---|---|---|---|
Control Register Address |
0x00 |
锁寄存器:CPLD不操作,提供给BIOS写,用来防止BIOS进程抢占总线。 |
BIOS:RW CPLD:NA |
0x01 |
状态寄存器:BIOS只读,CPLD读写。 0h:命令执行成功 1h:命令不支持 2h:busy(CPLD在读写数据) 3h:参数错误 4h:内部错误(CRC错误) |
BIOS:RO CPLD:RW |
|
0x02 |
操作寄存器:BIOS写,CPLD读清。 |
BIOS:WO CPLD:RC |
|
0x03 |
自愈控制器 |
BIOS:WO CPLD:RC |
|
Opcode Register Address |
0x04 |
Opcode1 |
BIOS:RW CPLD:RO |
0x05 |
Opcode2 |
||
0x06 |
Parameter1 |
||
0x07 |
Parameter2 |
||
Data Register Address |
0x08 |
Length |
BIOS:RW CPLD:RW |
0x09 |
Data1-DataN(数据最后加一字节CRC校验结果) |
SMC使用命令字进行管脚功能配置,命令字的格式描述如表4所示。
Function |
Command |
MS |
RW |
Param1 |
Param2 |
---|---|---|---|---|---|
功能定义如下: 0:获取系统基本信息 1:获取/设置CPU信息 2:获取/设置PCH信息 3:获取/设置电源管理信息 4:获取/设置系统告警信息 5:获取/设置杂项功能配置 |
命令字,见通信命令字定义 |
0:多个读取 1:单个读取 |
0:写入 1:读取 |
1…N:获取/设置第N个设备信息 |
1…N:获取/设置第N个设备信息 |
协议定义了位读、块读、位写和块写4种操作模式:
- 位读:M/S=1;RW=1;Param1=要读取的设备/对象序号; 返回单个对象的数据。
- 位写:M/S=1;RW=0;Param1=要读取的设备/对象序号。
Function、Command、MS和RW组合在一起为Opcode,定义如图1所示。