Bootstrap

PLDM入门(五):PDR 各Type数据帧

一、Common PDR header format

所有PDR均包含以下固定格式的头部,后接可变长度的记录数据。头部字段定义如下:

字段名

类型大小(字节)描述特殊值/备注
recordHandleuint324唯一标识PDR的句柄,用于访问PDR存储库中的记录。需保证同一存储库内的唯一性,但无需跨类型或系统唯一。0x0000_0000 为保留值,不可使用。
PDRHeaderVersionuint81头部格式版本号,用于未来扩展兼容性。当前规范版本为 0x01当前有效值:0x01(对应本规范定义的PDR)。
PDRTypeuint81指定PDR类型,具体类型由规范定义(如传感器、实体关联等)。参见规范第25.3节和28.2节的类型编码。
recordChangeNumberuint162记录变更计数器,用于追踪PDR的修改次数(如版本同步或更新)。详见规范第26.2.3节。
dataLengthuint162PDR数据部分的长度(单位:字节),不包含头部自身长度数据部分长度可变,但建议同一类型的PDR尽量使用固定长度以简化处理。

二、PDR Type 

标准PDR类型(1~24)
类型编号PDR类型名称参考章节说明
1Terminus Locator PDR28.3终结点定位器描述,用于标识PLDM通信终结点。
2Numeric Sensor PDR28.4数值型传感器描述,支持连续数值监测(如温度、电压)。
3Numeric Sensor Initialization PDR28.5数值型传感器初始化参数(如阈值、精度)。
4State Sensor PDR28.6状态型传感器描述,支持离散状态监测(如开关状态)。
5State Sensor Initialization PDR28.7状态型传感器初始化参数(如状态集定义)。
6Sensor Auxiliary Names PDR28.8传感器辅助名称(如多语言描述或别名)。
7OEM Unit PDR28.9厂商自定义单位定义(如扩展单位类型)。
8OEM State Set PDR28.10厂商自定义状态集(如扩展状态编码)。
9Numeric Effecter PDR28.11数值型执行器描述,支持连续数值控制(如风扇转速调节)。
10Numeric Effecter Initialization PDR28.12数值型执行器初始化参数(如范围、步长)。
11State Effecter PDR28.13状态型执行器描述,支持离散状态控制(如电源开关操作)。
12State Effecter Initialization PDR28.14状态型执行器初始化参数(如支持的触发条件)。
13Effecter Auxiliary Names PDR28.15执行器辅助名称(如多语言描述或别名)。
14Effecter OEM Semantic PDR28.16执行器厂商自定义语义(如扩展操作逻辑)。
15Entity Association PDR28.17实体关联关系描述(如硬件组件层级结构)。
16Entity Auxiliary Names PDR28.18实体辅助名称(如设备别名或位置信息)。
17OEM Entity ID PDR28.19厂商自定义实体标识符(如扩展实体类型)。
18Interrupt Association PDR28.20中断关联描述(如中断信号与实体/传感器的绑定)。
19PLDM Event Log PDR28.21事件日志配置(如日志存储位置和触发条件)。
20FRU Record Set PDR28.22现场可更换单元(FRU)记录集定义。
21Compact Numeric Sensor PDR28.25紧凑型数值传感器描述(优化存储空间的传感器配置)。
22Redfish Resource PDR28.26Redfish资源映射(与Redfish API资源的关联)。
23Redfish Entity Association PDR28.27Redfish实体关联(如Redfish资源与PLDM实体的绑定)。
24Redfish Action PDR28.28Redfish操作映射(定义可通过PLDM触发的Redfish操作)。
126OEM Device PDR28.23厂商自定义设备描述(用于扩展非标准设备或功能)。
127OEM PDR28.24

 三、Terminus Locator PDR

用于将 PLDMTerminusHandle 与唯一标识PLDM终结点(设备或软件)的值关联。其格式包含公共头部和以下特有字段:

字段定义

字段名类型/格式描述枚举值/示例
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (1), recordChangeNumberdataLength-
PLDMTerminusHandleuint16唯一标识属于特定PLDM终结点的PDR集合。-
validityenum8标记此PDR是否有效,用于终结点枚举。notValid(无效,需忽略)
valid(有效)
详见规范12.5节
TIDuint8PLDM终结点ID,用于标识来自该终结点的异步消息。-
containerIDuint16包含此终结点的实体的容器ID(如硬件模块或子系统)。详见规范9.1节
terminusLocatorTypeenum8终结点定位类型,决定后续 terminusLocatorValue 的格式。UID(基于唯一设备标识符)
MCTP_EID(MCTP终结点ID)
SMBusRelative(SMBus相对地址)
systemSoftware(系统软件代理)
terminusLocatorValueSizeuint8terminusLocatorValue 字段的字节长度,用于兼容未来扩展。

terminusLocatorValue 字段结构(按类型划分)

1. terminusLocatorType = UID
字段名类型/格式描述示例/约束
terminusInstanceuint8设备包含多个PLDM终结点时,用于区分不同终结点。0~255
deviceUIDUUID设备唯一标识符(可能非全局唯一),需保证同一PLDM系统内唯一。厂商可预定义或通过配置选择;设备需支持 GetTerminusUID 命令。
2. terminusLocatorType = MCTP_EID
字段名类型/格式描述示例/约束
EIDuint8MCTP终结点ID,用于标识传输协议终结点。0x00~0xFF(MCTP EID范围)
3. terminusLocatorType = SMBusRelative
字段名类型/格式描述示例/约束
UIDUUID总线控制器的唯一标识符(参考 UID 类型定义)。同 terminusLocatorType = UID 的 deviceUID
busNumberuint8设备连接的总线号(相对于拥有总线的控制器)。若通过MCTP访问,必须与路由表中的端口号一致。
slaveAddressuint8SMBus/I²C从机地址。
[7:1]: 地址值
[0]: 固定为0b。
例如:0x50(7位地址)对应 slaveAddress 字段值为 0xA0(左移一位后)。
4. terminusLocatorType = systemSoftware
字段名类型/格式描述枚举值/示例
softwareClassenum8软件类别,标识终结点类型。unspecified(未指定)
other(其他)
systemFirmware(系统固件)
OSloader(OS引导程序)
OS(操作系统)
CIMprovider(CIM提供者)
otherProvider(其他提供者)
virtualMachineManager(虚拟机管理器)
UUIDUUID软件实例的唯一标识符,需保证同一PLDM子系统内唯一。
(同一软件的多实例需不同UUID)
例如:厂商预定义或动态生成。

四、Numeric Sensor PDR 概述

用于描述PLDM数值型传感器的语义、单位转换参数及关联实体信息,支持传感器原始数据到标准化单位的转换。其格式包含公共头部和以下特有字段 

字段定义

