CSR配置字典之SerDes类
更新时间:2025/7/22
在Gitcode上查看源码

📋 文档信息

字段
文档标题CSR配置指导之SerDes类
创建日期2024-01-XX
最后更新2024-01-XX
文档版本v1.0
维护人员BMC开发团队
审核状态✅ 已审核

📋 变更历史

版本日期变更内容变更人审核人备注
v1.02024-01-XX初始版本创建开发团队技术负责人首次发布

🎯 类概览

SerDes类 是BMC固件中用于管理串行/解串行器的配置类。该类提供了PCIe业务拓扑建立所需的SerDes配置,包括链路宽度、工作模式和端口配置等功能。

状态: 🟢 活跃维护中
适用范围: PCIe业务拓扑建立、SerDes管理
依赖组件: PCIe控制器、SAS控制器、CPU Socket


📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景
Name硬件""字符串Serdes的名字,用于匹配查询pcie业务拓扑建立
ID硬件0U8Serdes的ID,暂时用处不明pcie业务拓扑建立
SocketID硬件0U8Serdes所属的Socketid,即CPU编号pcie业务拓扑建立
LinkWidth硬件0U8Serdes链路宽度,如8->X8,16->X16pcie业务拓扑建立
WorkMode硬件0U8Serdes的工作模式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]
      }
    ]
  }
}

🔧 使用指南

配置步骤

  1. 基础信息配置: 设置Name、ID、SocketID等基础属性
  2. 链路配置: 配置LinkWidth和WorkMode
  3. 模式参数配置: 设置ModeConfigs数组
  4. 验证配置: 确保配置与硬件拓扑匹配

最佳实践

  • 使用描述性的Name命名规则
  • LinkWidth设置要与硬件匹配
  • ModeConfigs为必选配置项
  • 避免使用已弃用的PCIePorts和SASPorts

注意事项

  • PCIePorts和SASPorts配置已弃用,不建议使用
  • ModeConfigs是关键配置,必须正确设置
  • SocketID必须与实际CPU Socket匹配
  • LinkWidth影响PCIe性能,需要准确配置

故障排除

  • 拓扑建立失败: 检查ModeConfigs配置正确性
  • 链路宽度错误: 验证LinkWidth设置
  • Socket识别错误: 确认SocketID配置
  • 模式切换失败: 检查WorkMode和ModeConfigs匹配性

📚 相关文档