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

📋 文档信息

项目内容
文档标题M2TransferCard类配置字典
版本v1.0
创建日期2025-01-27
最后更新2025-01-27
维护状态✅ 活跃维护

📋 变更历史记录

文档变更记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02025-01-27初始版本创建M2TransferCard类配置字典全新文档系统管理员

🎯 类概览

M2TransferCard 类

属性
类名称M2TransferCard
功能描述M.2转接卡管理对象,提供M.2转接卡的基本信息、版本管理、状态监控和M.2盘在位检测功能
所属SIG组storage
所属组件M.2转接卡管理
责任人存储管理组
最后更新2025-01-27
状态🟢 正常运行

📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
SlotU80U8-槽位号BMC接口展示"${Slot}"硬件提供硬件
UIDString-String-单板UID
vendor(00000001)+单板类型(02)+单板编码(0302031825)
BMC接口展示"00000001030302023954"硬件提供硬件
NameString-String-固件名称BMC接口展示"BC83MSMA"固定配置,根据具体单板硬件
ManufacturerString-String-固件厂商BMC接口展示`"<=/FruData_SEU.BoardManufacturer> expr($1 == '' ? 'Huawei' : $1)"`厂商
TypeString-String-单板类型BMC接口展示"SEU"单板类型配置硬件
DescriptionString-String-单板描述BMC接口展示"M.2 Transform card, 2*PCIE interface"单板描述硬件
PartNumberString-String-部件编号,支持BMC接口写入BMC接口展示"<=/FruData_SEU.BoardPartNumber"部件编号硬件
PcbIDString-StringScanner_PcbIDPcbIDPcbVersion属性会使用"#/Scanner_PcbID.Value"硬件提供硬件
SRVersionString-String-CSR版本BMC接口展示"${DataVersion}"SR版本软件
BoardIDU1665535U16-单板IDBMC接口展示65535CSR配置软件
BoardTypeString-String-单板类型BMC接口展示"HddBackplane"CSR配置软件
DeviceNameString-String-板卡丝印信息BMC接口展示"M2TransferCard${Slot}"CSR配置软件
PositionString-String-单板位置BMC接口展示"chassis"CSR配置软件
NodeIdString-String-容器信息Position和设备丝印名称DeviceName拼接而成BMC接口展示"chassisM2TransferCard${Slot}"CSR配置软件
FruIDString-StringFru_SEU单板FRUIDBMC接口展示"<=/Fru_SEU.FruId"CSR配置软件
SerialNumberString""StringFruData_SEU序列号BMC接口展示"<=/FruData_SEU.BoardSerialNumber"BMC内部设置软件
StartSlotU80U8-硬盘起始槽位号BMC接口展示50根据前后置类型配置软件
M2SlotPresenceU80U8Drive_1,Drive_2M.2盘在位情况
每个bit表示一个槽位
bit0表示SSD1在位,bit1表示SSD2在位
BMC接口展示`"<=/Drive_1.Presence;<=/Drive_2.Presence> expr($2 << 1$1)"`

可选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
PcbVersionString""String-PCB版本,BMC获取到PcbID就会进行转换BMC接口展示""PcbID转换软件
LogicVersionString"N/A"String-CPLD版本BMC接口展示"N/A"CPLD版本硬件
MCUVersionString""String-MCU的版本信息,不需要配置,自动获取BMC接口展示""BMC内部设置软件
NumberU8-U8-根据整机配置更新逻辑编号,目前仅背板使用,使用SlotConfigs配置属性根据整机配置更新逻辑编号1BMC内部设置软件
RefMCUChipString-StringChip_MCU1关联单板对应MCU,启动检查运行状态启动检查运行状态"#/Chip_MCU1"关联单板对应MCU硬件
RefComponentString-StringComponent_M2TransferCard当前未使用NA"#/Component_M2TransferCard"CSR配置软件
CpldStatusU80U8-CPLD自检失败次数CPLD自检告警使用0CPLD自检状态软件

🔗 动态关联机制

语法规范

使用多种动态关联语法:

yaml
# 基础信息配置
Slot: "${Slot}"
UID: "00000001030302023954"
Name: "BC83MSMA"
Type: "SEU"
Description: "M.2 Transform card, 2*PCIE interface"

# 动态关联配置
Manufacturer: "<=/FruData_SEU.BoardManufacturer|> expr($1 == '' ? 'Huawei' : $1)"
PartNumber: "<=/FruData_SEU.BoardPartNumber"
PcbID: "#/Scanner_PcbID.Value"
SerialNumber: "<=/FruData_SEU.BoardSerialNumber"

# 版本信息
SRVersion: "${DataVersion}"
LogicVersion: "N/A"
MCUVersion: ""

