一、PLDM FRU Record Data Format
字段顺序 | 字段名称 | 大小(字节) | 数据类型 | 说明 |
---|---|---|---|---|
1 | FRU Record Set Identifier | 2 | uint16 | 标识FRU记录集的唯一值 |
2 | FRU Record Type | 1 | uint8 | 指定FRU记录的类型 |
3 | Number of FRU Fields | 1 | uint8 | 记录中包含的FRU字段总数 |
4 | Encoding Type for FRU Fields | 1 | uint8 | 字段值的编码类型: 0=Unspecified, 1=ASCII, 2=UTF8, 3=UTF16, 4=UTF16-LE, 5=UTF16-BE (6-255保留) |
5+ | FRU Field #1 ~ #n | 可变 | TLV结构 | 每个字段由以下三部分组成: 1. Type(1字节, uint8) 2. Length(1字节, uint8) 3. Value(长度由Length字段定义) |
关键说明
- FRU字段结构
-
每个字段为TLV(Type-Length-Value)格式,具体类型、长度范围和值定义需参考表5(文档未提供表5内容,需结合标准文档完整版)。
-
编码类型(Encoding Type)
影响字段值的解析方式,例如:- ASCII:单字节字符集
- UTF16-LE/BE:小端/大端编码的Unicode
-
重复字段
字段数量由Number of FRU Fields
决定,每个字段按顺序排列(Type→Length→Value)
-
PLDM FRU 数据表格式(表3)
字段 | 说明 |
---|---|
FRU Record Data #1 | 单个FRU记录数据块,格式遵循表2定义的TLV结构(包含类型、长度、值等字段)。 |
FRU Record Data #2 | 第二个FRU记录数据块,结构与#1相同。 |
... | 重复的FRU记录数据块。 |
FRU Record Data #n | 第n个FRU记录数据块。 |
说明:
整个FRU数据表由多个FRU记录数据块组成,每个数据块对应表2的结构(即包含FRU Record Set Identifier
、Record Type
、字段数量、编码类型及具体字段的TLV数据)。
FRU 记录类型定义(表4)
Record Type | 描述 | 用途 |
---|---|---|
0 | Reserved | 保留,不可使用。 |
1 | General FRU Record | 通用FRU记录,字段类型由表5定义(如机箱类型、序列号等)。 |
2–253 | Reserved | 保留,不可使用。 |
254 | OEM FRU Record | OEM自定义记录,字段类型由表6定义(需包含厂商IANA和自定义字段)。 |
255 | Reserved | 保留,不可使用。 |
通用FRU记录字段类型(表5)
Field Type | 字段描述 | 字段格式 | 长度 | 说明 |
---|---|---|---|---|
0 | Reserved | N/A | N/A | 保留字段。 |
1 | Chassis Type | String | 1–255字节 | 机箱类型(例如塔式、机架式等)。 |
2 | Model | String | 1–255字节 | 设备型号。 |
3 | Part Number | String | 1–255字节 | 部件号。 |
4 | Serial Number | String | 1–255字节 | 序列号。 |
5 | Manufacturer | String | 1–255字节 | 制造商名称。 |
6 | Manufacture Date | Timestamp104 | 13字节 | 生产日期(格式为DMTF Timestamp 104)。 |
7 | Vendor | String | 1–255字节 | 供应商名称。 |
8 | Name | String | 1–255字节 | 设备名称。 |
9 | SKU | String | 1–255字节 | 库存单位编号。 |
10 | Version | String | 1–255字节 | 版本号。 |
11 | Asset Tag | String | 1–255字节 | 资产标签。 |
12 | Description | String | 1–255字节 | 设备描述信息。 |
13 | Engineering Change Level | String | 1–255字节 | 工程变更级别。 |
14 | Other Information | String | 1–255字节 | 其他自定义信息。 |
15 | Vendor IANA | uint32 | 4字节 | 供应商的IANA企业号(用于OEM标识)。 |
16–255 | Reserved | N/A | N/A | 保留字段,不可使用。 |
OEM FRU记录字段类型(表6)
Field Type | 字段描述 | 字段格式 | 说明 |
---|---|---|---|
0 | Reserved | N/A | 保留字段。 |
1 | Vendor IANA | uint32 | 必填字段,表示OEM厂商的IANA企业号(用于唯一标识厂商)。 |
2–254 | OEM Specific Field Types | OEM自定义 | OEM可自定义字段类型和格式(例如字符串、整数等),需厂商自行定义规范。 |
255 | Reserved | N/A | 保留字段。 |
示例应用
[FRU Record Set ID] [Record Type=1] [Num Fields=3] [Encoding=1 (ASCII)]
→ Field1 (Type=1, Length=5, Value="Rack")
→ Field2 (Type=4, Length=10, Value="SN12345678")
→ Field3 (Type=6, Length=13, Value="202309011200Z")
Oem Fru
[FRU Record Set ID] [Record Type=254] [Num Fields=2] [Encoding=0 (Unspecified)]
→ Field1 (Type=1, Length=4, Value=0x00ABCDEF) // Vendor IANA
→ Field2 (Type=2, Length=8, Value=0xA1B2C3D4) // OEM自定义字段
二、PLDM Record Set/transfer
1. FRU Record Set PDR(FRU记录集PDR)
- 作用:
- 描述PLDM FRU记录集数据的特性(如存储位置、关联实体等)。
- 帮助定位存储FRU记录集数据的终端(Terminus),以便访问这些数据。
- 标识与FRU信息关联的特定实体(Entity)。
- 规范来源:定义于DMTF标准文档DSP0248中,需结合该文档获取详细结构。
2. PLDM FRU数据传输表示(表7)
PLDM消息中的FRU数据由以下三部分组成:
字段 | 描述 |
---|---|
FRU Record Data | 一个或多个FRU记录数据块,格式遵循表2定义的TLV结构(包含类型、长度、值等)。 |
Pad(填充字节) | 0–3字节的填充,每个填充字节值为0x00 ,用于对齐数据。 |
FRUDataStructureIntegrityChecksum | 4字节的CRC-32校验和,用于验证数据完整性 |
三、PLDM FRU Record cmd
1. PLDM FRU数据传输命令概览(表8)
命令名称 | 命令代码 | 要求等级 | 说明 | 对应章节 |
---|---|---|---|---|
GetFRURecordTableMetadata | 0x01 | Mandatory | 获取FRU记录表的元数据(版本、最大容量、总长度、记录数、校验和等)。 | 9.2.2 |
GetFRURecordTable | 0x02 | Mandatory | 分块获取完整的FRU记录表数据。 | 9.2.3 |
SetFRURecordTable | 0x03 | Conditional | 设置FRU记录表数据(仅在支持写入时可用)。 | 9.2.4 |
GetFRURecordByOption | 0x04 | Optional | 按条件查询特定FRU记录(可选实现)。 | 9.2.5 |
2. GetFRURecordTableMetadata
命令(表9)
请求格式
无请求数据(空请求)。
响应格式
字节偏移 | 字段名称 | 数据类型 | 说明 |
---|---|---|---|
0 | CompletionCode | enum8 | 完成码: - 0x00 : 成功- 0x83 : 无FRU数据表元数据(错误) |
1 | FRUDATAMajorVersion | uint8 | FRU数据规范的主版本(当前为0x01 )。 |
2 | FRUDATAMinorVersion | uint8 | FRU数据规范的次版本(当前为0x00 )。 |
3–6 | FRUTableMaximumSize | uint32 | FRU表的最大容量(字节): - 0x00000000 : 不支持写入(Set 命令无效)- 0xFFFFFFFF : 未知 |
7–10 | FRUTableLength | uint32 | FRU表当前总长度(字节)。 |
11–12 | TotalRecordSetIdentifiers | uint16 | 表中所有记录集的唯一标识符总数。 |
13–14 | TotalRecords | uint16 | 表中所有FRU记录的总数。 |
15–18 | FRUDataStructureTableIntegrityChecksum | uint32 | FRU表的CRC-32校验和(不包含填充字节)。 |
3. GetFRURecordTable
命令(表10)
请求格式
字节偏移 | 字段名称 | 数据类型 | 说明 |
---|---|---|---|
0–3 | DataTransferHandle | uint32 | 数据传输句柄,用于标识当前传输块。 |
4 | TransferOperationFlag | enum8 | 传输操作标志: - 0x00 (GetNextPart): 获取下一块数据- 0x01 (GetFirstPart): 从头开始获取 |
响应格式
字节偏移 | 字段名称 | 数据类型 | 说明 |
---|---|---|---|
0 | CompletionCode | enum8 | 完成码: - 0x00 : 成功- 0x80 : 无效句柄- 0x81 : 无效操作标志- 0x85 : FRU表不可用 |
1–4 | NextDataTransferHandle | uint32 | 下一块数据的传输句柄(用于连续分块传输)。 |
5 | TransferFlag | enum8 | 传输标志: - 0x01 (Start): 首块数据- 0x02 (Middle): 中间块- 0x04 (End): 末尾块- 0x05 (StartAndEnd): 单块传输 |
6+ | PortionOfFRURecordTable | 可变长度 | FRU记录表的分块数据(格式遵循表3定义)。 |
4. SetFRURecordTable
命令(表11)
作用
通过分块传输方式写入FRU记录表数据(需终端支持写入操作)。
请求格式
字节偏移 | 字段名称 | 数据类型 | 说明 |
---|---|---|---|
0–3 | DataTransferHandle | uint32 | 数据传输句柄,用于标识当前传输块(若TransferFlag 为Start 或StartAndEnd ,此字段被忽略)。 |
4 | TransferFlag | enum8 | 传输标志: - 0x01 (Start): 首块数据- 0x02 (Middle): 中间块- 0x04 (End): 末尾块- 0x05 (StartAndEnd): 单块传输 |
5+ | PortionOfFRURecordTable | 可变长度 | FRU记录表的分块数据(格式遵循表7,包含填充和CRC-32校验和)。 |
响应格式
字节偏移 | 字段名称 | 数据类型 | 说明 |
---|---|---|---|
0 | CompletionCode | enum8 | 完成码: - 0x00 : 成功- 0x80 : 无效句柄- 0x82 : 无效传输标志- 0x84 : 数据完整性校验失败 |
1–4 | NextDataTransferHandle | uint32 | 下一块数据的传输句柄(用于连续分块传输)。 |
5. GetFRURecordByOption
命令(表12)
作用
通过条件过滤(记录句柄、类型、字段类型等)分块获取FRU记录数据(可选功能)。
请求格式
字节偏移 | 字段名称 | 数据类型 | 说明 |
---|---|---|---|
0–3 | DataTransferHandle | uint32 | 数据传输句柄,用于标识当前传输块(若TransferOperationFlag=GetFirstPart ,此字段被忽略)。 |
4–5 | FRUTableHandle | uint16 | FRU数据记录句柄,用于标识目标记录集(范围:0x0000–0xFFFF )。 |
6–7 | RecordSetIdentifier | uint16 | 记录集标识符: - 0x0000 : 所有记录集- 0x0001–0xFFFF : 指定记录集 |
8 | RecordType | uint8 | 记录类型: - 0x00 : 所有类型- 0x01–0xFF : 指定类型(如0x01 为通用记录) |
9 | FieldType | uint8 | 字段类型: - 0x00 : 所有字段类型- 0x01–0xFF : 指定字段类型(需与RecordType 配合使用) |
10 | TransferOperationFlag | enum8 | 传输操作标志: - 0x00 (GetNextPart): 获取下一块数据- 0x01 (GetFirstPart): 从头开始获取 |
响应格式
字节偏移 | 字段名称 | 数据类型 | 说明 |
---|---|---|---|
0 | CompletionCode | enum8 | 完成码: - 0x00 : 成功- 0x80 : 无效句柄- 0x81 : 无效操作标志- 0x85 : FRU表不可用 |
1–4 | NextDataTransferHandle | uint32 | 下一块数据的传输句柄(用于连续分块传输)。 |
5 | TransferFlag | enum8 | 传输标志: - 0x01 (Start): 首块数据- 0x02 (Middle): 中间块- 0x04 (End): 末尾块- 0x05 (StartAndEnd): 单块传输 |
6+ | FRUDataStructureData | 可变长度 | 符合条件的FRU记录数据块(格式遵循表7)。 |