字段名类型/格式描述枚举值/备注
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (2), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
sensorIDuint16传感器在给定终结点内的唯一标识符。自规范1.1.1版本起由uint8扩展为uint16,以兼容GetSensorReading命令。
entityTypeuint16关联实体的类型(如处理器、电源模块等)。详见规范9.1节实体类型定义。
entityInstanceNumberuint16关联实体的实例编号(同一类型实体的多个实例)。详见规范9.1节。
containerIDuint16包含该实体的容器ID(如硬件模块或子系统)。详见规范9.1节。
sensorInitenum8传感器初始化策略。noInit(无需初始化)
useInitPDR(使用Numeric Sensor Initialization PDR)
enableSensor(初始化时启用)
disableSensor(初始化时禁用)
sensorAuxiliaryNamesPDRbool8是否关联Sensor Auxiliary Names PDR(提供辅助名称)。true(关联)
false(不关联)
baseUnitenum8传感器返回值的基础单位(如伏特、安培)。参见规范表74(如degreesCvoltswatts等)。
unitModifiersint8基础单位的10的幂次缩放因子(如3表示×10³)。范围:-128 ~ 127
rateUnitenum8速率单位(如每秒、每小时)。NonePer MicroSecondPer MilliSecondPer SecondPer MinutePer Hour等。
baseOEMUnitHandleuint8baseUnitOEMUnit,此句柄指向对应的OEM Unit PDR。-
auxUnitenum8辅助单位(可选,用于复合单位计算)。baseUnit
auxUnitModifiersint8辅助单位的10的幂次缩放因子。范围:-128 ~ 127
auxrateUnitenum8辅助速率单位。rateUnit
relenum8基础单位与辅助单位的关系。dividedBy(除法,如“伏特/秒”)
multipliedBy(乘法,如“伏特×安培”)
auxOEMUnitHandleuint8auxUnitOEMUnit,此句柄指向对应的OEM Unit PDR。-
isLinearbool8传感器是否线性(影响MAP的CIM_NumericSensor.IsLinear属性)。true(线性)
false(非线性或动态范围)
sensorDataSizeenum8传感器原始数据格式及位宽。uint8sint8uint16sint16uint32sint32
resolutionreal32传感器分辨率(单位/原始计数)。示例:0.1表示每计数对应0.1单位(如0.1V)。
offsetreal32原始数据转换为单位值的偏移量(如校准偏移)。公式:单位值 = (原始值 × resolution) + offset
accuracyuint16精度误差范围(±百分比,以1/100%为单位)。示例:510表示±5.10%;详见规范27.6节。
plusTolerance
minusTolerance
uint8量化误差的上下限(原始计数值)。示例:plusTolerance=2表示+2计数误差;详见规范27.6节。
hysteresisuint8/sint8/uint16/sint16/uint32/sint32传感器阈值迟滞值(原始计数单位)。大小由sensorDataSize决定;0表示无迟滞;可被SetSensorThresholds命令覆盖。
阈值与稳定性相关字段
字段名类型/格式描述枚举值/位定义
supportedThresholdsbitfield8指示传感器支持的阈值类型(每位对应一种阈值)。位定义:
[0]: upperThresholdWarning(支持)
[1]: upperThresholdCritical
[2]: upperThresholdFatal
[3]: lowerThresholdWarning
[4]: lowerThresholdCritical
[5]: lowerThresholdFatal
[6:7]: 保留(必须为0)
thresholdAndHysteresisVolatilitybitfield8指示阈值和迟滞设置的易失性条件(在哪些情况下会被重置)。位定义:
[0]: 初始化代理重启或更新时重置
[1]: PLDM子系统上电时重置
[2]: 系统硬重置时重置
[3]: 系统热重置时重置
[4]: PLDM终结点恢复在线时重置
[5:7]: 保留(必须为0)
特殊值: 00000b(非易失,永久保留)
stateTransitionIntervalreal32传感器状态切换(如启用/禁用)所需的最长时间(秒)。*示例:0.5秒(支持浮点表示);real32允许“未知”值。
updateIntervalreal32传感器数据更新或轮询间隔(秒)。示例:1.0秒(每秒更新一次)。

可读范围与标称值字段
字段名类型/格式描述示例/约束
maxReadableuint8/sint8/uint16/sint16/uint32/sint32传感器可返回的最大原始值(格式由sensorDataSize决定)。示例:sensorDataSize=uint16时,maxReadable=0xFFFF(需通过转换公式转换为单位值)。
minReadableuint8/sint8/uint16/sint16/uint32/sint32传感器可返回的最小原始值(格式由sensorDataSize决定)。示例:sensorDataSize=sint8时,minReadable=-128
rangeFieldFormatenum8后续范围字段(如nominalValue)的数据格式。uint8sint8uint16sint16uint32sint32real32
注: 规范错误未包含warningHigh/warningLow,需等待版本修正。
rangeFieldSupportbitfield8指示哪些范围字段有效(支持)。位定义:
[0]: nominalValue(支持)
[1]: normalMax
[2]: normalMin
[3]: criticalHigh
[4]: criticalLow
[5]: fatalHigh
[6]: fatalLow
[7]: 保留(必须为0)
注: warningHigh/warningLow未包含,需通过紧凑型PDR实现。
nominalValueuint8/sint8/uint16/sint16/uint32/sint32/real32被监测参数的标称值(直接以单位表示,无需转换)。示例:rangeFieldFormat=real32时,nominalValue=5.0(对应5.0伏特)。

字段名类型/格式描述示例/约束
normalMaxuint8/sint8/uint16/sint16/uint32/sint32/real32被监测参数的正常操作范围上限(单位直接表示)。当读数超过此值视为超出正常范围。示例:5.25(单位:伏特,表示正常电压上限为5.25V)。
normalMin同上被监测参数的正常操作范围下限(单位直接表示)。阈值设置通常低于此值以避免误报。示例:4.75(单位:伏特,表示正常电压下限为4.75V)。
warningHigh同上警告条件的高阈值(读数超过此值时触发警告)。可能与 normalMax 相同。示例:5.30(单位:伏特,警告电压上限为5.30V)。
warningLow同上警告条件的低阈值(读数低于此值时触发警告)。可能与 normalMin 相同。示例:4.70(单位:伏特,警告电压下限为4.70V)。
criticalHigh同上严重条件的高阈值(读数超过此值时触发严重警报)。可能等于 normalMax示例:5.50(单位:伏特,严重电压上限为5.50V)。
criticalLow同上严重条件的低阈值(读数低于此值时触发严重警报)。可能等于 normalMin示例:4.50(单位:伏特,严重电压下限为4.50V)。
fatalHigh同上致命条件的高阈值(读数超过此值时触发致命故障)。可能等于 normalMax示例:6.00(单位:伏特,致命电压上限为6.00V)。
fatalLow同上致命条件的低阈值(读数低于此值时触发致命故障)。可能等于 normalMin示例:4.00(单位:伏特,致命电压下限为4.00V)。

四、 Numeric Sensor Initialization PDR 

用于配置需要初始化代理(Initialization Agent)初始化的数值型传感器,定义阈值、启用状态及初始化触发条件。其格式包含公共头部和以下特有字段: 

字段定义

字段名类型/格式描述枚举值/位定义
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (3), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
sensorIDuint16传感器在给定终结点内的唯一标识符(与Numeric Sensor PDR的sensorID一致)。-
initConditionsbitfield8初始化触发条件(每位对应一种系统事件)。位定义:
[0]: 初始化代理重启或更新时触发
[1]: PLDM子系统上电时触发
[2]: 系统硬重置时触发
[3]: 系统热重置时触发
[4]: PLDM终结点恢复在线时触发
[5:7]: 保留(必须为0)
sensorEnableenum8初始化后传感器的操作状态。0x00: 禁用
0x01: 启用
0xFF: 不改变当前状态(特殊值)
thresholdInitMaskbitfield8指定需要初始化的阈值类型(每位对应一种阈值)。位定义:
[0]: 初始化upperThresholdWarning
[1]upperThresholdCritical
[2]upperThresholdFatal
[3]lowerThresholdWarning
[4]lowerThresholdCritical
[5]lowerThresholdFatal
[6:7]: 保留
sensorDataSizeenum8传感器原始数据及阈值的位宽格式。uint8sint8uint16sint16uint32sint32

