CSR 配置规则
更新时间: 2026/08/20
在AtomGit上查看源码

CSR 配置规则

文档说明

本文用于说明 CSR 文件在文件格式、版本、管理拓扑、对象与属性、数据关系、自定义表达式、一致性以及专用对象配置等方面应满足的规则,面向需要进行 CSR 配置和检视的开发者。

1. 概述

CSR 配置规则主要覆盖以下内容:

  • 文件格式与版本字段;
  • ManagementTopology 管理拓扑;
  • Objects 对象与属性;
  • @Default@Parent
  • 引用语法、同步语法与变量语法;
  • 管道、expr、string 函数等自定义语法;
  • refInterface、Readonly 及循环依赖等一致性要求;
  • Scanner、Accessor、Connector、Chip、Bus、Debounce、SmcDfxInfo 等专用对象;
  • Event、Sensor、Entity、PCIeDevice、Component 等业务对象。

配置检查应优先关注字段是否存在、类型和取值是否合法、对象是否有效、引用关系是否成立,以及多个配置之间是否满足一致性要求。

2. CSR 基础配置规则

2.1 文件格式

CSR 定义文件必须为合法 JSON 文件。JSON 格式错误时,CSR 文件无法正常加载。

2.2 FormatVersion

FormatVersion 为必填的非空字符串,格式为:

text
A.BC

其中:

  • A 为大版本号,取值范围 1~255;
  • BC 为小版本号,取值范围 01~99;
  • 小版本固定两位,不足两位时补 0。

2.3 DataVersion

DataVersion 为必填的非空字符串,同样采用 A.BC 格式:

  • A 取值 1~255;
  • BC 取值 01~99;
  • BC 固定为两位。

2.4 ManagementTopology 整体约束

platform.srxxx_soft.sr 外,CSR 文件必须存在 ManagementTopology

ManagementTopology 必须为对象类型,并满足:

  • 必须包含 Anchor
  • 可以包含 Bus、Chip 和 Connector 相关拓扑定义;
  • 不允许出现其它类型的拓扑对象。

Anchor 必须为对象类型,并包含 BusesBuses 为字符串数组。

规则描述中 Buses 可包含 0 到多个元素,同时检查项包含“Anchor 下应至少包含一个 Bus 对象”的要求。涉及空 Buses 的场景时,应结合实际检查结果确认。

3. ManagementTopology 管理拓扑规则

3.1 Anchor

传入 Anchor 的 Bus 对象名称必须采用:

text
Type_Name

其中:

  • Type 必须为有效 Bus 类型;
  • Name 不能为空。

有效 Bus 类型包括:

text
Jtag
JtagOverGpio
JtagOverLocalBus
Gpio
Hisport
I2c
Adc
Can
LocalBus
I3cOverLocalBus
I2cOverHisport
SPIOverHisport
JtagOverHisport
JtagMux
I2cMux

传入 Anchor 的 Bus 还应满足有效性要求:其下至少配置一个 Chip 或 Connector,或者继续传入下一级 Connector。否则应检查是否属于冗余配置。

3.2 Bus

ManagementTopology 中的 Bus 必须具有合法来源。

允许的来源包括:

  • Anchor;
  • Pca9544;
  • Pca9545;
  • Pca9548;
  • Chip;
  • Smc;
  • JtagSwitch。

不同类型 Bus 的挂载关系应满足:

text
I2cMux  → Pca9544 / Pca9545 / Pca9548 / Chip / Smc
JtagMux → JtagSwitch
其它 Bus → Anchor

Bus 下只允许配置 ChipsConnectors

  • Chips 只能包含有效 Chip 对象名称或为空;
  • Connectors 只能包含 Connector 对象名称或为空;
  • 同一 Bus 下不允许存在地址相同的 Chip;
  • 同一个 I2cMux 或 JtagMux 不能同时挂在两个 Chip 下。

CSR 中定义的 Bus 对象必须实际出现在拓扑配置中。

3.3 Chip

出现在拓扑中的 Chip 必须:

  1. 挂在某条 Bus 下;
  2. Objects 中存在定义。

有效 Chip 类型包括:

text
Chip
Eeprom
Lm75
Pca9544
Pca9545
Pca9548
Smc
Pca9555
Cpld
JtagSwitch
CanbusChip
Vrd
Ads78
CpldRegister

允许继续配置下级 Bus 的 Chip 包括 Pca9544、Pca9545、Pca9548、Chip、Smc、JtagSwitch。其中:

  • Pca9544、Pca9545、Pca9548、Chip、Smc 可挂 I2cMux;
  • JtagSwitch 可挂 JtagMux;
  • 下级 Bus 需要存在相应对象定义。

同一个 Chip:

  • 在同一 Bus 下最多出现一次;
  • 不能同时出现在两个 Bus 的拓扑中。

除 Pca9544、Pca9545、Pca9548、JtagSwitch 外,其它 Chip 还应至少满足以下一项:

  • 配置 Accessor;
  • 配置 Scanner;
  • 被其它对象使用。

3.4 Connector

拓扑中的 Connector 必须:

  • 挂在某条 Bus 下;
  • Objects 中存在定义;
  • 不能直接在 ManagementTopology 下继续展开拓扑;
  • 不能同时挂在两个 Bus 下。

4. Objects 对象与属性规则

4.1 对象唯一性与命名

同一个 Objects 中不允许存在重名对象。

对象名称采用:

text
Type_Name

其中:

  • Type 为类名,必须在对应 APP 组件的 MDS 中存在定义;
  • Name 不能为空;
  • 对象名称中除下划线外不能出现其它符号。

4.2 属性有效性

@Default@Parent 外,对象下配置的属性必须已经定义在:

  • 对象对应类管理的资源树属性中;或
  • 对象对应类的 MDS 私有属性中。

同时,该属性的 usage 必须包含 CSR

4.3 属性类型

CSR 属性值类型必须与对应资源树属性或 MDS 私有属性类型一致。

如果属性配置了引用或同步关系,则当前属性与被引用或同步属性的类型定义也需要一致。类型检查允许类型提升。

4.4 属性取值范围

属性配置值必须处于对应模型定义的允许范围内。

如果属性引用或同步其它属性,则当前属性定义的取值范围需要覆盖被引用或同步属性的取值范围。

4.5 Default 配置

@Default 只允许为以下属性配置同名默认值:

  • 配置了 <=/ 同步的属性;
  • 表达式中包含 <=/ 同步的属性。

默认值必须:

  • 与属性定义类型一致;
  • 满足属性取值范围;
  • 为常量。

@Default 中不得配置引用语法、变量语法或同步语法。

4.6 Parent 配置

对象配置 @Parent 时:

  • 父对象必须已经在当前 Objects 中定义;
  • 当前对象对应类与父对象对应类在 MDS 中必须存在相应 Parent 关系。

5. 数据关系与自定义语法规则

本章术语统一采用以下口径:

  • #/:静态引用;
  • <=/:同步语法;
  • ${}:变量语法,用于变量替换;
  • expr|>、string 函数:自定义表达式相关语法。

本章仅保留与配置合法性直接相关的语法约束。

5.1 变量语法

变量语法格式为:

text
${ctx}

${} 用于变量替换,${} 为固定语法,前后允许拼接字符串。

允许使用的 ctx 包括:

text
FormatVersion
DataVersion
Slot
SystemId
ManagerId
Container
GroupId
ChassisId
GroupPosition
SilkText

常见非法形式包括:

