开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

概述

BIOS采用统一的接口与协议实现对组件的管理,SMC(Satellite Manager Controller)用于智能组件管理,具有以下特点:

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

一次完整的读取流程包括读取请求和读取响应两个部分,如表1和表2所示。两个部分必须配套使用,中间不能穿插其他命令。

表1 SMC读取时序

字段

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读取时序步骤
    1. 读锁寄存器,检测是否被锁。
    2. 如果未锁,则读状态寄存器,检测是否idle/complet。
    3. 如果状态idle/complet,在写入4个opcode后,再写操作寄存器通知CPLD解析命令。
    4. 检测总线状态。检测到complet之后,从数据区读取数据。
    5. 清锁寄存器,释放控制权。
  • Slave读取时序步骤
    1. CPLD检测WE上升沿,认为存在写操作,读取操作寄存器,收到操作指令,写状态寄存器为busy。
    2. 读取opcode。
    3. 根据opcode将对应数据写入数据区后,写状态寄存器为complet,等待BIOS读取。
表2 SMC写入时序

字段

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写入时序步骤
    1. 读锁寄存器,检测是否被锁。
    2. 如果未锁,则读状态寄存器,检测是否idle/complet。
    3. 如果状态idle/complet,在写入4个opcode + data后,再写操作寄存器通知CPLD解析命令。
  • Slave写入时序步骤
    1. CPLD检测WE上升沿,认为存在写操作,读取操作寄存器,收到操作指令,写状态寄存器为busy。
    2. 读取opcode。
    3. 解析opcode,处理读取的数据。
    4. 写状态寄存器为complet。

数据字段的描述定义了读取流程的详细信息,如表3所示。

表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所示。

表4 SMC命令字信息

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所示。

图1 Opcode定义

具体的SMC命令字信息参考表3-1/表3-2/表3-3/表3-4/表3-5。