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

📋 文档信息

项目内容
文档标题CSR配置字典之Fru类
文档版本1.0
创建日期2024-01-XX
最后更新2024-01-XX
维护状态活跃维护

📋 变更历史记录

版本日期变更内容变更人
1.02024-01-XX初始版本创建系统

🎯 类概述

Fru 类用于管理可独立更换模块(Field Replaceable Unit)的配置。该类主要负责电子标签的查询和管理,包括PCB版本信息、FRU标识、电源状态、健康状态等关键属性的配置和监控。

主要功能特点

  • 电子标签管理:提供完整的FRU电子标签信息查询功能
  • 版本控制:支持PCB版本的自动转换和管理
  • 状态监控:实时监控FRU的电源状态和健康状态
  • 唯一标识:支持天池组件的唯一标识管理
  • 数据关联:与其他组件和数据对象的动态关联

📊 属性定义表

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
PcbIdU8NAU8#/Accessor_PcbID.Value关联获取PcbID的Accessor查询电子标签#/Accessor_PcbID.ValueCSR配置硬件
PcbVersionStringNAString自动转换PCB的版本,例如.A或者.B,这个值会自动根据PcbId进行转换(PcbID为1,PcbVersion为".A",PcbID为21,PcbVersion为".B",以此类推)查询电子标签".A"CSR配置硬件
FruIdU8NAU8关联所在的Fru的Fruid,0只能给挂耳使用,配置FruId为1~63会自动分配,大于63则使用配置的FruId,除挂耳外配成1即可查询电子标签1CSR配置软件
FruNameStringNAStringFru的名称,如CpuBoard查询电子标签"CpuBoard${Slot}"CSR配置软件
PowerStateU8NAU8(只取1或0)Fru关联的热插拔状态,如果不支持可以直接配成1,支持热插拔则需要关联对应的ChassisPayload的PowerState查询电子标签1CSR配置硬件
HealthU8NAU8当前未使用查询电子标签0CSR配置软件
EepStatusU8NAU8当前未使用查询电子标签1CSR配置软件
GroupPositionStringNAString代码会更新为自发现Position,可不配置查询电子标签0BMC内部设置软件
TypeU8NAU8Fru类型,请参考IDP文档中的IPMI接口说明的设备类型附录查询电子标签36CSR配置软件
BoardIdU1665535U16非天池组件单板BoardID,天池组件默认配置65535查询电子标签65535CSR配置硬件
UniqueIdStringNAString天池:组件唯一标识,Vendor + ComponentID。代码会从eeprom获取给赋值查询电子标签"00000001100302025549"CSR配置软件
FruDataId关联FruData对象NA关联FruData对象关联FruData对象查询电子标签"#/FruData_CpuBoard"CSR配置软件
ConnectorGroupIdU32NAU32关联Connector传过来的GroupId查询电子标签"${GroupId}"CSR配置软件

🔗 动态关联机制

1. PcbId 关联

  • 关联对象: Accessor对象
  • 关联格式: #/Accessor_PcbID.Value
  • 功能: 动态获取PCB标识信息

2. PcbVersion 自动转换

  • 转换规则: 根据PcbId自动转换版本号
  • 转换逻辑:
    • PcbID为1 → PcbVersion为".A"
    • PcbID为21 → PcbVersion为".B"
    • 以此类推

3. FruDataId 关联

  • 关联对象: FruData对象
  • 关联格式: #/FruData_xxx
  • 功能: 关联FRU数据对象

4. ConnectorGroupId 关联

  • 关联对象: Connector对象
  • 关联格式: ${GroupId}
  • 功能: 关联连接器组标识

📂 分类标准

硬件分类

  • PcbId: PCB标识信息
  • PcbVersion: PCB版本信息
  • PowerState: 电源状态
  • BoardId: 单板标识