阈值字段定义

以下字段的 类型和大小 由 sensorDataSize 决定,值以 传感器原始单位(未经转换) 表示:

字段名描述
upperThresholdWarning高警告阈值(原始单位)。当传感器读数超过此值时触发警告事件。
upperThresholdCritical高严重阈值(原始单位)。当传感器读数超过此值时触发严重事件。
upperThresholdFatal高致命阈值(原始单位)。当传感器读数超过此值时触发致命事件。
lowerThresholdWarning低警告阈值(原始单位)。当传感器读数低于此值时触发警告事件。
lowerThresholdCritical低严重阈值(原始单位)。当传感器读数低于此值时触发严重事件。
lowerThresholdFatal低致命阈值(原始单位)。当传感器读数低于此值时触发致命事件。

 五、State Sensor PDR 概述

用于描述复合状态传感器(Composite State Sensor),包含多个子状态传感器的配置信息,所有子传感器共享同一实体关联。其格式包含公共头部和以下特有字段: 

字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (4), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
sensorIDuint16复合状态传感器在终结点内的唯一标识符(所有子传感器共享此ID)。-
entityTypeuint16关联实体的类型(如处理器、电源模块等)。详见规范9.1节。
entityInstanceNumberuint16关联实体的实例编号。详见规范9.1节。
containerIDuint16包含该实体的容器ID(如硬件模块或子系统)。详见规范9.1节。
sensorInitenum8传感器初始化策略。noInit(无需初始化)
useInitPDR(使用State Sensor Initialization PDR)
enableSensor(初始化时启用)
disableSensor(初始化时禁用)
sensorAuxiliaryNamesPDRbool8是否关联Sensor Auxiliary Names PDR(提供多语言辅助名称)。true(关联)
false(不关联)
compositeSensorCountuint8复合传感器中子状态传感器的数量。范围:0x01 ~ 0x08(1~8个子传感器)

子状态传感器字段(possibleStates)

每个子状态传感器包含以下字段,由 compositeSensorCount 指定数量:

字段名类型/格式描述示例/约束
stateSetIDuint16标识该子传感器使用的状态集(如“电源状态”、“健康状态”等)。参考PLDM规范中预定义的状态集(如0x0001表示电源状态)。
possibleStatesSizeuint8possibleStates 位域的大小(字节数)。范围:0x01 ~ 0x20(1~32字节)
特殊值: 0x00表示传感器不可用或禁用。
possibleStatesbitfield8 x M位域表示支持的状态值(每个位对应状态集中的某个状态)。位定义:
每个字节的位0~7对应状态值 X*8+0 ~ X*8+7(X为字节索引)。
例如:0b00000001表示支持状态值0,0b10000000表示支持状态值7。

六、 State Sensor Initialization PDR 概述

用于配置复合状态传感器(Composite State Sensor)中子传感器的初始化参数,包括启用状态、事件触发条件及初始状态值。其格式包含公共头部和以下特有字段: 

字段定义

字段名类型/格式描述枚举值/位定义
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (5), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
sensorIDuint16复合状态传感器在终结点内的唯一标识符(与State Sensor PDR的sensorID一致)。-
initConditionsbitfield8初始化触发条件(所有子传感器共享此配置)。位定义:
[0]: 初始化代理重启或更新时触发
[1]: PLDM子系统上电时触发
[2]: 系统硬重置时触发
[3]: 系统热重置时触发
[4]: PLDM终结点恢复在线时触发
[5:7]: 保留(必须为0)
sensorEnableenum8初始化后子传感器的操作状态。0x00: 禁用
0x01: 启用
0xFF: 不改变当前状态(特殊值)
sensorInitMaskbitfield8标识需要初始化的子传感器(每位对应一个偏移量0~7)。位定义:
[0]: 初始化偏移0的子传感器
[1]: 偏移1

[7]: 偏移7
sensorOpStateEventEnableMaskbitfield8控制子传感器操作状态事件的消息生成(启用/禁用)。位定义:
[0]: 启用偏移0的事件消息
[1]: 偏移1

[7]: 偏移7
sensorStateEventEnableMaskbitfield8控制子传感器状态事件的消息生成(启用/禁用)。**位定义:**同sensorOpStateEventEnableMask
sensorEventRearmbitfield8初始化时是否触发事件(当初始状态与当前状态不一致时)。位定义:
0b: 接受初始状态,不触发事件
1b: 触发事件(状态不匹配时)
stateValue0 ~ stateValue7uint8 x 8每个子传感器的初始化状态值(偏移0~7)。特殊值:0x00表示占位符(无需初始化该子传感器)

七、 Sensor Auxiliary Names PDR 概述

用于为传感器提供多语言辅助名称(如多语言显示名称),支持单个数值传感器或复合状态传感器(Composite State Sensor)。其格式包含公共头部和以下特有字段: 

字段定义

字段名类型/格式描述示例/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (6), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
sensorIDuint16传感器在终结点内的唯一标识符(与Numeric/State Sensor PDR的sensorID一致)。-
sensorCountuint8复合传感器中子传感器的数量(必须按顺序填充,即使某些子传感器无名称)。范围:1~M(M为复合传感器的最大子传感器数)
示例:复合传感器有4个子传感器,sensorCount=4
nameStringCountuint8当前子传感器的名称字符串数量(每个字符串包括语言标签和名称)。范围:0~N(N为支持的名称数量)
示例:nameStringCount=2表示提供两种语言的名称。
nameLanguageTagstrASCII语言标签(遵循RFC4646标准),标识名称的语言(如enzh-cmn-Hans)。特殊值:
0x0000(空字符串)表示语言未指定。
sensorNamestrUTF-16BEUTF-16BE编码的传感器名称(Unicode支持多语言)。特殊值:
0x0000(空字符串)表示名称未提供。

八、 OEM Unit PDR 概述

用于定义OEM厂商自定义的传感器或执行器单位名称(如特殊测量单位),支持多语言字符串。其格式包含公共头部和以下特有字段: 

字段定义

字段名类型/格式描述示例/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (7), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识生成此PDR的PLDM终结点。-
OEMUnitHandleuint8唯一标识该OEM Unit PDR的句柄(同一PDR仓库内唯一)。范围:0x00 ~ 0xFF(同一仓库内不可重复)
vendorIANAuint32厂商的IANA企业编号(标识OEM厂商)。示例:0x0000012D(华为的IANA编号)。
OEMUnitIDuint8厂商自定义的单位类型标识符(用于FindPDR命令搜索)。示例:0x01表示温度单位,0x02表示功耗单位。
stringCountuint8后续语言标签与单位名称对的数量。范围:1~N(至少1对)
unitLanguageTagstrASCII语言标签(遵循RFC4646标准),标识名称的语言(如enzh-cmn-Hans)。特殊值:
空字符串(0x0000)表示语言未指定。
unitNamestrUTF-16BEUTF-16BE编码的单位名称(Unicode支持多语言)。特殊值:
空字符串(0x0000)表示名称未提供。

 九、OEM State Set PDR 

用于定义OEM厂商自定义的状态集(如传感器或执行器的非标准状态),支持多语言状态名称和状态值范围配置。其格式包含公共头部和以下特有字段:

字段定义