# 芯片关联
RefMCUChip: "#/Chip_MCU1"

# M.2盘在位检测
M2SlotPresence: "<=/Drive_1.Presence;<=/Drive_2.Presence |> expr($2 << 1 | $1)"

# 动态生成属性
DeviceName: "M2TransferCard${Slot}"
Position: "chassis"
NodeId: "chassisM2TransferCard${Slot}"

关联说明

  • FRU数据关联: Manufacturer、PartNumber、SerialNumber通过FruData对象获取
  • Scanner关联: PcbID通过Scanner对象获取
  • Drive关联: M2SlotPresence通过Drive对象获取M.2盘在位状态
  • 芯片关联: RefMCUChip关联到对应的MCU芯片对象
  • 动态生成: DeviceName、NodeId基于Slot动态生成

📂 分类标准

硬件属性

  • 定义:与M.2转接卡硬件特性和物理信息直接相关的参数
  • 特点:槽位信息、UID、硬件版本、M.2盘在位检测等物理特性
  • 示例Slot, UID, Name, Manufacturer, Type, Description, PartNumber, PcbID, M2SlotPresence, LogicVersion, RefMCUChip

软件属性

  • 定义:由软件管理和维护的转接卡参数
  • 特点:版本信息、状态监控、配置管理和接口展示
  • 示例SRVersion, BoardID, BoardType, DeviceName, Position, NodeId, FruID, SerialNumber, StartSlot, PcbVersion, MCUVersion, Number, RefComponent, CpldStatus

📝 配置示例

基础M.2转接卡配置

json
{
  "M2TransferCard_1": {
    "Slot": "${Slot}",
    "UID": "00000001030302023954",
    "Name": "BC83MSMA",
    "Manufacturer": "<=/FruData_SEU.BoardManufacturer|> expr($1 == '' ? 'Huawei' : $1)",
    "Type": "SEU",
    "Description": "M.2 Transform card, 2*PCIE interface",
    "PartNumber": "<=/FruData_SEU.BoardPartNumber",
    "PcbID": "#/Scanner_PcbID.Value",
    "SRVersion": "${DataVersion}",
    "BoardID": 65535,
    "BoardType": "HddBackplane",
    "DeviceName": "M2TransferCard${Slot}",
    "Position": "chassis",
    "NodeId": "chassisM2TransferCard${Slot}",
    "FruID": "<=/Fru_SEU.FruId",
    "SerialNumber": "<=/FruData_SEU.BoardSerialNumber",
    "StartSlot": 50,
    "M2SlotPresence": "<=/Drive_1.Presence;<=/Drive_2.Presence |> expr($2 << 1 | $1)"
  }
}

完整M.2转接卡配置(含可选属性)

json
{
  "M2TransferCard_Full": {
    "Slot": "${Slot}",
    "UID": "00000001030302023954",
    "Name": "BC83MSMA",
    "Manufacturer": "<=/FruData_SEU.BoardManufacturer|> expr($1 == '' ? 'Huawei' : $1)",
    "Type": "SEU",
    "Description": "M.2 Transform card, 2*PCIE interface",
    "PartNumber": "<=/FruData_SEU.BoardPartNumber",
    "PcbID": "#/Scanner_PcbID.Value",
    "PcbVersion": "",
    "LogicVersion": "N/A",
    "SRVersion": "${DataVersion}",
    "MCUVersion": "",
    "BoardID": 65535,
    "BoardType": "HddBackplane",
    "Number": 1,
    "DeviceName": "M2TransferCard${Slot}",
    "Position": "chassis",
    "NodeId": "chassisM2TransferCard${Slot}",
    "RefMCUChip": "#/Chip_MCU1",
    "FruID": "<=/Fru_SEU.FruId",
    "RefComponent": "#/Component_M2TransferCard",
    "SerialNumber": "<=/FruData_SEU.BoardSerialNumber",
    "StartSlot": 50,
    "CpldStatus": 0,
    "M2SlotPresence": "<=/Drive_1.Presence;<=/Drive_2.Presence |> expr($2 << 1 | $1)"
  }
}

双槽位M.2转接卡配置

json
{
  "M2TransferCard_Dual": {
    "Slot": 1,
    "UID": "00000001030302023954",
    "Name": "BC83MSMA",
    "Manufacturer": "<=/FruData_SEU.BoardManufacturer|> expr($1 == '' ? 'Huawei' : $1)",
    "Type": "SEU",
    "Description": "M.2 Transform card, 2*PCIE interface",
    "PartNumber": "<=/FruData_SEU.BoardPartNumber",
    "PcbID": "#/Scanner_PcbID.Value",
    "SRVersion": "${DataVersion}",
    "BoardID": 65535,
    "BoardType": "HddBackplane",
    "DeviceName": "M2TransferCard1",
    "Position": "chassis",
    "NodeId": "chassisM2TransferCard1",
    "FruID": "<=/Fru_SEU.FruId",
    "SerialNumber": "<=/FruData_SEU.BoardSerialNumber",
    "StartSlot": 50,
    "M2SlotPresence": "<=/Drive_50.Presence;<=/Drive_51.Presence |> expr($2 << 1 | $1)",
    "RefMCUChip": "#/Chip_MCU1",
    "CpldStatus": 0
  }
}