软件分类

  • FruId: FRU标识
  • FruName: FRU名称
  • Health: 健康状态
  • EepStatus: EEPROM状态
  • GroupPosition: 组位置
  • Type: FRU类型
  • UniqueId: 唯一标识
  • FruDataId: FRU数据关联
  • ConnectorGroupId: 连接器组关联

📝 配置示例

基本CPU板卡配置

json
{
  "PcbId": "#/Accessor_PcbID.Value",
  "PcbVersion": ".A",
  "FruId": 1,
  "FruName": "CpuBoard1",
  "PowerState": 1,
  "Health": 0,
  "EepStatus": 1,
  "GroupPosition": "0",
  "Type": 36,
  "BoardId": 65535,
  "UniqueId": "00000001100302025549",
  "FruDataId": "#/FruData_CpuBoard",
  "ConnectorGroupId": "${GroupId}"
}

热插拔支持配置

json
{
  "PcbId": "#/Accessor_PcbID.Value",
  "PcbVersion": ".B",
  "FruId": 2,
  "FruName": "CpuBoard2",
  "PowerState": "#/ChassisPayload.PowerState",
  "Health": 0,
  "EepStatus": 1,
  "GroupPosition": "1",
  "Type": 36,
  "BoardId": 1001,
  "UniqueId": "00000001100302025550",
  "FruDataId": "#/FruData_CpuBoard2",
  "ConnectorGroupId": "${GroupId}"
}

天池组件配置

json
{
  "PcbId": "#/Accessor_PcbID.Value",
  "PcbVersion": ".A",
  "FruId": 1,
  "FruName": "TianchiComponent",
  "PowerState": 1,
  "Health": 0,
  "EepStatus": 1,
  "GroupPosition": "0",
  "Type": 36,
  "BoardId": 65535,
  "UniqueId": "00000001100302025549",
  "FruDataId": "#/FruData_Tianchi",
  "ConnectorGroupId": "${GroupId}"
}

🔧 使用指南

1. 必选属性配置

以下属性为必选项,必须正确配置:

  • PcbId: 必须关联有效的Accessor对象
  • PcbVersion: 系统会自动转换,无需手动配置
  • FruId: 除挂耳外配成1即可
  • FruName: 提供有意义的FRU名称
  • Type: 参考IDP文档中的设备类型附录
  • BoardId: 天池组件配置65535,其他组件配置实际BoardID
  • FruDataId: 必须关联有效的FruData对象
  • ConnectorGroupId: 必须关联有效的Connector GroupId

2. 可选属性配置

以下属性为可选项,根据实际需求配置:

  • PowerState: 不支持热插拔配成1,支持热插拔需关联ChassisPayload
  • Health: 当前未使用,可配置为0
  • EepStatus: 当前未使用,可配置为1
  • GroupPosition: 代码会自动更新,可不配置
  • UniqueId: 天池组件需要配置,其他组件可选

3. 版本转换规则

  • PcbId为1-20:对应PcbVersion ".A"到".T"
  • PcbId为21-40:对应PcbVersion ".B"到".U"
  • 以此类推,每20个ID对应一个版本系列

4. FruId分配规则

  • 0:专用于挂耳
  • 1-63:自动分配
  • 64+:使用配置的FruId

❓ 常见问题

Q1: PcbVersion如何自动转换?

A: 系统会根据PcbId自动转换PcbVersion,无需手动配置。转换规则为:PcbID为1对应".A",PcbID为21对应".B",依此类推。


Q2: 天池组件和普通组件的区别?

A: 天池组件的BoardId固定为65535,需要配置UniqueId作为唯一标识;普通组件使用实际的BoardId,UniqueId可选。


Q3: 如何处理热插拔状态?

A: 如果不支持热插拔,直接配置PowerState为1;如果支持热插拔,需要关联对应ChassisPayload的PowerState。


Q4: Health和EepStatus属性的用途?

A: 这两个属性当前未使用,可以配置为默认值0和1。


Q5: GroupPosition需要手动配置吗?

A: 不需要,代码会自动更新为自发现的Position值,可以不配置或配置为默认值。