字段名类型/格式描述示例/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (8), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识生成此PDR的PLDM终结点。-
OEMStateSetIDHandleuint16唯一标识该OEM状态集的句柄(同一PDR仓库内唯一,取值范围需符合DSP0249定义的OEM状态集范围)。示例:0x8000(OEM状态集范围起始值)。
vendorIANAuint32厂商的IANA企业编号(标识OEM厂商)。示例:0x0000012D(华为的IANA编号)。
OEMStateSetIDuint16厂商自定义的状态集ID(需在DSP0249定义的OEM状态集范围内)。示例:0x8001表示厂商自定义的电源状态集。
unspecifiedValueHintenum8未明确覆盖的状态值的处理策略。treatAsUnspecified(视为未定义)
treatAsError(视为错误)。
stateCountuint8后续OEM状态值记录(OEMStateValueRecord)的数量。范围:0~N(0表示无状态记录)。

OEM State Value Record(状态值记录)

每个记录定义一组连续状态值的名称,格式如下:

字段名类型/格式描述示例/约束
minStateValueuint8状态值范围的最小值(含)。范围:0~255
maxStateValueuint8状态值范围的最大值(含)。maxStateValue ≥ minStateValue,且不可与其他记录范围重叠。
stringCountuint8后续语言标签与状态名称对的数量。范围:1~N(至少1对)
stateLanguageTagstrASCII语言标签(遵循RFC4646标准),标识名称的语言(如enzh-cmn-Hans)。特殊值:
空字符串(0x0000)表示语言未指定。
stateNamestrUTF-16BEUTF-16BE编码的状态名称(Unicode支持多语言)。特殊值:
空字符串(0x0000)表示名称未提供。

十、Numeric Effecter PDR 概述

用于描述PLDM数值型执行器(Numeric Effecter)的配置参数,包括单位转换、初始化策略和实体关联信息。其格式包含公共头部和以下特有字段: 

字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (9), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
effecterIDuint16执行器在终结点内的唯一标识符。注意:规范1.1.1版本后从uint8扩展为uint16。
entityTypeuint16关联实体的类型(如处理器、电源模块等)。详见规范9.1节。
entityInstanceNumberuint16关联实体的实例编号。详见规范9.1节。
containerIDuint16包含该实体的容器ID(如硬件模块或子系统)。详见规范9.1节。
effecterSemanticIDuint16执行器语义ID(标准或OEM范围)。特殊值:0x0000(未指定)
**OEM范围:**需关联OEM Effecter Semantic PDR。
effecterInitenum8执行器初始化策略。noInit(无需初始化)
useInitPDR(使用Numeric Effecter Initialization PDR)
enableEffecter(初始化时启用)
disableEffecter(初始化时禁用)
effecterAuxiliaryNamesbool8是否关联Effecter Auxiliary Names PDR(提供多语言辅助名称)。true(关联)
false(不关联)
baseUnitenum8基础单位(如电压、电流等)。参考规范表74(如Volts=0x01Amperes=0x02)。
unitModifiersint8基础单位的10的幂次缩放因子(如-3表示10^-3即毫单位)。范围:-127 ~ 127
rateUnitenum8速率单位(如每秒、每分钟)。NonePer MicroSecondPer MilliSecondPer SecondPer MinutePer HourPer DayPer WeekPer MonthPer Year
baseOEMUnitHandleuint8若使用OEM单位,关联的OEM Unit PDR句柄。需与OEM Unit PDR的OEMUnitHandle一致。
auxUnitenum8辅助单位(可选,用于复合单位)。baseUnit
auxUnitModifiersint8辅助单位的10的幂次缩放因子。unitModifier
auxrateUnitenum8辅助速率单位(可选)。rateUnit
auxOEMUnitHandleuint8若辅助单位使用OEM定义,关联的OEM Unit PDR句柄。baseOEMUnitHandle
isLinearbool8执行器是否为线性(影响数据解析方式)。true(线性)
false(非线性/动态)
effecterDataSizeenum8执行器数据值的格式和位宽。uint8sint8uint16sint16uint32sint32
resolutionreal32分辨率(单位/原始值),用于原始值到单位的转换。公式:Unit = (Raw * resolution) + offset
offsetreal32偏移量,用于原始值到单位的转换。同上
accuracyuint16精度误差范围(±百分比,以0.01%为单位)。示例:510 → ±5.10%
字段名类型/格式描述枚举值/约束
plusToleranceuint8正向公差(以原始值计数的误差上限)。示例:0x02表示最大允许+2个计数误差。
minusToleranceuint8负向公差(以原始值计数的误差下限)。示例:0x01表示最小允许-1个计数误差。
stateTransitionIntervalreal32执行器状态切换的最长时间(秒),如启用/禁用操作。特殊值:NaN(未知时间)。
TransitionIntervalreal32执行器设置值生效的最长时间(秒)。特殊值:NaN(未知时间)。
maxSettable动态类型(见下文)执行器可接受的最大设置值(原始格式,需通过resolutionoffset转换为单位)。类型由effecterDataSize决定:uint8/sint8/uint16/sint16/uint32/sint32
minSettable动态类型(见下文)执行器可接受的最小设置值(原始格式)。同上
rangeFieldFormatenum8后续范围字段(如nominalValue)的数据格式。uint8sint8sint16uint32sint32real32(浮点数)
rangeFieldSupportbitfield8标识哪些范围字段有效(如nominalValuenormalMax等)。位定义:
[0]nominalValue有效
[1]normalMax有效
[2]normalMin有效
[3]ratedMax有效
[4]ratedMin有效
[5:7]: 保留
nominalValue动态类型(见下文)参数的标称值(理想值,可能与实际设置值不同)。类型由rangeFieldFormat决定,示例:real32=5.0表示5.0单位。
normalMax动态类型(见下文)正常操作范围的上限(超过此值视为异常)。同上
normalMin动态类型(见下文)正常操作范围的下限(低于此值视为异常)。同上
ratedMax动态类型(见下文)额定操作范围的上限(超过此值可能损坏设备)。同上
ratedMin动态类型(见下文)额定操作范围的下限(低于此值可能损坏设备)。同上

 十一、Numeric Effecter Initialization PDR 概述

用于配置PLDM数值型执行器的初始化参数(如初始值、启用状态及触发条件)。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (10), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
effecterIDuint16执行器在终结点内的唯一标识符(需与Numeric Effecter PDR的effecterID一致)。-
effecterEnableenum8初始化后执行器的操作状态(通过SetEffecterEnable命令设置)。标准值:
0x00~0x03(启用/禁用等)
特殊值:0xFF(不设置状态)
initConditionsbitfield8触发初始化的条件(位掩码)。位定义:
[0]: 初始化代理重启或更新时触发
[1]: PLDM子系统上电时触发
[2]: 系统硬复位时触发
[3]: 系统软复位时触发
[4]: PLDM终端上线时触发
[5:7]: 保留
effecterDataSizeenum8执行器数据值的格式和位宽。uint8sint8uint16sint16uint32sint32
effecterData动态类型(见下文)初始化时写入执行器的数值(原始格式,需通过resolutionoffset转换为单位)。类型由effecterDataSize决定,示例:sint16=2500表示原始值2500。

 十二、State Effecter PDR 概述