text
${abc
${{abc}
${abc}
${abc}}

5.2 静态引用

静态引用使用 #/ 语法,可以引用对象,也可以引用对象属性:

text
#/obj
#/obj.p

约束如下:

  • obj 必须在 Objects 中定义;
  • #/obj 引用整个对象时,不能引用当前对象自身;
  • #/obj.p 引用属性时,可以引用当前对象自身的其它属性;
  • 引用其它对象属性时,p 必须属于被引用对象对应类所管理资源树对象实现接口中的属性;
  • 引用当前对象自身属性时,p 还可以是当前类的 MDS 私有属性。

典型非法形式包括:

text
##/abc
#//abc

5.3 refInterface 一致性

MDS 私有属性配置了 refInterface 时,该属性在 CSR 中应:

  • 配置为对其它对象的 #/ 引用;或
  • 不配置该属性。

被引用对象对应类需要管理实现了 refInterface 所关联接口的资源树对象。

反向约束:

  • CSR 属性使用 #/ 引用对象时,该属性应定义为 MDS 私有属性;
  • 应配置正确的 refInterface
  • 如果引用对象和被引用对象对应的类由同一个组件管理,则无需配置 refInterface

5.4 同步语法

同步语法格式为:

text
<=/obj.p

约束如下:

  • obj 必须在 Objects 中定义;
  • 只能同步对象属性,不能只同步对象;
  • obj 不能是当前属性所在对象自身;
  • p 必须属于被同步对象对应类所管理资源树对象实现接口中的属性;
  • 不允许同步被同步对象对应类的 MDS 私有属性。

典型非法形式包括:

text
<<=/abc
<==/abc
<=//abc
<=abc
=/abc
</abc

5.5 管道与自定义语法

自定义语法可以由静态引用、变量语法、同步语法、expr 和 Lua string 库函数组成,通过 |> 连接。

管道需要满足:

  • 只有第一级管道允许多个入参;
  • 多个入参使用 ; 分隔;
  • 管道中使用 $index 引用参数;
  • index 从 1 开始,且不能大于第一级实际入参数量;
  • 第一级管道前不能使用 $index
  • 后续管道前只能有一个入参;
  • 配置的管道入参应全部被使用。

同一条自定义语法中不允许同时存在静态引用和同步语法。

5.6 expr 与三元运算

expr 固定格式为:

text
expr(...)

要求:

  • 左右括号数量匹配;
  • 不允许使用中文全角括号。

三元运算参数必须匹配,不允许使用:

text
? false : true

形式,可根据业务语义使用 ? 0 : 1 等形式替代。

5.7 string 函数

string 函数格式为:

text
string.xxx(...)

支持:

text
upper
lower
gsub
sub
format
cmp

括号数量必须匹配。

string.format 还必须满足:

  • 至少两个参数;
  • 第一个参数为字符串;
  • 格式字符串中的 % 数量与后续参数数量一致;
  • 第二个及后续参数使用 $n 格式。

5.8 Accessor 与 Scanner 使用方向

Accessor 只允许通过 #/ 引用,不允许使用 <=/ 同步。

Scanner 不允许通过 #/ 引用,需要关联 Scanner 数据时应使用 <=/ 同步。

5.9 Readonly 一致性

CSR 属性如果配置为同步语法或自定义语法,则对应资源树属性需要定义为只读属性。

5.10 循环依赖

对象属性之间不允许形成 #/ 引用或 <=/ 同步的循环依赖。

包括:

text
A.x → B.y
B.y → A.x

以及多个属性之间形成的 #/ 引用闭环。

包含同步语法的循环依赖还可能产生事件风暴。

6. 专用对象配置规则

6.1 Scanner

一般情况下 Scanner 字段要求如下:

字段要求
Chip必填。
Size必填。
Type必填,取 0 或 1。
MaskType=0 时必填。
OffsetAggregateOffset 至少配置一个。
AggregateOffsetOffset 至少配置一个,取值 0~1023。
Debounce可选。

Chip 必须引用 Objects 中已定义的有效 Chip,不包含 Pca9544、Pca9545、Pca9548 和 JtagSwitch。

允许引用的 Chip 类型包括:

text
Chip
Eeprom
Lm75
Smc
Pca9555
Cpld
CanbusChip
Vrd
Ads78
CpldRegister

Debounce 可以引用 MidAvg、Median、Cont、ContBin,也可以配置常量字符串 None

Gpio 总线下 Chip 关联的 Scanner 只要求配置 Chip

Scanner 必须至少被其它一个对象使用。

6.2 Accessor

一般情况下 Accessor 字段要求如下:

字段要求
Chip必填。
Size必填。
Type必填,取 0 或 1。
MaskType=0 时必填。
Offset必填。

Chip 的合法类型要求与 Scanner 一致。

Gpio 总线下 Chip 关联的 Accessor 只要求配置 Chip

Accessor 必须至少被其它一个对象使用。

6.3 Connector

Connector 字段要求如下:

字段要求
Slot必填。
Position必填,任意两个 Connector 不能重复。
Presence必填。
IdentifyMode必填,取 1、2、3。
Buses必填,字符串数组。

Presence 可以配置为静态值 0 或 1,也可以配置为引用语法、<=/ 同步或计算结果为 0 或 1 的表达式。

Buses 中每个元素必须来源于 Anchor 或允许输出总线的 Chip。

IdentifyMode=3 时:

  • Connector 必须挂在拓扑中的某条 Bus 下;
  • Buses 至少包含一个元素。

6.4 Chip 与 Bus

CSR 中定义的 Chip 必须挂在拓扑中的某条 Bus 下。

除 Pca9544、Pca9545、Pca9548、JtagSwitch 外,其它 Chip 至少应配置一个 Accessor 或 Scanner,或被其它对象使用。

CSR 中定义的 Bus 必须实际存在于拓扑中,并满足:

text
I2cMux  → Pca9544 / Pca9545 / Pca9548 / Chip / Smc
JtagMux → JtagSwitch
其它 Bus → Anchor

6.5 Debounce

Debounce 对象必须至少被一个 Scanner 引用。

涉及的 Debounce 类型包括:

text
MidAvg
Median
Cont
ContBin
None

6.6 SmcDfxInfo

SmcDfxInfo 必须包含:

text
Chip
Offset
Size
Period
SmcVersion
Config
Mapping

约束如下:

  • Chip 引用的对象必须在 Objects 中定义;
  • Config 必须为非空对象;
  • Config 的 key 为 1~255 之间的数字字符串;
  • 掩码变量名称为非空字符串,值范围 0~255;
  • Mapping 必须为非空对象;
  • Mapping 的 key 必须是 Objects 中定义的 Scanner;
  • Mapping 的 value 只能包含 Value
  • Value 必须为 expr 表达式;
  • 表达式引用的变量必须已经在 Config 中定义;
  • 表达式左右括号数量必须匹配;
  • Period 必须与汇聚 Scanner 中的最小扫描周期一致;
  • Chip 必须与汇聚的所有 Scanner 所引用 Chip 一致;
  • Size 不能小于 Config 中任意 key 值;
  • Period 不宜小于 200ms。

6.7 Event

Event 必须存在 ReadingComponent

其中:

  • Reading 只能配置为 <=/ 同步或包含 <=/ 同步的表达式;
  • Component 只能配置为对 Component 对象的引用语法;
  • DescArgSuggArg 从 1 开始计数;
  • DescArgSuggArg 不能超过事件模型中定义的占位符数量;
  • 不存在对应事件模型定义时,忽略占位符数量检查。

6.8 DiscreteEvent

DiscreteEvent 必须存在 ListenTypeSensorObject

要求:

  • ListenType 取 0 或 1;
  • PropertyEventDir 至少一个配置为 <=/ 同步或包含 <=/ 同步的表达式;
  • 另一个可以配置为正整数;
  • SensorObject 必须引用语法有效的 DiscreteSensor 对象。

6.9 ThresholdSensor 与 DiscreteSensor

ThresholdSensor 必须存在:

text
Reading
EntityId
EntityInstance

其中:

  • Reading 只能配置为 <=/ 同步或包含 <=/ 同步的表达式;
  • EntityIdEntityInstance 分别关联 Entity 对象的 IdInstance
  • 引用语法为推荐方式,<=/ 同步也允许但不建议。

DiscreteSensor 必须存在:

text
EntityId
EntityInstance

二者分别关联 Entity 对象的 IdInstance,同样推荐使用引用语法。

6.10 Entity

Entity 的 Id 为必填属性。

Instance 为可选属性,默认值为:

text
0x60

IdInstance 组成的联合属性必须全局唯一。

6.11 PCIeDevice

PCIeDevice 必须配置:

字段要求
GroupPosition必填、非空字符串。
DeviceName必填、非空字符串。
FunctionClass必填。

6.12 Component

Component 字段要求如下:

字段要求
FruId必填。
Type必填。
Instance必填。
GroupId若配置,只能取 1 或 255。
Presence必填。
Name必填、非空且本文件唯一。
PowerState必填。

FruId 可以:

  • 引用语法 Fru 或 FruData 对象的 FruId
  • 使用 <=/ 同步,但不推荐;
  • 配置静态值 255。

PresencePowerState 可以:

  • 配置静态值 0 或 1;
  • 配置 <=/ 同步;
  • 配置包含 <=/ 同步的表达式。

Name 可以使用字面常量、引用、同步或表达式,但同一 CSR 文件中必须唯一。

Event 关联 Component 时,Component 的 Type 必须与对应事件 EventCode 保持一致。

7. CSR 配置完整性检查

建议按照以下顺序检查 CSR:

  1. 检查 JSON 格式以及 FormatVersionDataVersion
  2. 检查 ManagementTopology、Anchor 及 Bus 来源。
  3. 检查 Bus、Chip、Connector 的挂载关系、重复关系和地址冲突。
  4. 检查拓扑中引用的对象是否已在 Objects 中定义。
  5. 检查对象唯一性、命名格式及对应 MDS 类定义。
  6. 检查属性是否存在有效模型定义,usage 是否包含 CSR。
  7. 检查属性类型和取值范围。
  8. 检查 @Default@Parent 的使用条件。
  9. 检查引用语法、变量语法、<=/ 同步的格式和引用目标。
  10. 检查 refInterface、Readonly 及 Accessor/Scanner 使用方向。
  11. 检查管道、expr、三元运算和 string 函数。
  12. 检查对象属性之间是否存在循环依赖。
  13. 检查 Scanner、Accessor、Connector、Chip、Bus、Debounce 等专用对象。
  14. 检查 SmcDfxInfo 的字段及内部一致性。
  15. 检查 Event、Sensor、Entity、PCIeDevice、Component 及对象间一致性。

8. 参考规则

编号模型分类名称规则描述级别错误提示错误影响修复建议备注说明VPD门禁生效存量问题已清理
rule_csr_001CSRCSR格式版本正确性检查CSR的格式版本(FormatVersion)为A.BC样式的非空字符串,必填字段。A为大版本,取值范围为1-255,BC为小版本,范围:01-99,小版本固定两位,不足两位需要补0。严重CSR文件(1%)格式版本存在如下问题:1、缺少FormatVersion字段的配置。2、FormatVersion字段当前配置为(2%),不符合格式要求。影响框架对CSR文件的版本兼容管理对CSR文件(1%)格式版本做如下修改:1、补充FormatVersion字段的定义。2、规范FormatVersion字段的定义。生效
rule_csr_003CSRCSR拓扑整体配置正确性检查CSR文件(platform.sr和xxx_soft.sr例外)必定存在ManagementTopology拓扑定义,该字段为对象类型,其下一定包含Anchor定义,可包含总线、Chip和Connector的拓扑定义,不能存在其它对象。Anchor为对象类型,一定包含Buses属性,Buses为字符串数组类型,包含0到多个元素;总线类型包含Jtag、 JtagOverGpio、 JtagOverLocalBus、 Gpio、 Hisport、 I2c、Adc、Can、LocalBus、I3cOverLocalBus、I2cOverHisport、SPIOverHisport、JtagOverHisport、JtagMux、I2cMux;Chip类型包含Chip、 Eeprom、 Lm75、 Pca9544、Pca9545、Pca9548、 Smc、 Pca9555、 Cpld、 JtagSwitch、CanbusChip、 Vrd、 Ads78、 CpldRegister。严重CSR文件(1%)整体拓扑配置存在如下问题:1、ManagementTopology配置中未定义Anchor字段。2、ManagementTopology配置中,Anchor下应至少包含一个Bus对象的定义。3、ManagementTopology配置中,存在非法的对象(2%、3%、4%)。影响板卡的链路拓扑配置,影响部分相关业务的硬件访问。对CSR文件(1%)整体拓扑配置做如下修改:1、补充ManagementTopology配置中的Anchor字段定义。2、补充ManagementTopology配置中Anchor字段下的总线定义。3、删除ManagementTopology配置中的非法对象(2%、3%、4%)。生效
rule_csr_004CSR传入到Anchor的总线正确性检查传入到Anchor的总线对象,其命名规范为""Type_Name"",其中Type为有效的总线类型,Name为对象名称,不可为空。严重CSR文件(1%)中Anchor字段下的(2%、3%、4%)为非法的Bus对象。定义在Anchor下预期的链路不能生效,影响该链路对应业务的硬件访问。删除或校正CSR文件(1%)中Anchor字段下的总线(2%、3%、4%)配置,正确的总线类型包含:Jtag、JtagOverGpio、JtagOverLocalBus、Gpio、Hisport、I2c、Adc、Can、LocalBus、I3cOverLocalBus、I2cOverHisport、SPIOverHisport、JtagOverHisport、JtagMux、I2cMux生效
rule_csr_005CSR传入到Anchor的总线有效性检查传入到Anchor的总线,其下须至少配置一个器件(连接器或Chip)或被传入到下一级连接器。一般CSR文件(1%)中Anchor字段下的(2%、3%、4%)Bus对象不存在任何器件配置,也未被传入到下一级连接器。若为冗余数据则无影响,否则缺失对应总线的链路拓扑配置,影响该链路对应业务的硬件访问。CSR文件(1%)中Anchor字段下的总线(2%、3%、4%)若为冗余数据,则直接删除,否则完善该总线的链路配置,或将该总线传入到下级连接器。
rule_csr_006CSRCSR拓扑总线配置正确性检查挂在ManagementTopology下的总线一定来源于Anchor或部分Chip(Pca9544、Pca9545、Pca9548、Chip、Smc、JtagSwitch),总线下可配置Chips和Connectors字段,若配置了Chips字段,则该字段中只能配置有效的Chip对象名称或为空,且同一总线下不允许存在地址相同的Chip;若配置了Connectors字段,则该字段中只能配置Connector对象名称或为空。同一个I2cMux或JtagMux总线不能挂在两个Chip下。严重CSR文件(1%)拓扑总线配置存在如下问题:1、ManagementTopology配置中的总线(2%、3%、4%)未挂在Anchor或部分Chip(Pca9544、Pca9545、Pca9548、Smc、JtagSwitch)下。2、ManagementTopology配置中的总线(5%)下存在非法字段(6%)配置。3、ManagementTopology配置中的总线(7%)下的Chips字段中,存在非法对象(8%、9%)配置。4、ManagementTopology配置中的总线(10%)下的Connectors字段中,存在非法对象(11%、12%)配置。5、ManagementTopology配置中的总线(13%)不能同时挂在多个Chip(14%、15%、16%)下。6、ManagementTopology配置中的总线(17%)下的Chips字段中,存在地址相同的Chip(18%、19%)。CSR拓扑中总线配置错误,则该总线或总线上Chip对应的业务访问硬件失败。对CSR文件(1%)拓扑总线配置做如下修改:1、识别ManagementTopology配置中的总线(2%、3%、4%)来源,若从上级传入,则须挂在Anchor下,若总线为I2cMux或JtagMux且在本CSR定义,则需挂在Pca9544、Pca9545、Pca9548、Smc或JtagSwitch下。2、删除ManagementTopology配置中的总线(5%)下的非法字段(6%)。3、删除ManagementTopology配置中的总线(7%)下的Chips字段中,存在的非法对象(8%、9%)。4、删除ManagementTopology配置中的总线(10%)下的Connectors字段中,存在的非法对象(11%、12%)。5、删除ManagementTopology配置中的总线(13%)所挂接的冗余的Chip(14%、15%、16%)关系,只能保留一个。6、修改ManagementTopology配置中的总线(17%)下Chip(18%、19%)的地址,使同一总线下的Chip地址各不相同。生效
rule_csr_007CSRCSR拓扑Chip配置正确性检查出现在拓扑中的Chip均须挂在总线下,且在Objects中存在定义,部分Chip(Pca9544、Pca9545、Pca9548、Chip、Smc、JtagSwitch)可挂在ManagementTopology下继续配置Buses字段,该字段内可配置多个I2cMux(Pca9544、Pca9545、Pca9548、Chip、Smc)或JtagMux(JtagSwitch)类型的总线,配置的总线对象均需在Objects中定义。同一个Chip在某总线的拓扑中最多只能出现一次,且不能同时存在于两个总线的拓扑配置中。严重CSR文件(1%)拓扑Chip配置存在如下问题:1、拓扑中的Chip(2%、3%)未挂在总线下。2、拓扑中的Chip(4%、5%)未在Objects中定义。3、拓扑中,Chip对象(6%,7%)不能直接挂在ManagementTopology下进行配置。4、拓扑中,(8%)Chip对象下不能挂载(9%)类型的总线。5、拓扑中,(10%)Chip对象下的总线(11%、12%)未在Objects中定义。6、拓扑中,(13%)Chip对象在(14%)总线下重复配置。7、拓扑中,(15%)Chip对象不能同时在(16%、17%、18%)总线下配置。CSR拓扑中Chip配置错误,则该Chip对应的业务访问硬件失败。对CSR文件(1%)拓扑Chip配置做如下修改:1、将拓扑中的Chip(2%、3%)挂在正确的总线下。2、在Objects中补充Chip(4%、5%)对象的定义。3、删除ManagementTopology下的Chip对象(6%,7%)的配置。4、删除拓扑中,(8%)Chip对象下的(9%)总线定义,或将(10%)总线挂在正确类型的Chip下(注:Pca9544、Pca9545、Pca9548、Smc下可挂载I2cMux总线,JtagSwitch下可挂载JtagMux总线)。5、在Objects中补充总线(11%)的定义。6、删除拓扑中,(12%)总线对象下重复的(13%)Chip对象,只保留一个。7、删除拓扑中,(14%、15%、16%)总线下重复的(17%)Chip定义,只保留一个。生效
rule_csr_008CSRCSR拓扑Connector配置正确性检查出现在拓扑中的Connector均须挂在总线下,且在Objects中存在定义,Connector不能挂在ManagementTopology下继续进行拓扑配置。Connector不能同时存在于两个总线的拓扑配置中。严重CSR文件(1%)拓扑Connector配置存在如下问题:1、拓扑中的Connector(2%、3%)未在Objects中定义。2、Connector(4%、5%)不能直接挂在ManagementTopology下。3、拓扑中的Connector(6%)同时挂在(7%、8%)总线下。CSR拓扑中的Connector配置错误,影响该连接器下级板卡的硬件访问。对CSR文件(1%)拓扑Connector配置做如下修改:1、在Objects中补充Connector(2%、3%)对象的定义。2、删除ManagementTopology下的Connector(4%、5%)对象配置。3、删除拓扑中,挂在总线(6%、7%)下的重复Connector(8%),只保留一个。生效
rule_csr_009CSRCSR对象重名检查Objects中定义的对象不能重名严重CSR文件(1%)的Objects中包含重复对象(2%、3%)的定义。被加载的对象可能不是业务预期的,影响对应业务的正常访问。删除CSR文件(1%)的Objects中的重复对象(2%、3%),每个对象定义只保留一个。生效
rule_csr_010CSRCSR对象名称有效性检查Objects中定义的对象名称为Type_Name格式,其中Type为类名,需在app组件的MDS中存在定义,Name为非空字符串,不能存在除下划线以外的符号。严重CSR文件(1%)的Objects对象名称存在如下问题:1、对象名称(2%、3%、4%)定义不规范。2、对象(5%、6%)对应的类(7%、8%)没有在组件MDS中定义。1、CSR标准化管理。2、CSR中定义的对象不能生效。将CSR文件(1%)的Objects对象名称做如下修改:1、对象名称(2%、3%、4%)按规范定义。2、在CSR中删除对象(5%、6%), 或者在组件MDS中补充对应的类定义。不生效
rule_csr_011CSRCSR属性有效性检查Objects中定义的对象,其下所配置的属性(@Default和@Parent除外),均需在对象对应类管理的资源树属性或私有属性中定义,且usage字段要被设置为“CSR”。严重CSR文件(1%)的Objects中(2%)对象下的属性(3%、4%),其未在对象对应类管理的资源树属性或私有属性中定义,或usage字段未被设置为“CSR”。CSR对象的属性无法上树或被app读取,若该属性涉及硬件,则无法正常读写硬件信息。若CSR文件(1%)的Objects中(2%)对象下的属性(3%、4%)为冗余信息,则删除,否则须补充对应资源树或类的私有属性定义。不生效
rule_csr_012CSRCSR属性类型正确性检查Objects中定义的对象,其下所配置属性(@Default和@Parent除外)的值类型须和所匹配资源树属性或MDS私有属性类型一致,若属性配置的引用或同步关系,则该属性与被引用/同步属性的类型定义须一致,允许类型提升。严重CSR文件(1%)的对象(2%)属性(3%)类型存在如下问题:1、属性取值为(4%),与其在(5%)app中定义的私有属性类型(6%)不一致。2、属性取值为(4%),与其在(5%)资源树接口中定义的属性类型(6%)不一致。3、属性引用/同步了(7%)对象的(8%)属性,此两属性的类型定义不一致,分别为(9%)和(10%)。CSR对象属性的取值范围不在定义范围内,可能导致该属性上树或被app读取失败或数据被截断。对CSR文件(1%)的对象(2%)属性(3%)类型做如下修改:1、修改属性值配置,或修改(4%)app的私有属性(5%)的类型,使其类型保持一致。2、修改属性值配置,或修改(4%)资源树接口的属性(5%)的类型,使其类型保持一致。3、将该属性和(6%)对象的(7%)属性的类型定义改成一致。不生效
rule_csr_013CSRCSR属性取值范围正确性检查Objects中定义的对象,其下所配置属性(@Default和@Parent除外)的值范围须和所匹配资源树属性或MDS私有属性定义的一致,若属性配置了引用或同步关系,则该属性定义的取值范围须囊括被引用/同步属性的取值范围。严重CSR文件(1%)的对象(2%)属性(3%)取值范围存在如下问题:1、属性取值为(4%),未在(5%)app中定义的私有属性取值范围(6%,7%)之内。2、属性取值为(4%),未在(5%)资源树接口中定义的属性取值范围(6%,7%)之内。3、属性引用/同步了(8%)对象的(9%)属性,前者属性的取值范围为(10%,11%),未囊括后者属性的取值范围(12%,13%)CSR对象属性的取值范围不在定义范围内,可能导致该属性上树或被app读取失败或数据被截断。对CSR文件(1%)的对象(2%)属性(3%)取值范围做如下修改:1、修改属性的值配置,使其在定义范围(4%,5%)内,或者修改(6%)app的私有属性(7%)的取值范围定义。2、修改属性的值配置,使其在定义范围(4%,5%)内,或者修改(6%)资源树接口的属性(7%)的取值范围定义。3、修改(8%)对象的(9%)属性和(10%)对象的(11%)属性的取值范围定义,保证后者的范围是前者的子集。不生效
rule_csr_014CSRCSR中@Default属性配置正确性检查CSR对象中若存在属性配置了同步语法,或配置的表达式中包含同步语法,则该属性可在该CSR对象的@Default字段的同名属性下配置默认值,默认值的类型需和该属性定义类型一致,默认值的取值范围为该属性所约束的取值范围,默认值不可配置为动态引用、静态引用和数据同步语法。一般CSR文件(1%)的(2%)对象@Default配置存在如下问题:1、(3%,4%)属性未在对象中配置为数据同步或包含数据同步的表达式,故其不能配置在@Default下。2、@Default下配置了(5%)属性的默认值(6%),该属性在(7%)app的私有属性中定义为(8%)类型,取值范围定义为(9%,10%),默认值不符合类型或取值范围的定义。3、@Default下配置了(5%)属性的默认值(6%),该属性在(7%)资源树接口的属性中定义为(8%)类型,取值范围定义为(9%,10%),默认值不符合类型或取值范围的定义。4、@Default下配置的(11%,12%)属性的默认值只能为常量。CSR对象属性配置的默认值无法正常生效,影响该属性对应业务的默认状态。对CSR文件(1%)的(2%)对象@Default配置做如下修改:1、删除@Default下配置的(3%,4%)属性,或在对象中将上述属性配置为数据同步或包含数据同步的表达式。2、修改@Default下配置的(5%)属性的默认值,使其满足类型为(6%),取值范围为(7%,8%)的定义。3、修改@Default下配置的(5%)属性的默认值,使其满足类型为(6%),取值范围为(7%,8%)的定义。4、将@Default下配置的(9%,10%)属性的默认值修改为常量。
rule_csr_015CSRCSR中@Parent属性配置正确性检查CSR对象中若存在@Parent属性,则该属性取值一定为定义在Objects中的对象,此两对象对应的类在MDS中的定义也存在Parent关系。严重CSR文件(1%)的(2%)对象的@Parent配置存在如下问题:1、父对象(3%)未在Objects中定义。2、对象(4%)与父对象(5%)对应的类在MDS中未被定义为对应的Parent关系。CSR中配置了@Parent的对象上树失败,影响对应的业务功能。对CSR文件(1%)的(2%)对象的@Parent配置做如下修改:1、补充父对象(3%)对象的定义。2、在(4%)app的MDS中补充(5%,6%)类对应的Parent关系定义,或删除本CSR中(7%,8%)对象的Parent关系。不生效
rule_csr_016CSRCSR静态引用语法正确性检查静态引用存在于CSR对象的属性配置中,写法为${ctx},其中${}为固定语法,前后可拼接字符串,ctx的取值可为FormatVersion、DataVersion和上联连接器的部分属性:Slot、SystemId、ManagerId、Container、GroupId、 ChassisId、 GroupPosition、 SilkText。 对静态引用语法的常见错误写法要做判断,包含如下异常场景:${abc,${{abc},${abc},${abc}}严重CSR文件(1%)的对象(2%)属性(3%)配置的静态引用存在如下问题:1、静态引用使用的(4%、5%)为非法字段。2、静态引用格式(6%)错误。CSR属性的静态引用无法生效,对应业务功能无法获取预期数据。对CSR文件(1%)的对象(2%)属性(3%)配置的静态引用做如下修改:1、静态引用可使用的字段:FormatVersion、DataVersion、Slot、SystemId、ManagerId、Container、GroupId、 ChassisId、 GroupPosition、 SilkText。2、您可能期望的静态引用配置为(4%)。生效
rule_csr_017CSRCSR动态引用语法正确性检查动态引用存在于CSR对象的属性配置中,写法为#/obj.p, 其中#/为固定语法,obj为定义在Objects中的对象,p为选填,p的语法正确性检查见规则rule_csr_018。对动态引用语法的常见错误写法要做判断:##/abc,#//abc。严重CSR文件(1%)的对象(2%)属性(3%)配置的动态引用存在如下问题:1、动态引用的(4%)对象未在Objects中定义。2、动态引用格式(5%)错误。CSR属性的动态引用无法生效,对应业务功能无法获取预期数据。对CSR文件(1%)的对象(2%)属性(3%)配置的动态引用做如下修改:1、在Objects中增加(4%)对象的定义。2、您可能期望的动态引用配置为(5%)。生效
rule_csr_018CSRCSR动态引用语法有效性检查CSR对象某属性若配置为对对象的动态引用#/obj,则obj不可为该对象本身,若配置为对属性的动态引用#obj.p,则obj可为该对象本身。属性p为obj对象对应的类在MDS中管理的资源树对象所实现接口的任意属性,若obj为该对象本身,则p还可为obj所在类管理的私有属性。严重CSR文件(1%)的对象(2%)属性配置的动态引用有效性存在如下问题:1、属性(3%,4%)不可引用属性所在的对象本身。2、属性(3%)引用了(4%)对象的(5%)属性,被引用属性未在(6%)类管理的资源树属性下定义。3、属性(3%)引用了自身对象的(4%)属性,被引用属性未在(5%)类管理的资源树属性或私有属性下定义。CSR属性的动态引用无法生效,对应业务功能无法获取预期数据。对CSR文件(1%)的对象(2%)属性配置的动态引用做如下修改,确保引用有效性正确:1、修改属性的配置,引用正确的数据。2、(4%)app的(5%)类管理的(6%)资源树对象实现了(7%,8%)资源树接口,需在上述1个资源树接口中补充(9%)属性的定义。3、(4%)app的(5%)类管理的(6%)资源树对象实现了(7%,8%)资源树接口,需在上述1个资源树接口或(9%)类的私有属性中补充(10%)属性的定义。不生效
rule_csr_019CSRCSR动态引用语法一致性检查CSR对象中的某属性,若其被定义为MDS中的私有属性,且配置了refInterface字段,则在CSR中该属性须配置为对其它对象的动态引用(或不配置该属性),被动态引用的对象对应的类需管理实现了refInterface关联接口的资源树对象。反之CSR中的属性若引用了对象,则该属性需被定义为私有属性,且配置了正确的refInterface字段(例外:若属性所在对象和其引用的对象所在的类在同一个组件中管理,则无须配置refInterface字段)。严重CSR文件(1%)的对象(2%)属性(3%)配置一致性存在如下问题:1、属性在CSR中应配置为引用对象的格式,因为其在(4%)类的私有属性定义中引用了(5%)资源树接口。2、属性在CSR中引用了对象,但该属性未被定义为(6%)类的私有属性。3、属性在CSR中引用了(7%)对象,该对象对应的类未管理实现了(8%)接口的资源树对象,(9%)接口为该属性对应(10%)类私有属性定义中引用的资源树接口。对应业务app的私有属性无法按预期访问资源树方法和属性,例如读写硬件数据。对CSR文件(1%)的对象(2%)属性(3%)的配置做如下修改,确保一致性正确:1、将属性配置为引用对象的格式,或删除该属性的配置。2、属性不应配置为引用对象的格式,或将该属性定义为类的私有属性。3、需确认属性引用的对象是否正确,或对象对应类所管理的资源树是否正确,再做对应策略的校正。不生效
rule_csr_020CSRCSR数据同步语法正确性检查数据同步存在于CSR对象的属性配置中,写法为<=/obj.p, 其中<=/为固定语法,obj为定义在Objects中的对象。对数据同步语法的常见错误写法要做判断: <<=/abc,<==/abc,<=//abc,<=abc,=/abc,</abc严重CSR文件(1%)的对象(2%)属性(3%)配置的数据同步存在如下问题:1、属性同步的(4%)对象未在Objects中定义。2、数据同步格式(5%)错误。CSR属性的动态同步无法生效,对应业务功能无法获取预期数据。对CSR文件(1%)的对象(2%)属性(3%)配置的数据同步做如下修改:1、在Objects中增加(4%)对象的定义。2、您可能期望的数据同步配置为(5%)。生效
rule_csr_021CSRCSR数据同步语法有效性检查CSR对象某属性配置数据同步<=/obj.p,obj不可为该对象本身,p为obj对象对应的类在MDS中管理的资源树对象所实现接口的任意属性,不可为obj对象对应类所定义的私有属性。严重CSR文件(1%)的对象(2%)属性(3%)配置的数据同步有效性存在如下问题:1、属性不可同步对象。2、属性不可同步自身对象的属性。3、属性同步了(4%)对象的(5%)属性,该属性未在(6%)类管理的资源树属性下定义。4、属性不可同步对象(7%)所在类(8%)的私有属性(9%)。CSR同步对象本身存在性能问题,同步私有属性无法获取变更后的最新数据。对CSR文件(1%)的对象(2%)属性(3%)配置的数据同步做如下修改,确保同步有效性正确:1、属性不可同步对象,应同步到对象下的属性。2、消除属性同步自身对象属性的写法,可改为代码实现。3、(4%)app的(5%)类管理的(6%)资源树对象实现了(7%,8%)资源树接口,需在上述1个资源树接口中补充(9%)属性的定义。4、修改属性配置的实现逻辑,或和业务侧沟通将私有属性定义为资源树属性。不生效
rule_csr_022CSRCSR自定义语法整体正确性检查自定义语法存在于CSR对象的属性配置中,通过管道运算符和若干独立的运算单元组合而成,管道运算符使用符号>表示,独立的运算单元包括静态引用,动态引用,数据同步,lua的String库函数,expr运算符,各独立运算单元分别满足各自的语法正确性和有效性检查规则。严重CSR文件(1%)中的(2%)对象的(3%)属性配置语法错误,存在未识别的配置(4%,5%)。CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。按照自定义语法的定义规范,修改CSR文件(1%)中的(2%)对象的(3%)属性的配置。生效
rule_csr_023CSRCSR自定义语法管道运算正确性检查CSR自定义语法中管道运算符使用>表示,第一级管道左侧为入参,右侧为管道运算(expr和lua的string库函数),支持多级管道运算符串联,只有第一级管道运算符才支持传入多个入参,参数之间使用分号分隔,参数可包含静态引用、动态引用、数据同步和管道运算结果。管道运算中使用$index来引用管道入参,index为下标从1开始的不大于第一级管道入参个数的整数。严重CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法存在如下错误:1、第(4%)级管道前只能传入一个入参。2、第(5%)级管道后的表达式引用无效参数(6%,7%),可引用的参数范围:[1,8%]。3、第一级管道前不可引用入参。CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。对CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法做如下修改:1、将自定义语法中要用到的参数均移到第1级管道前。2、自定义语法中可引用的管道参数范围:[1,4%]。3、删除第一级管道前的参数引用。生效
rule_csr_024CSRCSR自定义语法一致性检查CSR自定义语法配置,不允许动态引用和数据同步语法同时存在;管道运算中引用入参的下标应包含全量可支持的下标集合)。严重CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法一致性存在如下问题:1、自定义语法中不允许同时存在(4%,5%)的写法。2、自定义语法中,管道入参(6%,7%)未被使用。1、CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。2、多余的管道入参未被使用,可能为业务漏配。对CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法做如下修改,以确保一致性正确:1、自定义语法中动态引用、数据同步不能同时存在。2、补齐自定义语法配置逻辑,确保管道入参均被使用,或删除多余的管道入参。生效
rule_csr_025CSRCSR自定义语法expr正确性检查CSR自定义语法中expr的配置写法为expr(...),其中expr()为固定语法,…为计算表达式,计算表达式中左右括号个数须匹配。严重CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法expr存在如下问题:1、表达式(4%)的左右括号个数不匹配。2、表达式(5%)中禁止使用中文括号。CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。对CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法expr做如下修改:1、确保表达式中左右括号个数匹配。2、改用英文括号,或删除表达式中的中文括号。生效
rule_csr_026CSRCSR自定义语法三元运算符有效性检查CSR自定义语法中包含三元运算符的表达式参数个数需匹配,不能写成? false : true的样式(替代写法: ? 0 : 1)。严重CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法中,三元运算符的表达式存在如下问题:1、表达式(4%)中的三元运算符参数不匹配(5%)。2、三元运算符不能写成? false : true的样式。当前v3表达式是基于Lua的and和or方式去实现的,? false : true表达式的结果一直为true。对CSR文件(1%)中的(2%)对象的(3%)属性的自定义语法三元运算符配置做如下修改:1、确保表达式中三元运算符的参数匹配。2、将? false : true的表达式写法改成? 0 : 1的形式。生效
rule_csr_027CSRCSR自定义语法string库函数正确性检查CSR自定义语法中string库函数的配置写法为string.xxx(...),其中xxx为可枚举的函数名,具体包含:upper、lower、gsub、sub、format,cmp,…为计算表达式,需校验计算表达式中左右括号个数是否匹配。严重CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法string函数存在如下问题:1、未定义的函数(4%)。2、函数中(5%)的左右括号个数不匹配。3、format函数至少需要两个参数。4、format函数中的第一个参数必须是字符串类型。5、format函数(6%)中的%个数应为(7%)个。6、format函数中的第(8%,9%)个参数格式有误。CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。对CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法string函数做如下修改:1、删除对(4%)函数的使用。2、确保函数中左右括号个数匹配。3、修改format函数的参数个数。4、将format函数的第一个参数改为字符串类型。5、第一个参数中%个数应与其后的参数量一致。6、format函数中的第二个及以后的参数必须是$n格式。生效
rule_csr_028CSRCSR禁止同步Accessor对象检查CSR配置中Accessor对象只可被引用,不可被同步。严重CSR文件(1%)中的(2%)对象的(3%)属性不能对(4%)进行同步。若将对Accessor的访问配置为同步,则无法写入数据,同时读取数据时访问缓存,不会触发硬件访问。将CSR文件(1%)中的(2%)对象的(3%)属性对(4%)的同步改为动态引用,若您期望框架定期从硬件读取数据,则可将Accessor的定义改为Scanner。生效
rule_csr_030CSRCSR属性引用Scanner对象检查CSR对象中的属性不能动态引用Scanner对象。一般CSR文件(1%)中的(2%)对象的(3%)属性不能对(4%)进行动态引用。框架定期扫描的Scanner数据无法及时更新到关联属性,通常情况下会影响事件上报或被设计为监听触发的业务。将CSR文件(1%)中的(2%)对象的(3%)属性对(4%)的动态引用改为数据同步,若您不期望框架定期从硬件读取数据,则可将Scanner的定义改为Accessor。
rule_csr_031CSRCSR属性引用和同步循环依赖检查CSR的多个对象中,单个属性间不能存在动态引用或数据同步的循环依赖,多个属性间不能存在动态引用的循环依赖。"严重CSR文件(1%)中(2%、3%、4%)对象的属性间存在循环依赖关系:1、(5%)对象的(6%)属性引用了(7%)对象(或该对象的属性)。2、(8%)对象的(9%)属性引用了(10%)对象(或该对象的属性)。3、(11%)对象的(12%)属性引用了(13%)对象(或该对象的属性)。4、(5%)对象的(6%)属性同步了(7%)对象的(8%)属性。5、(9%)对象的(10%)属性同步了(11%)对象的(12%)属性。循环依赖存在架构设计问题,同时若循环依赖中包含数据同步,则有产生事件风暴的风险。对CSR文件(1%)进行合理设计,消除(2%、3%、4%)对象间的循环依赖。单个属性间引用定义:A对象x属性引用B对象y属性,B对象y属性引用A对象x属性。多个属性间引用定义:A对象x属性引用B对象m属性,B对象n属性引用A对象y属性。生效
rule_csr_032CSRCSR配置Scanner对象正确性检查CSR中定义的Scanner对象各属性满足如下校验(例外:Gpio总线下的Chip关联的Scanner只须配置Chip属性即可):1、Chip,必填,引用的Chip对象必须在Objects中定义,可引用的Chip对象不包含Pca9544、Pca9545、Pca9548和JtagSwitch。2、Size,必填。3、Type,必填,取值0或1。4、Mask,当Type取值为0时必填。5、Offset,选填,若未配置AggregateOffset,则该字段必填。6、AggregateOffset,选填,取值范围0-1023,若未配置Offset,则该字段必填。7、Debounce,选填,引用的防抖对象必须在Objects中定义,防抖对象分类包含MidAvg、Median、Cont和ContBin,该字段也可配置为常量字符串“None”。严重CSR文件(1%)中的(2%)配置存在如下问题:1、缺少Chip必填属性的配置。2、Chip属性引用的(3%)对象未在Objects中定义。3、Chip属性引用的(4%)对象不为有效的Chip类型。4、缺少Size必填属性的配置。5、缺少Type必填属性的配置。6、Type属性取值(5%)配置错误。7、缺少Mask必填属性(Type为0时必填)的配置。8、缺少Offset或AggregateOffset(至少一个)必填属性的配置。9、AggregateOffset属性取值(6%)配置错误。10、Debounce属性引用的(7%)对象未在Objects中定义。11、Debounce属性引用的(8%)对象不为有效的Debounce类型。Scanner未进行正常的配置,则框架不能按预期策略周期性从硬件读取数据。对CSR文件(1%)中的(2%)进行如下修改:1、补充Chip属性的配置。2、在Objects中补充(3%)对象的定义。3、Chip属性引用有效类型的Chip对象,包括:Chip、 Eeprom、 Lm75、 Smc、 Pca9555、 Cpld、CanbusChip、 Vrd、 Ads78、 CpldRegister。4、补充Size属性的配置。5、补充Type属性的配置。6、修改Type属性的配置,取值0或1。7、补充Mask属性的配置。8、补充Offset或AggregateOffset(至少一个)属性的配置。9、修改AggregateOffset属性的配置,取值范围为0-1023。10、在Objects中补充(4%)对象的定义。11、Debounce属性引用有效类型的防抖对象,包括:MidAvg、Median、Cont和ContBin。
rule_csr_033CSRCSR配置Accessor对象正确性检查CSR中定义的Accessor对象各属性满足如下校验(例外:Gpio总线下的Chip关联的Accessor只须配置Chip属性即可):1、Chip,必填,引用的Chip对象必须在Objects中定义,可引用的Chip对象不包含Pca9544、Pca9545、Pca9548和JtagSwitch。2、Size,必填。3、Type,必填,取值0或1。4、Mask,当Type取值为0时必填。5、Offset,必填。严重CSR文件(1%)中的(2%)配置存在如下问题:1、缺少Chip必填属性的配置。2、Chip属性引用的(3%)对象未在Objects中定义。3、Chip属性引用的(4%)对象不为有效的Chip类型。4、缺少Size必填属性的配置。5、缺少Type必填属性的配置。6、Type属性取值(6%)配置错误。7、缺少Mask必填属性(Type为0时必填)的配置。8、缺少Offset必填属性的配置。Accessor未进行正常的配置,无法从硬件读取数据。对CSR文件(1%)中的(2%)对象进行如下修改:1、补充Chip属性的配置。2、在Objects中补充(3%)对象的定义。3、Chip属性引用有效类型的Chip对象,包括:Chip、 Eeprom、 Lm75、 Smc、 Pca9555、 Cpld、CanbusChip、 Vrd、 Ads78、 CpldRegister。4、补充Size属性的配置。5、补充Type属性的配置。6、修改Type属性的配置,取值0或1。7、补充Mask属性的配置。8、补充Offset属性的配置。
rule_csr_034CSRCSR配置Connector对象正确性检查CSR中定义的Connector对象各属性满足如下校验:1、Slot,必填。2、Position,必填,任意两个连接器的Position不能重复。3、Presence,必填,可配置为静态值0或1,也可配置为动态引用、数据同步、计算结果为0或1的表达式。4、IdentifyMode,必填,取值范围:1、2、3。5、Buses,必填,字符串数组类型,包含0到多个元素,每个元素的取值均来源于传入Anchor或定义在Chip下的总线,Chip种类包含:Pca9544、Pca9545、Pca9548、Chip、Smc、JtagSwitch。严重CSR文件(1%)中的(2%)配置存在如下问题:1、缺少Slot属性的配置。2、缺少Position属性的配置。3、该连接器的Position取值(3%)与(4%)连接器的Position相同,冲突。4、缺少Presence属性的配置。5、Presence属性的配置(5%)不符合预期。6、缺少IdentifyMode属性的配置。7、IdentifyMode属性的取值(6%)配置错误。8、缺少Buses属性的配置。9、Buses属性下配置的(7%,8%)总线未来源于Anchor或指定类型的Chip下。影响下级板卡的正常加载。对CSR文件(1%)中的(2%)对象进行如下修改:1、补充Slot属性的配置。2、补充Position属性的配置。3、修改该连接器的Positio配置,冲突的位置:(3%,4%,5%)。4、补充Presence属性的配置。5、按规范要求配置Presence属性。6、补充IdentifyMode属性的配置。7、IdentifyMode属性可取值:1、2、3。8、补充Buses属性的配置。9、Buses属性下配置的总线需来源于Anchor或Pca9544、Pca9545、Pca9548、Smc、JtagSwitch下。
rule_csr_035CSRCSR配置Connector对象有效性检查CSR中定义的Connector对象,若IdentifyMode取值为3,则其必须挂在拓扑配置的某总线下,且Buses属性中至少配置一个元素。严重CSR文件(1%)中的(2%)连接器存在如下问题:1、未挂在拓扑配置的总线下。2、Buses属性中未配置元素。该连接器无法生效,影响下级板卡的正常加载。对CSR文件(1%)中的(2%)连接器做如下修改:1、将其挂在拓扑配置的总线下。2、在Buses属性中至少配置一个总线对象。生效
rule_csr_036CSRCSR配置Chip对象有效性检查CSR中定义的Chip对象必须挂在拓扑配置的某总线下,所有Chip(Pca9544、Pca9545、Pca9548、JtagSwitch例外)至少须配置一个Accessor或Scanner,或被其它对象使用。严重CSR文件(1%)中的(2%)Chip对象有效性存在如下问题:1、Chip未挂在拓扑配置的总线下。2、Chip未配置Accessor和Scanner,同时也未被其它对象使用。1、Chip无法正常工作,基于该Chip的读写均会失败。2、无效的Chip。对CSR文件(1%)中的(2%)Chip对象做如下修改:1、将Chip挂在拓扑配置的总线下,可挂总线:(3%,4%,5%),若此Chip为冗余数据,则须删除(该Chip关联的Accessor和Scanner同步删除)。2、若确认该Chip不被业务使用,则删除。生效
rule_csr_037CSRCSR配置SmcDfxInfo对象正确性检查CSR配置SmcDfxInfo对象必须包含Chip、Offset、Size、Period、SmcVersion、Config、Mapping字段。其中Chip引用的对象须在Objects中存在定义;Config为非空对象,每个对象元素的key为1-255的数字字符串,value为对象类型(取名掩码变量),掩码变量的key为非空字符串,值为0-255之间的数字;Mapping为非空对象,key为定义在Objects中的Scanner对象,value为只包含“Value”属性的对象,该属性对应的值为expr表达式,表达式中引用的变量名须在掩码变量中定义,同时表达式左右括号的数量须匹配。严重CSR文件(1%)中的(2%)对象存在如下问题:1、缺少必填属性(3%,4%,5%)的配置。2、Chip属性引用的(6%)对象未在Objects中定义。3、Config属性不能配置为空对象。4、Config属性为对象类型,包含非法的key值(7%,8%)配置,应配置为1-255之间的数字字符串。5、Config属性为对象类型,key(9%)所对应的value配置不符合规范。6、Mapping属性不能配置为空对象。7、Mapping中配置的(10%,11%)Scanner未在Objects中定义。8、Mapping中(12%)Scanner对应的表达式配置引用的(13%,14%)变量未在Config中定义。9、Mapping中(15%)Scanner对应的表达式配置左右括号不匹配。汇聚扫描中部分Scanner扫描失败,影响对应业务的硬件读取操作。对CSR文件(1%)中的(2%)对象进行如下修改:1、补充属性(3%,4%,5%)的配置。2、在Objects中补充(6%)对象的定义。3、Config属性至少配置一个对象元素。4、Config属性的对象配置中,规范非法key值(7%,8%)的配置,改为1-255之间的数字字符串。5、Config属性的对象配置中,将key(9%)所对应的value进行规范化定义(详见规则描述)。6、Mapping属性至少配置一个对象元素。7、在Objects中补充(10%,11%)Scanner对象的定义。8、在Config中补充(13%,14%)变量的定义。9、修改Mapping中(15%)Scanner对应的表达式配置。生效
rule_csr_038CSRCSR配置SmcDfxInfo对象有效性检查CSR中定义的SmcDfxInfo对象,需满足如下有效性检查:1、Period字段取值与该对象中汇聚的Scanner最小扫描周期一致。2、Chip字段取值与该对象中汇聚的所有Scanner引用的Chip一致。3、Size字段取值不能小于Config对象的任意key值。严重CSR文件(1%)中的(2%)对象存在如下问题:1、Period属性配置(3%)与该汇聚对象中扫描周期最小(4%)的(5%)对象不一致。2、Chip属性配置(6%)与该汇聚对象中的(7%,8%)Scanner所在的Chip不一致。3、Size字段取值(9%)小于Config对象的key值(10%,11%)。Period配置过大,部分汇聚中的Scanner不能达到预期的扫描间隔,Period配置过小,浪费扫描性能;Chip配置不对,扫出的数据存在问题;Size过小,扫出数据后续的掩码计算会有问题。对CSR文件(1%)中的(2%)对象进行如下修改:1、将Period属性值配置为汇聚对象中扫描周期最短的Scanner(3%)的扫描周期(4%)。2、修改Chip属性的配置或删除汇聚对象中不在此Chip下的Scanner(5%,6%)对象。。3、调整Size字段的取值至少到(7%),或删除Config中key值为(8%,9%)的元素。生效
rule_csr_039CSRCSR配置精细化事件有效性检查CSR中定义的精细化事件(Event对象)一定存在Reading和Component属性,Reading属性只能配置为数据同步或包含数据同步的表达式,Component属性只能配置为对Component对象的动态引用。Event对象可配置的DescArg和SuggArg属性不超出事件模型中定义的占位符数量,若不存在对应事件的模型定义,则忽略此校验。DescArg和SuggArg属性从1开始计数。严重CSR文件(1%)中的精细化事件对象(2%)配置有效性存在如下问题:1、Reading属性配置(3%)不符合预期,需配置为数据同步或包含数据同步的表达式。2、Component属性配置(3%)不符合预期,需配置为对Component对象的动态引用。3、DescArg和SuggArg属性不可从0开始计数。4、(4%)属性超出事件模型中定义的占位符数量(5%)。1、Event事件无法触发。2、Event事件注册失败。对CSR文件(1%)中的精细化事件对象(2%)配置做如下修改:1、将Reading属性修改成对其它对象属性的同步或包含同步表达式的写法。2、将Component属性修改成对Component对象的动态引用。3、将DescArg和SuggArg属性从1开始计数。4、删除(3%)属性定义。生效
rule_csr_040CSRCSR配置离散事件有效性检查CSR中定义的离散事件(DiscreteEvent对象)一定存在ListenType属性,属性取值0或1,可能存在Property和EventDir属性,此两属性至少要有一个配置为数据同步或包含数据同步的表达式,另一个可配置为正整数,一定存在SensorObject属性,且该属性须动态引用有效的DiscreteSensor对象。严重CSR文件(1%)中的离散事件对象(2%)配置存在如下问题:1、ListenType属性值(3%)错误,只能配置为0或1。2、Property和EventDir属性至少要有一个配置为数据同步或包含数据同步的表达式。3、SensorObject属性配置(4%)不符合预期,需配置为对DiscreteSensor对象的动态引用。离散事件无法按预期生效。对CSR文件(1%)中的离散事件对象(2%)进行如下修改:1、修改ListenType属性的值为0或1。2、将Property或EventDir属性配置为数据同步或包含数据同步的表达式。3、修改SensorObject属性配置,使其动态引用DiscreteSensor对象。生效
rule_csr_041CSRCSR配置连续传感器有效性检查CSR中定义的连续传感器(ThresholdSensor对象)一定存在Reading属性,该属性只能配置为数据同步或包含数据同步的表达式,一定存在EntityId和EntityInstance属性,此两属性一定要引用Entity对象的Id和Instance属性。严重CSR文件(1%)中的连续传感器对象(2%)配置存在如下问题:1、Reading属性配置(3%)错误,需配置为数据同步或包含数据同步的表达式。2、EntityId属性配置(4%)错误,需配置为对Entity对象Id的动态引用(同步亦可,但不建议)。3、EntityInstance属性配置(5%)错误,需配置为对Entity对象Instance的动态引用(同步亦可,但不建议)。连续传感器无法按预期生效。对CSR文件(1%)中的连续传感器对象(2%)进行如下修改:1、将Reading属性配置为数据同步或包含数据同步的表达式。2、将EntityId属性配置为对Entity对象Id属性的动态引用。3、将EntityInstance属性配置为对Entity对象Instance属性的动态引用。生效
rule_csr_042CSRCSR配置离散传感器有效性检查CSR中定义的离散传感器(DiscreteSensor对象)一定存在EntityId和EntityInstance属性,此两属性一定要引用Entity对象的Id和Instance属性。严重CSR文件(1%)中的离散传感器对象(2%)配置存在如下问题:1、EntityId属性配置(3%)错误,需配置为对Entity对象Id的动态引用(同步亦可,但不建议)。2、EntityInstance属性配置(4%)错误,需配置为对Entity对象Instance的动态引用(同步亦可,但不建议)。离散传感器无法按预期生效。对CSR文件(1%)中的离散传感器对象(2%)进行如下修改:1、将EntityId属性配置为对Entity对象Id属性的动态引用。2、将EntityInstance属性配置为对Entity对象Instance属性的动态引用。生效
rule_csr_043CSRCSR配置Entity对象正确性检查CSR中定义的Entity对象,Id为必填属性,Instance为选填(默认值:0x60),Id和Instance联合属性全局唯一。严重CSR文件(1%)中的Entity对象配置存在如下问题:1、Entity对象(2%,3%)的Id属性为必填。传感器无法与正确的实体关联。对CSR文件(1%)中的Entity对象做如下修改:1、补充Entity对象(2%,3%)的Id属性配置。生效
rule_csr_044CSRCSR定义文件格式正确性检查CSR定义文件均须为正确的json格式文件。严重CSR文件(1%)不是正确的json格式文件。CSR无法加载,对应板卡的业务访问硬件失败。将CSR文件(1%)改成正确的json格式文件。生效
rule_csr_045CSRCSR配置PCIeDevice对象正确性检查CSR中定义的PCIeDevice对象各属性满足如下校验:1、GroupPosition,必填,非空字符串。2、DeviceName,必填,非空字符串。3、FunctionClass,必填。严重CSR文件(1%)中的对象(2%)配置存在如下问题:1、GroupPosition属性为必填,且不能为空串。2、DeviceName属性为必填,且不能为空串。3、FunctionClass属性为必填。GroupPosition未配置影响PCIE设备基本功能;DeviceName未配置影响iBMC对外显示的设备名;FunctionClass未配置影响PCIE设备的基本功能。对CSR文件(1%)中的对象(2%)做如下修改:1、确保配置了GroupPosition属性,且不能为空串。2、确保配置了DeviceName属性,且不能为空串。3、确保配置了FunctionClass属性。
rule_csr_046CSRCSR配置Component对象正确性检查CSR中定义的Component对象各属性满足如下校验:1、FruId,必填,配置为对Fru或FruData对象FruId属性的动态引用(数据同步亦可,不推荐),或为静态值255。2、Type,必填。3、Instance,必填。4、GroupId,取值1或255。5、Presence,必填,可配置为静态值0或1,也可配置为数据同步或包含数据同步的表达式。6、Name,必填,非空字符串(字面常量、引用、同步、表达式),本文件中命名唯一。7、PowerState,必填,可配置为静态值0或1,也可配置为数据同步或包含数据同步的表达式。严重CSR文件(1%)中的对象(2%)配置存在如下问题:1、缺少必填属性(3%,4%)的配置。2、FruId属性的配置(5%)不符合预期。3、GroupId属性的配置(6%)不符合预期。4、Presence属性的配置(7%)不符合预期。5、对象(8%,9%)中的Name与本对象Name(10%)重名。6、PowerState属性的配置(11%)不符合预期。配置错误会对告警和电子标签业务造成影响。对CSR文件(1%)中的对象(2%)配置做如下修改:1、补充属性(3%,4%)的配置。2、FruId属性配置为对Fru或FruData对象FruId属性的动态引用,或为静态值255。3、GroupId属性取值只能为1或255。4、Presence属性配置为静态值0或1,也可配置为数据同步或包含数据同步的表达式。5、修改对象(5%,6%,7%)中的Name的配置,确保命名唯一。6、PowerState属性配置为静态值0或1,也可配置为数据同步或包含数据同步的表达式。错误描述中:1、3%,4%可取值:FruId、Type、Instance、Presence、Name、PowerState
rule_csr_047CSRCSR配置精细化事件一致性检查在事件(Event)关联的组件对象(Component)中,其Type属性取值必须与对应事件的EventCode保持一致。严重CSR文件(1%)中的精细化事件对象(2%)的EventKeyId关联的EventCode属性前两位(十六进制)取值(3%)与关联的Component的Type取值(4%)不一致。Event事件注册失败。修改CSR文件(1%)中的精细化事件对象(2%)关联Component的Type属性取值,或关联Type取值为(3%)的其他Component对象。