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 为必填的非空字符串,格式为:
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.sr 和 xxx_soft.sr 外,CSR 文件必须存在 ManagementTopology。
ManagementTopology 必须为对象类型,并满足:
- 必须包含
Anchor; - 可以包含 Bus、Chip 和 Connector 相关拓扑定义;
- 不允许出现其它类型的拓扑对象。
Anchor 必须为对象类型,并包含 Buses。Buses 为字符串数组。
规则描述中 Buses 可包含 0 到多个元素,同时检查项包含“Anchor 下应至少包含一个 Bus 对象”的要求。涉及空 Buses 的场景时,应结合实际检查结果确认。
3. ManagementTopology 管理拓扑规则
3.1 Anchor
传入 Anchor 的 Bus 对象名称必须采用:
Type_Name其中:
Type必须为有效 Bus 类型;Name不能为空。
有效 Bus 类型包括:
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 的挂载关系应满足:
I2cMux → Pca9544 / Pca9545 / Pca9548 / Chip / Smc
JtagMux → JtagSwitch
其它 Bus → AnchorBus 下只允许配置 Chips 和 Connectors:
Chips只能包含有效 Chip 对象名称或为空;Connectors只能包含 Connector 对象名称或为空;- 同一 Bus 下不允许存在地址相同的 Chip;
- 同一个 I2cMux 或 JtagMux 不能同时挂在两个 Chip 下。
CSR 中定义的 Bus 对象必须实际出现在拓扑配置中。
3.3 Chip
出现在拓扑中的 Chip 必须:
- 挂在某条 Bus 下;
- 在
Objects中存在定义。
有效 Chip 类型包括:
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 中不允许存在重名对象。
对象名称采用:
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 变量语法
变量语法格式为:
${ctx}${} 用于变量替换,${} 为固定语法,前后允许拼接字符串。
允许使用的 ctx 包括:
FormatVersion
DataVersion
Slot
SystemId
ManagerId
Container
GroupId
ChassisId
GroupPosition
SilkText常见非法形式包括:
${abc
${{abc}
${abc}
${abc}}5.2 静态引用
静态引用使用 #/ 语法,可以引用对象,也可以引用对象属性:
#/obj
#/obj.p约束如下:
obj必须在Objects中定义;#/obj引用整个对象时,不能引用当前对象自身;#/obj.p引用属性时,可以引用当前对象自身的其它属性;- 引用其它对象属性时,
p必须属于被引用对象对应类所管理资源树对象实现接口中的属性; - 引用当前对象自身属性时,
p还可以是当前类的 MDS 私有属性。
典型非法形式包括:
##/abc
#//abc5.3 refInterface 一致性
MDS 私有属性配置了 refInterface 时,该属性在 CSR 中应:
- 配置为对其它对象的
#/引用;或 - 不配置该属性。
被引用对象对应类需要管理实现了 refInterface 所关联接口的资源树对象。
反向约束:
- CSR 属性使用
#/引用对象时,该属性应定义为 MDS 私有属性; - 应配置正确的
refInterface; - 如果引用对象和被引用对象对应的类由同一个组件管理,则无需配置
refInterface。
5.4 同步语法
同步语法格式为:
<=/obj.p约束如下:
obj必须在Objects中定义;- 只能同步对象属性,不能只同步对象;
obj不能是当前属性所在对象自身;p必须属于被同步对象对应类所管理资源树对象实现接口中的属性;- 不允许同步被同步对象对应类的 MDS 私有属性。
典型非法形式包括:
<<=/abc
<==/abc
<=//abc
<=abc
=/abc
</abc5.5 管道与自定义语法
自定义语法可以由静态引用、变量语法、同步语法、expr 和 Lua string 库函数组成,通过 |> 连接。
管道需要满足:
- 只有第一级管道允许多个入参;
- 多个入参使用
;分隔; - 管道中使用
$index引用参数; index从 1 开始,且不能大于第一级实际入参数量;- 第一级管道前不能使用
$index; - 后续管道前只能有一个入参;
- 配置的管道入参应全部被使用。
同一条自定义语法中不允许同时存在静态引用和同步语法。
5.6 expr 与三元运算
expr 固定格式为:
expr(...)要求:
- 左右括号数量匹配;
- 不允许使用中文全角括号。
三元运算参数必须匹配,不允许使用:
? false : true形式,可根据业务语义使用 ? 0 : 1 等形式替代。
5.7 string 函数
string 函数格式为:
string.xxx(...)支持:
upper
lower
gsub
sub
format
cmp括号数量必须匹配。
string.format 还必须满足:
- 至少两个参数;
- 第一个参数为字符串;
- 格式字符串中的
%数量与后续参数数量一致; - 第二个及后续参数使用
$n格式。
5.8 Accessor 与 Scanner 使用方向
Accessor 只允许通过 #/ 引用,不允许使用 <=/ 同步。
Scanner 不允许通过 #/ 引用,需要关联 Scanner 数据时应使用 <=/ 同步。
5.9 Readonly 一致性
CSR 属性如果配置为同步语法或自定义语法,则对应资源树属性需要定义为只读属性。
5.10 循环依赖
对象属性之间不允许形成 #/ 引用或 <=/ 同步的循环依赖。
包括:
A.x → B.y
B.y → A.x以及多个属性之间形成的 #/ 引用闭环。
包含同步语法的循环依赖还可能产生事件风暴。
6. 专用对象配置规则
6.1 Scanner
一般情况下 Scanner 字段要求如下:
| 字段 | 要求 |
|---|---|
Chip | 必填。 |
Size | 必填。 |
Type | 必填,取 0 或 1。 |
Mask | Type=0 时必填。 |
Offset | 与 AggregateOffset 至少配置一个。 |
AggregateOffset | 与 Offset 至少配置一个,取值 0~1023。 |
Debounce | 可选。 |
Chip 必须引用 Objects 中已定义的有效 Chip,不包含 Pca9544、Pca9545、Pca9548 和 JtagSwitch。
允许引用的 Chip 类型包括:
Chip
Eeprom
Lm75
Smc
Pca9555
Cpld
CanbusChip
Vrd
Ads78
CpldRegisterDebounce 可以引用 MidAvg、Median、Cont、ContBin,也可以配置常量字符串 None。
Gpio 总线下 Chip 关联的 Scanner 只要求配置 Chip。
Scanner 必须至少被其它一个对象使用。
6.2 Accessor
一般情况下 Accessor 字段要求如下:
| 字段 | 要求 |
|---|---|
Chip | 必填。 |
Size | 必填。 |
Type | 必填,取 0 或 1。 |
Mask | Type=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 必须实际存在于拓扑中,并满足:
I2cMux → Pca9544 / Pca9545 / Pca9548 / Chip / Smc
JtagMux → JtagSwitch
其它 Bus → Anchor6.5 Debounce
Debounce 对象必须至少被一个 Scanner 引用。
涉及的 Debounce 类型包括:
MidAvg
Median
Cont
ContBin
None6.6 SmcDfxInfo
SmcDfxInfo 必须包含:
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 必须存在 Reading 和 Component。
其中:
Reading只能配置为<=/同步或包含<=/同步的表达式;Component只能配置为对 Component 对象的引用语法;DescArg和SuggArg从 1 开始计数;DescArg和SuggArg不能超过事件模型中定义的占位符数量;- 不存在对应事件模型定义时,忽略占位符数量检查。
6.8 DiscreteEvent
DiscreteEvent 必须存在 ListenType 和 SensorObject。
要求:
ListenType取 0 或 1;Property和EventDir至少一个配置为<=/同步或包含<=/同步的表达式;- 另一个可以配置为正整数;
SensorObject必须引用语法有效的 DiscreteSensor 对象。
6.9 ThresholdSensor 与 DiscreteSensor
ThresholdSensor 必须存在:
Reading
EntityId
EntityInstance其中:
Reading只能配置为<=/同步或包含<=/同步的表达式;EntityId、EntityInstance分别关联 Entity 对象的Id、Instance;- 引用语法为推荐方式,
<=/同步也允许但不建议。
DiscreteSensor 必须存在:
EntityId
EntityInstance二者分别关联 Entity 对象的 Id 和 Instance,同样推荐使用引用语法。
6.10 Entity
Entity 的 Id 为必填属性。
Instance 为可选属性,默认值为:
0x60Id 与 Instance 组成的联合属性必须全局唯一。
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。
Presence 和 PowerState 可以:
- 配置静态值 0 或 1;
- 配置
<=/同步; - 配置包含
<=/同步的表达式。
Name 可以使用字面常量、引用、同步或表达式,但同一 CSR 文件中必须唯一。
Event 关联 Component 时,Component 的 Type 必须与对应事件 EventCode 保持一致。
7. CSR 配置完整性检查
建议按照以下顺序检查 CSR:
- 检查 JSON 格式以及
FormatVersion、DataVersion。 - 检查
ManagementTopology、Anchor 及 Bus 来源。 - 检查 Bus、Chip、Connector 的挂载关系、重复关系和地址冲突。
- 检查拓扑中引用的对象是否已在
Objects中定义。 - 检查对象唯一性、命名格式及对应 MDS 类定义。
- 检查属性是否存在有效模型定义,
usage是否包含 CSR。 - 检查属性类型和取值范围。
- 检查
@Default、@Parent的使用条件。 - 检查引用语法、变量语法、
<=/同步的格式和引用目标。 - 检查
refInterface、Readonly 及 Accessor/Scanner 使用方向。 - 检查管道、
expr、三元运算和 string 函数。 - 检查对象属性之间是否存在循环依赖。
- 检查 Scanner、Accessor、Connector、Chip、Bus、Debounce 等专用对象。
- 检查 SmcDfxInfo 的字段及内部一致性。
- 检查 Event、Sensor、Entity、PCIeDevice、Component 及对象间一致性。
8. 参考规则
| 编号 | 模型分类 | 名称 | 规则描述 | 级别 | 错误提示 | 错误影响 | 修复建议 | 备注说明 | VPD门禁生效 | 存量问题已清理 |
|---|---|---|---|---|---|---|---|---|---|---|
| rule_csr_001 | CSR | CSR格式版本正确性检查 | 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_003 | CSR | CSR拓扑整体配置正确性检查 | 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_004 | CSR | 传入到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_005 | CSR | 传入到Anchor的总线有效性检查 | 传入到Anchor的总线,其下须至少配置一个器件(连接器或Chip)或被传入到下一级连接器。 | 一般 | CSR文件(1%)中Anchor字段下的(2%、3%、4%)Bus对象不存在任何器件配置,也未被传入到下一级连接器。 | 若为冗余数据则无影响,否则缺失对应总线的链路拓扑配置,影响该链路对应业务的硬件访问。 | CSR文件(1%)中Anchor字段下的总线(2%、3%、4%)若为冗余数据,则直接删除,否则完善该总线的链路配置,或将该总线传入到下级连接器。 | |||
| rule_csr_006 | CSR | CSR拓扑总线配置正确性检查 | 挂在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_007 | CSR | CSR拓扑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_008 | CSR | CSR拓扑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_009 | CSR | CSR对象重名检查 | Objects中定义的对象不能重名 | 严重 | CSR文件(1%)的Objects中包含重复对象(2%、3%)的定义。 | 被加载的对象可能不是业务预期的,影响对应业务的正常访问。 | 删除CSR文件(1%)的Objects中的重复对象(2%、3%),每个对象定义只保留一个。 | 生效 | ||
| rule_csr_010 | CSR | CSR对象名称有效性检查 | 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_011 | CSR | CSR属性有效性检查 | Objects中定义的对象,其下所配置的属性(@Default和@Parent除外),均需在对象对应类管理的资源树属性或私有属性中定义,且usage字段要被设置为“CSR”。 | 严重 | CSR文件(1%)的Objects中(2%)对象下的属性(3%、4%),其未在对象对应类管理的资源树属性或私有属性中定义,或usage字段未被设置为“CSR”。 | CSR对象的属性无法上树或被app读取,若该属性涉及硬件,则无法正常读写硬件信息。 | 若CSR文件(1%)的Objects中(2%)对象下的属性(3%、4%)为冗余信息,则删除,否则须补充对应资源树或类的私有属性定义。 | 不生效 | ||
| rule_csr_012 | CSR | CSR属性类型正确性检查 | 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_013 | CSR | CSR属性取值范围正确性检查 | 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_014 | CSR | CSR中@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_015 | CSR | CSR中@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_016 | CSR | CSR静态引用语法正确性检查 | 静态引用存在于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_017 | CSR | CSR动态引用语法正确性检查 | 动态引用存在于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_018 | CSR | CSR动态引用语法有效性检查 | 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_019 | CSR | CSR动态引用语法一致性检查 | 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_020 | CSR | CSR数据同步语法正确性检查 | 数据同步存在于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_021 | CSR | CSR数据同步语法有效性检查 | 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_022 | CSR | CSR自定义语法整体正确性检查 | 自定义语法存在于CSR对象的属性配置中,通过管道运算符和若干独立的运算单元组合而成,管道运算符使用符号 | >表示,独立的运算单元包括静态引用,动态引用,数据同步,lua的String库函数,expr运算符,各独立运算单元分别满足各自的语法正确性和有效性检查规则。 | 严重 | CSR文件(1%)中的(2%)对象的(3%)属性配置语法错误,存在未识别的配置(4%,5%)。 | CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。 | 按照自定义语法的定义规范,修改CSR文件(1%)中的(2%)对象的(3%)属性的配置。 | 生效 | |
| rule_csr_023 | CSR | CSR自定义语法管道运算正确性检查 | 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_024 | CSR | CSR自定义语法一致性检查 | CSR自定义语法配置,不允许动态引用和数据同步语法同时存在;管道运算中引用入参的下标应包含全量可支持的下标集合)。 | 严重 | CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法一致性存在如下问题:1、自定义语法中不允许同时存在(4%,5%)的写法。2、自定义语法中,管道入参(6%,7%)未被使用。 | 1、CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。2、多余的管道入参未被使用,可能为业务漏配。 | 对CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法做如下修改,以确保一致性正确:1、自定义语法中动态引用、数据同步不能同时存在。2、补齐自定义语法配置逻辑,确保管道入参均被使用,或删除多余的管道入参。 | 生效 | ||
| rule_csr_025 | CSR | CSR自定义语法expr正确性检查 | CSR自定义语法中expr的配置写法为expr(...),其中expr()为固定语法,…为计算表达式,计算表达式中左右括号个数须匹配。 | 严重 | CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法expr存在如下问题:1、表达式(4%)的左右括号个数不匹配。2、表达式(5%)中禁止使用中文括号。 | CSR属性自定义语法无法生效,对应业务功能无法正常读取数据。 | 对CSR文件(1%)中的(2%)对象的(3%)属性配置的自定义语法expr做如下修改:1、确保表达式中左右括号个数匹配。2、改用英文括号,或删除表达式中的中文括号。 | 生效 | ||
| rule_csr_026 | CSR | CSR自定义语法三元运算符有效性检查 | 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_027 | CSR | CSR自定义语法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_028 | CSR | CSR禁止同步Accessor对象检查 | CSR配置中Accessor对象只可被引用,不可被同步。 | 严重 | CSR文件(1%)中的(2%)对象的(3%)属性不能对(4%)进行同步。 | 若将对Accessor的访问配置为同步,则无法写入数据,同时读取数据时访问缓存,不会触发硬件访问。 | 将CSR文件(1%)中的(2%)对象的(3%)属性对(4%)的同步改为动态引用,若您期望框架定期从硬件读取数据,则可将Accessor的定义改为Scanner。 | 生效 | ||
| rule_csr_030 | CSR | CSR属性引用Scanner对象检查 | CSR对象中的属性不能动态引用Scanner对象。 | 一般 | CSR文件(1%)中的(2%)对象的(3%)属性不能对(4%)进行动态引用。 | 框架定期扫描的Scanner数据无法及时更新到关联属性,通常情况下会影响事件上报或被设计为监听触发的业务。 | 将CSR文件(1%)中的(2%)对象的(3%)属性对(4%)的动态引用改为数据同步,若您不期望框架定期从硬件读取数据,则可将Scanner的定义改为Accessor。 | |||
| rule_csr_031 | CSR | CSR属性引用和同步循环依赖检查 | 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_032 | CSR | CSR配置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_033 | CSR | CSR配置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_034 | CSR | CSR配置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_035 | CSR | CSR配置Connector对象有效性检查 | CSR中定义的Connector对象,若IdentifyMode取值为3,则其必须挂在拓扑配置的某总线下,且Buses属性中至少配置一个元素。 | 严重 | CSR文件(1%)中的(2%)连接器存在如下问题:1、未挂在拓扑配置的总线下。2、Buses属性中未配置元素。 | 该连接器无法生效,影响下级板卡的正常加载。 | 对CSR文件(1%)中的(2%)连接器做如下修改:1、将其挂在拓扑配置的总线下。2、在Buses属性中至少配置一个总线对象。 | 生效 | ||
| rule_csr_036 | CSR | CSR配置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_037 | CSR | CSR配置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_038 | CSR | CSR配置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_039 | CSR | CSR配置精细化事件有效性检查 | 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_040 | CSR | CSR配置离散事件有效性检查 | 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_041 | CSR | CSR配置连续传感器有效性检查 | 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_042 | CSR | CSR配置离散传感器有效性检查 | 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_043 | CSR | CSR配置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_044 | CSR | CSR定义文件格式正确性检查 | CSR定义文件均须为正确的json格式文件。 | 严重 | CSR文件(1%)不是正确的json格式文件。 | CSR无法加载,对应板卡的业务访问硬件失败。 | 将CSR文件(1%)改成正确的json格式文件。 | 生效 | ||
| rule_csr_045 | CSR | CSR配置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_046 | CSR | CSR配置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_047 | CSR | CSR配置精细化事件一致性检查 | 在事件(Event)关联的组件对象(Component)中,其Type属性取值必须与对应事件的EventCode保持一致。 | 严重 | CSR文件(1%)中的精细化事件对象(2%)的EventKeyId关联的EventCode属性前两位(十六进制)取值(3%)与关联的Component的Type取值(4%)不一致。 | Event事件注册失败。 | 修改CSR文件(1%)中的精细化事件对象(2%)关联Component的Type属性取值,或关联Type取值为(3%)的其他Component对象。 |