用于描述PLDM复合状态执行器(Composite State Effecter)的配置信息,包括关联实体、状态集支持及初始化策略。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (11), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
effecterIDuint16执行器在终结点内的唯一标识符。-
entityTypeuint16关联实体的类型(如风扇、电源等)。详见规范9.1节。
entityInstanceNumberuint16关联实体的实例编号。详见规范9.1节。
containerIDuint16包含该实体的容器ID(如机箱或子系统)。详见规范9.1节。
effecterSemanticIDuint16执行器语义ID(标准或OEM范围)。特殊值:0x0000(未指定)
**OEM范围:**需关联OEM Effecter Semantic PDR。
effecterInitenum8执行器初始化策略。noInit(无需初始化)
useInitPDR(使用State Effecter Initialization PDR)
enableEffecter(初始化时启用)
disableEffecter(初始化时禁用)
effecterDescriptionPDRbool8是否关联Effecter Description PDR(提供多语言描述)。true(关联)
false(不关联)
compositeEffecterCountuint8复合执行器中包含的独立状态执行器数量。范围:0x01 ~ 0x08(至少1个,最多8个)

State Effecter Possible States Fields(状态集支持字段)

每个复合执行器包含一个或多个状态集支持定义,格式如下:

字段名类型/格式描述示例/约束
stateSetIDuint16状态集ID(标准或OEM范围)。标准状态集参考DSP0249,OEM状态集需关联OEM State Set PDR。
possibleStatesSizeuint8后续possibleStates位字段的字节数。特殊值:0x00表示执行器不可用或禁用。
possibleStatesbitfield8 x M位掩码表示支持的状态值(每个位对应状态集中的状态值)。规则:
N=1表示支持状态值N,位N=0表示不支持。

十三、State Effecter Initialization PDR 概述 

用于配置PLDM状态执行器的初始化参数(如初始状态值、启用策略及触发条件),支持单个或复合状态执行器。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (12), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
effecterIDuint16执行器在终结点内的唯一标识符(需与State Effecter PDR的effecterID一致)。-
entityTypeuint16已弃用,应设为0。未来版本可能删除,需忽略。
entityInstanceNumberuint16已弃用,应设为0。同上
containerIDuint16已弃用,应设为0。同上
initConditionsbitfield8触发初始化的条件(位掩码)。位定义:
[0]: 初始化代理重启或更新时触发
[1]: PLDM子系统上电时触发
[2]: 系统硬复位时触发
[3]: 系统软复位时触发
[4]: PLDM终端上线时触发
[5:7]: 保留
effecterEnableenum8初始化后执行器的操作状态(通过SetStateEffecterEnables命令设置)。特殊值:0xFF(不设置状态)
标准值:0x00~0x03(启用/禁用等)
effecterInitMaskbitfield8标识复合执行器中哪些独立执行器需要初始化(每个位对应一个偏移量)。位定义:
[0]: 偏移量0的执行器需初始化
[1]: 偏移量1的执行器需初始化
...
[7]: 偏移量7的执行器需初始化
effecterOpStateEventEnableMaskbitfield8标识哪些执行器初始化后启用事件消息生成(如状态变更通知)。**位定义:**同effecterInitMask
stateValue0 ~ stateValue7uint8 x 8每个偏移量对应的初始状态值(0x00表示占位符,无需初始化)。规则:
仅当effecterInitMask对应位为1时,该值有效。

十四、Effecter Auxiliary Names PDR 概述

用于为PLDM执行器(单个或复合)提供多语言辅助名称信息,支持不同语言环境下的名称展示。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (13), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识所属PLDM终结点的PDR集合。-
effecterIDuint16执行器在终结点内的唯一标识符(需与Numeric/State Effecter PDR的effecterID一致)。-
effecterCountuint8复合执行器中包含的独立执行器数量(从1开始顺序填充)。范围:1 ~ M(最大由复合执行器定义决定)

每个执行器的名称信息

每个独立执行器对应一组名称描述字段:

字段名类型/格式描述示例/约束
nameStringCountuint8当前执行器的多语言名称对数量(0表示无名称)。范围:0 ~ N(每组包含nameLanguageTag + effecterName)。
nameLanguageTagstrASCII (null终止)语言标签(符合RFC4646标准),标识名称的语种。示例:"en"(英语)、"zh-cmn-Hans"(简体中文)
**特殊值:**空字符串(未指定)。
effecterNamestrUTF-16BE (null终止)执行器的本地化名称(Unicode编码)。

示例:"风扇转速"(UTF-16BE)
**特殊值:**空字符串(未提供名称)。

 十五、OEM Effecter Semantic PDR 概述

用于定义OEM厂商自定义的效果器语义(如特定功能或状态描述),支持多语言名称和厂商唯一标识。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (14), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识发起此PDR的终结点(用于追踪来源)。-
OEMEffecterSemanticHandleuint8厂商定义的唯一句柄,用于其他PDR引用该语义(如State Effecter PDR中的effecterSemanticID)。唯一性要求:同一PDR库中不可重复。
vendorIANAuint32厂商的IANA企业编号(全球唯一标识)。IANA注册编号,如IBM=0x0000012D
OEMEffecterSemanticIDuint8厂商内部定义的语义ID(用于搜索或标识特定语义)。组合唯一性vendorIANA + OEMEffecterSemanticID 唯一标识一个语义定义。
stringCountuint8后续多语言名称对的数量(0表示无名称)。范围:0 ~ N(每组包含languageTag + name)。
languageTagstrASCII (null终止)语言标签(符合RFC4646标准),标识名称的语种。示例:"en"(英语)、"ja"(日语)
**特殊值:**空字符串(未指定)。
namestrUTF-16BE (null终止)语义的本地化名称(Unicode编码)。示例:"自定义风扇模式"(UTF-16BE)
**特殊值:**空字符串(未提供名称)。

十六、 Entity Association PDR 概述

用于定义实体间的关联关系(如物理或逻辑包含关系),构建实体层次结构。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (15), recordChangeNumberdataLength-
containerIDuint16标识容器实体的唯一ID,用于层级管理。范围:0x0001 ~ 0xFFFF
特殊值:0x0000(表示顶层“SYSTEM”容器)
associationTypeenum8关联类型(物理或逻辑包含)。physicalToPhysicalContainment(物理包含)
logicalContainment(逻辑包含)

容器实体标识信息

字段名类型/格式描述约束
containerEntityTypeuint16容器实体的类型(如机箱、主板等)。详见规范9.1节实体类型定义。
containerEntityInstanceNumberuint16容器实体的实例编号(顶层实体需设为1)。**顶层PDR规则:**必须为1。
containerEntityContainerIDuint16容器实体的父容器ID(用于嵌套结构)。**顶层规则:**通常设为0x0000(SYSTEM)。

被包含实体信息

字段名类型/格式描述约束
containedEntityCountuint8当前PDR中描述的被包含实体数量(允许分多个PDR描述同一容器的实体)。范围:1 ~ N
containedEntityType[1..N]uint16 x N被包含实体的类型(如风扇、电源等)。详见规范9.1节实体类型定义。
containedEntityInstanceNumber[1..N]uint16 x N被包含实体的实例编号。-
containedEntityContainerID[1..N]uint16 x N被包含实体的父容器ID(通常与当前容器的containerID一致)。**规则:**必须等于当前PDR的containerID

十七、 Entity Auxiliary Names PDR 概述

