CSR配置字典之SerDes类
更新时间:2025/7/22
在Gitcode上查看源码📋 文档信息
字段 | 值 |
---|---|
文档标题 | CSR配置指导之SerDes类 |
创建日期 | 2024-01-XX |
最后更新 | 2024-01-XX |
文档版本 | v1.0 |
维护人员 | BMC开发团队 |
审核状态 | ✅ 已审核 |
📋 变更历史
版本 | 日期 | 变更内容 | 变更人 | 审核人 | 备注 |
---|---|---|---|---|---|
v1.0 | 2024-01-XX | 初始版本创建 | 开发团队 | 技术负责人 | 首次发布 |
🎯 类概览
SerDes类 是BMC固件中用于管理串行/解串行器的配置类。该类提供了PCIe业务拓扑建立所需的SerDes配置,包括链路宽度、工作模式和端口配置等功能。
状态: 🟢 活跃维护中
适用范围: PCIe业务拓扑建立、SerDes管理
依赖组件: PCIe控制器、SAS控制器、CPU Socket
📊 属性定义详表
必选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 |
---|---|---|---|---|---|---|
Name | 硬件 | "" | 字符串 | 无 | Serdes的名字,用于匹配查询 | pcie业务拓扑建立 |
ID | 硬件 | 0 | U8 | 无 | Serdes的ID,暂时用处不明 | pcie业务拓扑建立 |
SocketID | 硬件 | 0 | U8 | 无 | Serdes所属的Socketid,即CPU编号 | pcie业务拓扑建立 |
LinkWidth | 硬件 | 0 | U8 | 无 | Serdes链路宽度,如8->X8,16->X16 | pcie业务拓扑建立 |
WorkMode | 硬件 | 0 | U8 | 无 | Serdes的工作模式 | pcie业务拓扑建立 |
ModeConfigs | 硬件 | 对象 | 对象 | 无 | Serdes的模式参数 | pcie业务拓扑建立 |
可选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 |
---|---|---|---|---|---|---|
PCIePorts | 硬件 | 对象 | 对象 | 无 | PCIe卡的serdes模式,后面弃用了 | pcie业务拓扑建立 |
SASPorts | 硬件 | 对象 | 对象 | 无 | SAS控制器的serdes模式,后面弃用了 | pcie业务拓扑建立 |
🔗 动态关联机制
端口配置关联
该类主要通过静态配置进行端口映射,不涉及Scanner/Accessor动态关联机制。
关联说明:
- ModeConfigs提供模式参数配置
- PCIePorts和SASPorts为历史遗留配置(已弃用)
- 通过SocketID关联CPU
📂 分类标准
硬件属性
- Name: SerDes名称标识
- ID: SerDes唯一标识
- SocketID: CPU Socket编号
- LinkWidth: 链路宽度配置
- WorkMode: 工作模式配置
- ModeConfigs: 模式参数配置
- PCIePorts: PCIe端口配置(已弃用)
- SASPorts: SAS端口配置(已弃用)
📝 配置示例
基础配置
json
{
"SerDes_1_6_A": {
"Name": "SerDes_1_6_A",
"ID": 6,
"SocketID": 1,
"LinkWidth": 8,
"WorkMode": 1,
"ModeConfigs": [
{
"Mode": 1,
"Device": [16, 16, 17, 17, 18, 18, 19, 19],
"ControllerIndex": [2, 2, 2, 2, 2, 2, 2, 2]
}
]
}
}
多模式配置
json
{
"SerDes_1_6_A": {
"Name": "SerDes_1_6_A",
"ID": 6,
"SocketID": 1,
"LinkWidth": 8,
"WorkMode": 1,
"ModeConfigs": [
{
"Mode": 1,
"Device": [16, 16, 17, 17, 18, 18, 19, 19],
"ControllerIndex": [2, 2, 2, 2, 2, 2, 2, 2]
},
{
"Mode": 4,
"Device": [0, 1, 2, 3, 4, 5, 6, 7],
"ControllerIndex": [0, 0, 0, 0, 0, 0, 0, 0]
}
]
}
}
包含弃用端口配置的示例
json
{
"SerDes_1_6_A": {
"Name": "SerDes_1_6_A",
"ID": 6,
"SocketID": 1,
"LinkWidth": 8,
"WorkMode": 1,
"PCIePorts": {
"ControllerIndex": [2, 2, 2, 2, 2, 2, 2, 2],
"PortList": [16, 16, 17, 17, 18, 18, 19, 19]
},
"SASPorts": {
"ControllerIndex": [0, 0, 0, 0, 0, 0, 0, 0],
"PortList": [0, 1, 2, 3, 4, 5, 6, 7]
},
"ModeConfigs": [
{
"Mode": 1,
"Device": [16, 16, 17, 17, 18, 18, 19, 19],
"ControllerIndex": [2, 2, 2, 2, 2, 2, 2, 2]
},
{
"Mode": 4,
"Device": [0, 1, 2, 3, 4, 5, 6, 7],
"ControllerIndex": [0, 0, 0, 0, 0, 0, 0, 0]
}
]
}
}
多Socket配置
json
{
"SerDes_1_6_A": {
"Name": "SerDes_1_6_A",
"ID": 6,
"SocketID": 1,
"LinkWidth": 8,
"WorkMode": 1,
"ModeConfigs": [
{
"Mode": 1,
"Device": [16, 16, 17, 17, 18, 18, 19, 19],
"ControllerIndex": [2, 2, 2, 2, 2, 2, 2, 2]
}
]
},
"SerDes_2_7_B": {
"Name": "SerDes_2_7_B",
"ID": 7,
"SocketID": 2,
"LinkWidth": 16,
"WorkMode": 2,
"ModeConfigs": [
{
"Mode": 2,
"Device": [20, 21, 22, 23, 24, 25, 26, 27],
"ControllerIndex": [3, 3, 3, 3, 3, 3, 3, 3]
}
]
}
}
🔧 使用指南
配置步骤
- 基础信息配置: 设置Name、ID、SocketID等基础属性
- 链路配置: 配置LinkWidth和WorkMode
- 模式参数配置: 设置ModeConfigs数组
- 验证配置: 确保配置与硬件拓扑匹配
最佳实践
- 使用描述性的Name命名规则
- LinkWidth设置要与硬件匹配
- ModeConfigs为必选配置项
- 避免使用已弃用的PCIePorts和SASPorts
注意事项
- PCIePorts和SASPorts配置已弃用,不建议使用
- ModeConfigs是关键配置,必须正确设置
- SocketID必须与实际CPU Socket匹配
- LinkWidth影响PCIe性能,需要准确配置
故障排除
- 拓扑建立失败: 检查ModeConfigs配置正确性
- 链路宽度错误: 验证LinkWidth设置
- Socket识别错误: 确认SocketID配置
- 模式切换失败: 检查WorkMode和ModeConfigs匹配性