多接口M.2转接卡配置

json
{
  "M2TransferCard_Multi": {
    "Slot": 2,
    "UID": "00000001030302023955",
    "Name": "BC83MSMA",
    "Manufacturer": "<=/FruData_SEU2.BoardManufacturer|> expr($1 == '' ? 'Huawei' : $1)",
    "Type": "SEU",
    "Description": "M.2 Transform card, 4*PCIE interface",
    "PartNumber": "<=/FruData_SEU2.BoardPartNumber",
    "PcbID": "#/Scanner_PcbID2.Value",
    "SRVersion": "${DataVersion}",
    "BoardID": 65535,
    "BoardType": "HddBackplane",
    "DeviceName": "M2TransferCard2",
    "Position": "chassis",
    "NodeId": "chassisM2TransferCard2",
    "FruID": "<=/Fru_SEU2.FruId",
    "SerialNumber": "<=/FruData_SEU2.BoardSerialNumber",
    "StartSlot": 52,
    "M2SlotPresence": "<=/Drive_52.Presence;<=/Drive_53.Presence;<=/Drive_54.Presence;<=/Drive_55.Presence |> expr($4 << 3 | $3 << 2 | $2 << 1 | $1)",
    "RefMCUChip": "#/Chip_MCU2",
    "LogicVersion": "1.0.0",
    "CpldStatus": 0
  }
}

🔧 使用指南

配置步骤

  1. 基础信息配置:设置Slot、UID、Name、Type等基本信息
  2. 厂商信息配置:配置Manufacturer、PartNumber、Description等厂商信息
  3. 硬件关联配置:设置PcbID、RefMCUChip等硬件关联
  4. 版本管理配置:配置SRVersion、LogicVersion、MCUVersion等版本信息
  5. 接口展示配置:设置DeviceName、Position、NodeId等展示信息
  6. M.2盘检测配置:配置M2SlotPresence检测M.2盘在位状态
  7. 槽位配置:配置StartSlot定义M.2盘起始槽位号

UID编码规范

  • Vendor ID: 固定为00000001(华为)
  • 单板类型: 2位十六进制,如03表示SEU
  • 单板编码: 10位十六进制,唯一标识单板
  • 完整格式: vendor(8位) + 单板类型(2位) + 单板编码(10位)

M.2盘在位检测

  • M2SlotPresence: 使用位图表示M.2盘在位状态
  • bit0: 表示SSD1在位状态
  • bit1: 表示SSD2在位状态
  • 表达式: <=/Drive_1.Presence;<=/Drive_2.Presence |> expr($2 << 1 | $1)

单板类型说明

  • SEU: 存储扩展单元(Storage Expansion Unit)
  • M.2转接卡: 专门用于M.2 SSD的转接卡
  • PCIe接口: 支持多个PCIe接口连接

动态属性生成

  • DeviceName: 格式为"M2TransferCard${Slot}",如M2TransferCard1
  • Position: 通常设置为"chassis"
  • NodeId: 格式为"chassisM2TransferCard${Slot}",如chassisM2TransferCard1

注意事项

  • 槽位唯一性: 确保每个M.2转接卡的Slot在系统中唯一
  • UID唯一性: 确保每个M.2转接卡的UID唯一
  • StartSlot配置: 确保StartSlot配置正确,避免与其他存储设备冲突
  • M.2盘关联: 确保M2SlotPresence正确关联到对应的Drive对象

故障排除

  1. 信息获取失败

    • 检查FruData对象是否存在且正确配置
    • 验证Scanner对象是否正确关联
    • 确认硬件连接是否正常
  2. M.2盘检测异常

    • 检查Drive对象是否存在且正确配置
    • 确认M2SlotPresence表达式计算是否正确
    • 验证M.2盘硬件连接是否正常
  3. 版本信息异常

    • 检查PcbID读取是否正常
    • 确认LogicVersion、MCUVersion是否正确获取
    • 验证版本信息来源是否可靠

性能优化

  • 信息缓存: 合理缓存FRU数据,减少重复读取
  • 状态监控: 优化M.2盘在位检测频率和机制
  • 版本管理: 优化版本信息获取和更新机制

📚 相关文档