用于为PLDM实体实例(单个或范围)提供多语言辅助名称,支持实体在不同语言环境下的标识。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (16), recordChangeNumberdataLength-
entityTypeuint16实体类型(如风扇、电源等)。详见规范9.1节实体类型定义。
entityInstanceNumberuint16实体实例的起始编号(用于范围命名)。-
entityContainerIDuint16实体所属容器的ID(同一容器内的实体可共享名称)。特殊值:0x0000(顶层容器)。
sharedNameCountuint8共享此名称的实体实例数量(从entityInstanceNumber开始连续编号)。规则:
0:仅当前实例有效。
1~N:覆盖当前实例及后续N个实例。

实体辅助名称信息

字段名类型/格式描述示例/约束
nameStringCountuint8当前实体的多语言名称对数量(0表示无名称)。范围:0 ~ N(每组包含nameLanguageTag + entityAuxName)。
nameLanguageTagstrASCII (null终止)语言标签(符合RFC4646标准),标识名称的语种。示例:"en"(英语)、"es"(西班牙语)
**特殊值:**空字符串(未指定)。
entityAuxNamestrUTF-16BE (null终止)实体的本地化名称(Unicode编码)。示例:"机箱风扇"(UTF-16BE)
**特殊值:**空字符串(未提供名称)。

十八、 Entity Auxiliary Names PDR 概述

用于为PLDM实体实例(单个或范围)提供多语言辅助名称,支持实体在不同语言环境下的标识。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (16), recordChangeNumberdataLength-
entityTypeuint16实体类型(如风扇、电源等)。详见规范9.1节实体类型定义。
entityInstanceNumberuint16实体实例的起始编号(用于范围命名)。范围:0x0000 ~ 0xFFFF
entityContainerIDuint16实体所属容器的ID(同一容器内的实体可共享名称)。特殊值:0x0000(顶层容器)。
sharedNameCountuint8共享此名称的实体实例数量(从entityInstanceNumber开始连续编号)。规则:
0:仅当前实例有效。
1~N:覆盖当前实例及后续N个实例。

实体辅助名称信息

每个实体实例对应一组名称描述字段:

字段名类型/格式描述示例/约束
nameStringCountuint8当前实体的多语言名称对数量(0表示无名称)。范围:0 ~ N(每组包含nameLanguageTag + entityAuxName)。
nameLanguageTagstrASCII (null终止)语言标签(符合RFC4646标准),标识名称的语种。示例:"en"(英语)、"es"(西班牙语)
**特殊值:**空字符串(未指定)。
entityAuxNamestrUTF-16BE (null终止)实体的本地化名称(Unicode编码)。示例:"机箱风扇"(UTF-16BE)
**特殊值:**空字符串(未提供名称)。

十九、Interrupt Association PDR 概述 

用于建立中断源实体与中断目标实体之间的关联关系,描述中断监控传感器与实体的对应关系。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述枚举值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (17), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识提供中断访问的终结点(通常为监控传感器的来源终结点)。-
sensorIDuint16监控此中断的传感器ID(在源或目标端生效)。引用关系:需与Numeric/State Sensor PDR中的sensorID一致。
sourceOrTargetSensorenum8指示传感器是监控中断源(Source)还是目标(Target)。targetSensor(目标端传感器)
sourceSensor(源端传感器)

目标实体标识信息

字段名类型/格式描述约束
interruptTargetEntityTypeuint16目标实体的类型(如PCIe设备、处理器等)。详见规范9.1节实体类型定义。
interruptTargetEntityInstanceNumberuint16目标实体的实例编号。-
interruptTargetEntityContainerIDuint16目标实体所属容器的ID。特殊值:0x0000(顶层容器)。

源实体标识信息

字段名类型/格式描述约束
interruptSourceEntityCountuint8当前PDR中描述的中断源实体数量(允许分多个PDR描述同一目标的多个源)。范围:1 ~ N
interruptSourcePLDMTerminusHandle[1..N]uint32 x N中断源实体所属终结点的句柄。-
interruptSourceEntityType[1..N]uint16 x N中断源实体的类型(如GPIO控制器、外设等)。详见规范9.1节实体类型定义。
interruptSourceEntityInstanceNumber[1..N]uint16 x N中断源实体的实例编号。-
interruptSourceEntityContainerID[1..N]uint16 x N中断源实体所属容器的ID。特殊值:0x0000(顶层容器)。
interruptSourceSensorID[1..N]uint16 x N监控中断源实体的传感器ID。引用关系:需与Numeric/State Sensor PDR中的sensorID一致。

二十、 Event Log PDR 概述

用于描述PLDM事件日志的存储特性与策略,每个主PDR库仅允许存在一个Event Log PDR。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述特殊值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (18), recordChangeNumberdataLength-
logSizeuint32日志存储区总大小(字节,不包括固定开销)。特殊值:
0x00000000(未指定)
0xFFFFFFFF(≥4 GB-1字节)
supportedLogClearingPoliciesbitfield8支持的日志清除策略(位域)。位定义:
[2]clearOnAge(基于时间清除)
[1]FIFO(先进先出)
[0]fillAndStop(填满停止)
entryIDTimeoutuint8部分传输中entryID的最小有效时间(秒)。特殊值:
0x00(无超时)
0x01(默认超时)
0xFF(>254秒)
perEntryOverheaduint8每个日志条目的存储开销(字节,可能隐藏)。特殊值:0xFF(未指定)
allocationGranularityuint8存储空间分配粒度(字节对齐单位)。示例:16(按16字节对齐)
特殊值:0xFF(未指定)
percentUsedResolutionuint8存储使用百分比的分辨率(1~100,其他值保留)。规则:
0x01(1%精度)→ storagePercentUsed=0x01表示1%~2%已用。

  1. 日志清除策略

    • fillAndStop(填满停止):日志满后停止记录新条目。
    • FIFO(先进先出):日志满后覆盖最旧条目。
    • clearOnAge(基于时间清除):根据条目时间戳自动清除旧条目。
  2. 存储计算规则

    • 总存储空间logSize仅包含日志条目数据,可能不包含固定开销。
    • 条目开销:若perEntryOverhead=2且条目大小为10字节,则实际占用10+2=12字节(若未隐藏开销)。
    • 分配粒度:若allocationGranularity=16,则24字节条目占用32字节空间(16字节对齐)。
  3. 超时与传输管理

    • entryIDTimeout:用于部分传输场景(如大条目分片传输),超时后需重新获取完整条目。
    • 默认超时:若entryIDTimeout=0x01,超时时间与PDR Handle Timeout(规范28.25节)一致。
  4. 存储使用监控

    • percentUsedResolution:定义GetPLDMEventLogInfo返回的storagePercentUsed精度。
      • 例如,percentUsedResolution=5时,storagePercentUsed=1表示5%~10%已用。

二十一、FRU Record Set PDR 概述

用于描述与PLDM实体关联的FRU(现场可更换单元)记录集数据特性,支持通过DSP0257规范定义的命令访问FRU数据。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述约束/引用
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (19), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识管理此PDR的终结点(FRU数据来源终结点)。规则:需与终结点注册信息一致。
FRURecordSetIdentifieruint16终结点内唯一的FRU记录集标识符(用于访问FRU数据)。范围0x0001 ~ 0xFFFF(每个终结点独立分配)。
entityTypeuint16关联FRU数据的实体类型(如机箱、电源等)。详见规范9.1节实体类型定义。
entityInstanceNumberuint16关联实体的实例编号。约束:需与Entity Association PDR中的实例一致。
containerIDuint16关联实体所属容器的ID。特殊值0x0000(顶层容器)。

二十二、 OEM Device PDR 概述

用于存储厂商自定义数据,支持设备或终结点级厂商扩展。每个PDR的厂商数据最大为64 KB,且必须包含至少1字节的VendorSpecificData。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述特殊值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (20), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识来源终结点句柄(设备PDR库中可置为0x0000表示未指定)。特殊值:0x0000(未指定,由Discovery Agent在合并到主库时赋值)。
copyPDRenum8定义是否复制到主PDR库。doNotCopy(不复制)
copyToPrimaryRepository(复制并覆盖同名PDR)。
vendorIANAuint32IANA企业号(标识厂商的唯一编号)。特殊值:0(未指定厂商)。
OEMRecordIDuint16厂商自定义记录ID(同一终结点内vendorIANA相同的PDR中唯一)。**规则:**用于FindPDR命令的搜索字段。
dataLengthuint16厂商数据实际字节数(N = dataLength + 1)。示例:dataLength=0 → 数据1字节。
vendorSpecificData[0..N]byte[N+1]厂商自定义数据(二进制或结构化数据)。**约束:**数据长度≤64 KB,且至少1字节。

二十三、OEM PDR 概述

用于存储厂商自定义数据,提供轻量化扩展能力,无需关联终结点或复制到主PDR库。其格式包含公共头部和以下特有字段,厂商数据最大为64 KB,且必须包含至少1字节的VendorSpecificData


字段定义

字段名类型/格式描述特殊值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (21), recordChangeNumberdataLength-
vendorIANAuint32IANA企业号(标识厂商的唯一编号)。特殊值:0(未指定厂商)。
OEMRecordIDuint16厂商自定义记录ID(同一PDR库内vendorIANA相同的PDR中唯一)。**规则:**用于FindPDR命令的搜索字段。
dataLengthuint16厂商数据实际字节数(N = dataLength + 1)。示例:dataLength=0 → 数据1字节。
vendorSpecificData[1..N+1]byte[N+1]厂商自定义数据(二进制或结构化数据)。**约束:**数据长度≤64 KB,且至少1字节。

  1. 与OEM Device PDR的区别

    • OEM PDR:轻量化设计,不关联终结点(无PLDMTerminusHandle字段),不支持复制到主库(无copyPDR字段)。
    • OEM Device PDR:扩展版本,支持终结点关联和主库复制(需额外字段)。
  2. 数据长度计算

    • dataLength字段表示数据字节数减1。例如,dataLength=5表示实际数据为6字节。
    • 最大限制dataLength+1 ≤ 65535 → 实际数据最大65536字节(64 KB)。
  3. 唯一性规则

    • 同一PDR库内,vendorIANAOEMRecordID组合必须唯一。
    • 跨库允许重复:不同PDR库(如设备库与主库)可存在相同vendorIANAOEMRecordID的PDR。
  4. 应用场景

    • 存储静态厂商配置(如设备固件签名、兼容性标识)。
    • 扩展非终结点相关的自定义元数据(如日志格式定义、私有协议参数)

二十四、 Compact Numeric Sensor PDR 概述

专为无需数据转换的简单数值型传感器设计(如温度、计数器),直接报告规范化整数值。其格式包含公共头部和以下特有字段:

字段定义

字段名类型/格式描述枚举/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (22), recordChangeNumberdataLength-
PLDMTerminusHandleuint16标识传感器所属终结点(PLDM设备)。-
sensorIDuint16终结点内唯一的传感器ID。引用关系:需与传感器操作命令(如GetSensorReading)一致。
entityTypeuint16关联实体的类型(如处理器、电源等)。详见规范9.1节实体类型定义。
entityInstanceNumberuint16关联实体的实例编号。-
containerIDuint16关联实体所属容器的ID。特殊值:0x0000(顶层容器)。
sensorNameStringByteLengthuint8传感器名称的UTF-8字符串长度(若>0则名称字段存在)。**建议最大长度:**96字节。
baseUnitenum8传感器数值的基本单位(如摄氏度、伏特)。详见规范27.4节(表74)单位定义。
unitModifiersint8基本单位的幂次修正(如3表示10^3 → 单位变为毫秒、千欧等)。示例:baseUnit=°C + unitModifier=3 → 单位为毫摄氏度(m°C)。
occurrenceRateenum8数据采集频率(单位时间内的采样次数)。枚举值:
0(无频率)
3(每秒)
5(每小时)等。
rangeFieldSupportbitfield8支持的阈值字段(位域表示)。位定义:
[0]warningHigh
[1]warningLow
[5]fatalLow等。
warningHighsint32警告上限阈值(超过此值触发警告)。**约束:**仅当rangeFieldSupport[0]=1时有效。
warningLowsint32警告下限阈值(低于或等于此值触发警告)。**约束:**仅当rangeFieldSupport[1]=1时有效。
criticalHighsint32严重上限阈值(超过或等于此值触发严重告警)。**约束:**仅当rangeFieldSupport[2]=1时有效。
criticalLowsint32严重下限阈值(低于此值触发严重告警)。**约束:**仅当rangeFieldSupport[3]=1时有效。
fatalHighsint32致命上限阈值(超过此值触发致命告警)。**约束:**仅当rangeFieldSupport[4]=1时有效。
fatalLowsint32致命下限阈值(低于此值触发致命告警)。**约束:**仅当rangeFieldSupport[5]=1时有效。
sensorNameStringstrUTF-8传感器名称(仅当sensorNameStringByteLength>0时存在)。**用途:**显示名称,非唯一标识符。
  1. 与标准Numeric Sensor PDR的区别

    • Compact版:仅支持整数值,无数据转换公式,适用于简单场景。
    • 标准版:支持浮点数、线性化公式(如y = mx + b),适用于复杂传感器。

 二十五、Redfish Resource PDR 概述

用于描述Redfish资源的层次结构、路径及模式信息,支持Redfish设备在PLDM架构中的集成管理。其格式包含公共头部和以下特有字段:

字段定义

字段名类型/格式描述特殊值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (23), recordChangeNumberdataLength-
ResourceIDuint32主资源唯一标识符(同一设备内所有Redfish Resource PDR的ResourceID必须唯一)。范围:0x00000001 ~ 0xFFFFFFFE
ResourceFlagsbitfield8资源标志位。位定义:
[2]is_collection(资源是集合)
[1]is_contained_in_collection(父资源是集合)
[0]is_device_root(设备逻辑根)。
ContainingResourceIDuint32父资源ID(资源层次结构中的容器)。特殊值:
0x00000000(EXTERNAL,逻辑根)
0xFFFFFFFF(DSP0218保留)。
ProposedContainingResourceLengthBytesuint16建议父资源名称的长度(字节,仅当ContainingResourceID=EXTERNAL时有效)。**约束:**若ContainingResourceID≠EXTERNAL,此字段必须为1。
ProposedContainingResourceNamestrUTF-8建议父资源的名称(格式为Namespace.EntityType,如StorageCollection.StorageCollection)。**约束:**若ContainingResourceID≠EXTERNAL,此字段为null字节。
SubURILengthBytesuint16主资源SubURI路径片段的长度(包含终止符)。**示例:**若SubURI为NetworkPorts,长度=13(含终止符)。
SubURIstrUTF-8主资源的路径片段(从父资源路径到当前资源路径的差值)。规则:
不包含首尾斜杠(/),除非为Settings资源(允许首斜杠)。
ContainingResourceID=EXTERNAL,为null字节。
AdditionalResourceIDCountuint16附加资源实例的数量(共享相同模式数据)。示例:NA=2表示有两个附加资源实例。
AdditionalResourceID[0..NA-1]uint32附加资源ID(同一设备内唯一)。**规则:**所有附加资源ID必须唯一。
AdditionalResourceSubURILengthBytes[0..NA-1]uint16附加资源SubURI路径片段的长度(包含终止符)。-
AdditionalResourceSubURI[0..NA-1]strUTF-8附加资源的路径片段(规则同主资源SubURI)。-
MajorSchemaVersionver32主模式版本(标准PLDM版本格式)。特殊值:0xFFFFFFFF(未版本化模式)。
MajorSchemaDictionaryLengthBytesuint16主模式字典数据长度。-
MajorSchemaDictionarySignatureuint32主模式字典的32位CRC签名(使用IEEE 802.3 CRC-32算法)。**算法:**多项式 0xEDB88320,LSB优先处理。
MajorSchemaNameLengthuint8主模式名称长度(包含终止符)。-
MajorSchemaNamestrUTF-8主模式名称(如Storage.v1_0_0)。-
OEMCountuint16关联的OEM厂商数量。-
OEMNameLengthBytes[0..NO-1]uint16各OEM厂商名称的长度(包含终止符)。-
OEMName[0..NO-1]strUTF-8OEM厂商名称(如VendorX)。-
  1. 路径构造规则

    • SubURI:从父资源路径(PP)到当前资源路径(PR)的差值。
      • 示例:若PP为/Chassis/1/NetworkAdapters/1,PR为/Chassis/1/NetworkAdapters/1/NetworkPorts,则SubURI=NetworkPorts
    • Settings资源:SubURI格式为/settings(仅当ContainingResourceID=EXTERNAL时允许首斜杠)。
  2. 层次结构管理

    • 根资源is_device_root=1ContainingResourceID=EXTERNAL表示设备逻辑根。
    • 集合资源is_collection=1表示此资源包含多个子资源(如ProcessorCollection)。
  3. 签名与版本控制

    • CRC-32签名:用于验证主模式字典数据的完整性。
    • 模式版本:遵循PLDM版本格式(如0x01020003表示版本1.2.3)。
  4. OEM扩展支持

    • 允许关联多个OEM厂商名称,用于标识资源的自定义扩展来源。

 二十六、Redfish Entity Association PDR 概述

用于定义Redfish资源的层次化拓扑关系,描述实体间的父子关联,支持设备组件在PLDM架构中的逻辑管理。其格式包含公共头部和以下特有字段:

字段定义

字段名类型/格式描述特殊值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (24), recordChangeNumberdataLength-
ContainingResourceIDuint32父资源ID(定义当前容器资源的逻辑归属)。特殊值:
0x00000000(EXTERNAL,表示顶层容器)
0xFFFFFFFF(DSP0218保留)。
ProposedContainingResourceLengthBytesuint16建议父资源名称的长度(字节,仅当ContainingResourceID=EXTERNAL时有效)。**约束:**若ContainingResourceID≠EXTERNAL,此字段必须为1。
ProposedContainingResourceNamestrUTF-8建议父资源名称(格式为Namespace.EntityType,如ChassisCollection.ChassisCollection)。**约束:**若ContainingResourceID≠EXTERNAL,此字段为null字节。
ContainedEntityCountuint8当前容器资源包含的子实体数量(即ContainedEntityResourceID数组长度)。示例:NC=3表示包含3个子资源。
ContainedEntityResourceID[0..NC-1]uint32子资源ID(必须是同一设备Redfish Resource PDR中已定义的资源ID)。**规则:**所有子资源ID在同一设备内唯一。
  1. 层次结构构建

    • 父资源:通过ContainingResourceID指向父资源(若为EXTERNAL表示无父资源)。
    • 子资源:通过ContainedEntityResourceID列表绑定子资源,形成树状拓扑。
  2. 资源命名建议

    • ProposedContainingResourceName:仅当容器为EXTERNAL时生效,管理控制器(MC)可决定是否接受此命名建议。
    • 格式要求:遵循Redfish标准命名规则(如Namespace.EntityType)。
  3. 与Redfish Resource PDR的关系

    • Redfish Resource PDR:定义资源本身的模式、路径及属性。
    • Redfish Entity Association PDR:定义资源间的父子关系,共同构建完整的Redfish资源树。
  4. 唯一性规则

    • 所有ContainedEntityResourceID必须指向同一设备内存在的Redfish Resource PDR中的有效ResourceID
    • 同一容器资源(ContainingResourceID)下,子资源ID不可重复。

 二十七、Redfish Action PDR 概述

用于描述Redfish资源支持的操作(Action),如“重启”、“关机”等,支持动态调用。其格式包含公共头部和以下特有字段:


字段定义

字段名类型/格式描述特殊值/约束
commonHeader公共头部(见28.1)包含 recordHandlePDRHeaderVersion (0x01), PDRType (25), recordChangeNumberdataLength-
ActionPDRIndexuint8当前PDR的零基索引(同一资源关联的多个Action PDR时用于排序)。示例:0表示首个Action PDR,1表示第二个。
RelatedResourceCountuint16关联的Redfish资源数量(即RelatedResourceID数组长度)。**规则:**若关联资源过多导致PDR超限,需拆分为多个PDR。
RelatedResourceID[0..NR-1]uint32关联的Redfish Resource PDR的ID(指向定义该Action的资源)。范围:0x00000001 ~ 0xFFFFFFFE(禁止使用0x000000000xFFFFFFFF)。
ActionCountuint8当前PDR定义的操作数量(即ActionNameActionPath数组长度)。**规则:**若操作过多导致PDR超限,需拆分为多个PDR(优先按资源拆分)。
ActionNameLengthBytes[0..NA-1]uint8各操作名称的UTF-8字符串长度(包含终止符)。**示例:**名称"Reset"的长度为6(含\0)。
ActionName[0..NA-1]strUTF-8操作名称(不包含资源类型前缀,如Reset)。**规则:**与Redfish规范(DSP0266)定义的Action名称一致。
ActionPathLengthBytes[0..NA-1]uint8各操作路径的UTF-8字符串长度(包含终止符)。**示例:**路径"Actions/ComputerSystem.Reset"的长度为27(含\0)。
ActionPath[0..NA-1]strUTF-8操作在资源模式中的路径(如Actions/<QualifiedActionName>)。**格式:**非OEM操作路径遵循Actions/ResourceType.ActionName(如Actions/ComputerSystem.Reset)。

关键说明

  1. 操作路径规则

    • 标准操作:路径格式为Actions/<ResourceType>.<ActionName>(如Actions/ComputerSystem.Reset)。
    • OEM操作:路径可自定义,但需符合厂商命名规则(如Actions/Oem/VendorX.UpdateFirmware)。
  2. 拆分规则

    • 按资源拆分:当关联资源过多时,优先按RelatedResourceID拆分为多个PDR。
    • 按操作拆分:仅当单资源操作过多时,按ActionCount拆分。
  3. 索引与排序

    • ActionPDRIndex用于同一资源关联的多个Action PDR的顺序管理(如资源支持10个操作,需拆分为两个PDR时,索引分别为01)。
  4. 与Redfish Resource PDR的关联

    • RelatedResourceID必须指向有效的Redfish Resource PDR的ResourceID
    • 同一资源的所有Action PDR需通过RelatedResourceIDActionPDRIndex组合唯一标识。
;