CSR配置字典之Scanner类
更新时间:2025/7/22
在Gitcode上查看源码📋 文档信息
项目 | 内容 |
---|---|
文档标题 | Scanner类配置字典 |
版本 | v1.0 |
创建日期 | 2025-01-27 |
最后更新 | 2025-01-27 |
维护状态 | ✅ 活跃维护 |
📋 变更历史记录
文档变更记录
版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
---|---|---|---|---|---|
v1.0 | 2025-01-27 | 初始版本 | 创建Scanner类配置字典 | 全新文档 | 系统管理员 |
🎯 类概览
Scanner 类
属性 | 值 |
---|---|
类名称 | Scanner |
功能描述 | 硬件代理对所有配置的Scanner进行周期性扫描,并将值更新到资源树,属性只读 |
所属SIG组 | hardware |
所属组件 | hwproxy |
责任人 | 硬件代理组 |
最后更新 | 2025-01-27 |
状态 | 🟢 正常运行 |
📊 属性定义详表
必选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
Chip | String | CSR配置 | - | Smc_NpuBrdSMC | Scanner关联的chip 对同一csr中器件的引用 | 硬件器件关联 | "#/Smc_NpuBrdSMC" | CSR | 硬件 |
Offset | U32 | 469765888 | - | - | 偏移地址 json不支持16进制,需转换成10进制 1、对于简单器件,偏移为实际的硬件器件偏移,用于计算硬件的偏移地址,读取硬件下不同地址的数据 2、对于SMC,偏移为SMC命令字 | 硬件地址定位,若是Smc命令字,需对应器件支持 | 469765888 | CSR | 硬件 |
Size | U8 | 1 | - | - | 读取数据的长度 单位为Byte | 在hwproxy内部中存在扫描线程对所有配置的Scanner进行周期性扫描,并将值更新到资源树,属性只读,适用于V2中循环获取值的场景 | 1 | CSR | 硬件 |
Type | U8 | 0 | 0或1 | - | 读取方式 0:位读 1:块读 | 需要器件支持 | 0 | CSR | 硬件 |
Period | U32 | 500 | - | - | Scanner扫描周期 单位ms | 定时开启扫描动作的周期 | 500 | CSR | 硬件 |
可选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
Mask | U8 | 255 | - | - | 掩码 从硬件读取的数据长度为Byte,为了准确获取某其中的某些bit,读值需要与Mask按位与,此操作需要器件支持;位读时掩码有效,块读时掩码无效,可置0 | 位读方式有效 | 255 | CSR | 硬件 |
Debounce | String | "None" | "None"、"#/ContBin_H6L3"、"#/MidAvg_ADTEST_0" | ContBin_H6L3、MidAvg_ADTEST_0 | 引用的Debounce防抖对象 | 当成功读到值时,使用配置的防抖方式获取防抖后的值 | "None" 、"#/ContBin_H6L3" 、"#/MidAvg_ADTEST_0" | CSR | 硬件 |
ScanEnabled | String | 1 | 0或1 | Scanner_PowerGd | Scanner使能 ScanEnabled取值为枚举值0和1: 0表示Scanner未使能 1表示Scanner使能 值可以通过单点值、表达式、或从其他Scanner同步值,注意不能依赖成环,表达式需要最后转换为0或1 | 某些场景不需要进行扫描,可进行配置,例如关联电源信号,下电时不扫描 | "<=/Scanner_PowerGd.Value" | CSR/其他对象同步 | 硬件 |
NominalValue | U8 | 0 | - | - | 默认值 Scanner禁用状态,当芯片处于不可用状态时,可通过ScanEnabled属性与NominalValue属性配置Scanner的禁用状态与禁用状态下的取值 | 在hwproxy内部中存在扫描线程对所有配置的Scanner进行周期性扫描,并将值更新到资源树,属性只读,适用于V2中循环获取值的场景 | 0 | CSR | 硬件 |
Status | U8 | 4 | 0、1、2、3、4 | 硬件代理提供 | Scanner状态 Scanner状态属于运行态的变量 0: 正常获取值 1: 获取值失败 2: 获取值预失败,正在进行防抖 3: 处于无效状态 4: 初始状态, 暂未开始扫描 | 用于状态监控和管理,Status不为0时说明数值并非从硬件上读取来的准确值,不能作为告警的依据 | 无需配置 | 硬件代理提供 | 软件 |
Value | U8 | 硬件代理提供 | - | 硬件代理提供 | 当Scanner处于无效状态(Status=3)时,Value将被置为NominalValue标称值 | Status的值默认值为(初始状态, 暂未开始扫描),则此时Value = NominalValue | 无需配置 | 硬件代理提供 | 软件 |
@Default | String | 硬件代理提供 | - | - | 指定特定属性的默认值 | 在hwproxy内部中存在扫描线程对所有配置的Scanner进行周期性扫描,并将值更新到资源树,属性只读 | N/A | CSR | 硬件 |
🔗 动态关联机制
语法规范
使用 #/xxx
格式实现属性间的动态关联:
yaml
# 语法格式
属性名: "#/目标类.属性名"
# 实际示例
Chip: "#/Smc_NpuBrdSMC" # 关联SMC器件
Debounce: "#/ContBin_H6L3" # 关联防抖对象
ScanEnabled: "<=/Scanner_PowerGd.Value" # 关联电源状态,使用表达式
关联说明
- Chip: 关联同一CSR中的器件对象,实现Scanner与具体硬件器件的绑定
- Debounce: 可选关联防抖对象,提供数据滤波功能
- ScanEnabled: 支持表达式关联,可与电源状态等条件绑定,实现智能扫描控制
📂 分类标准
硬件属性
- 定义:与物理器件直接相关的参数
- 特点:通常固定不变,与硬件BOM表对应
- 示例:
Chip
,Offset
,Size
,Type
,Period
,Mask
,Debounce
,ScanEnabled
,NominalValue
,@Default
软件属性
- 定义:用于逻辑控制和软件管理的参数
- 特点:由硬件代理动态提供和管理
- 示例:
Status
,Value
📝 配置示例
标准SMC扫描配置
json
{
"Scanner": {
"Chip": "#/Smc_NpuBrdSMC",
"Offset": 469765888,
"Size": 1,
"Type": 0,
"Period": 500,
"Mask": 255,
"Debounce": "None",
"ScanEnabled": 1,
"NominalValue": 0,
"Status": 4,
"Value": 0
}
}
带防抖功能的扫描配置
json
{
"Scanner": {
"Chip": "#/Smc_NpuBrdSMC",
"Offset": 469765888,
"Size": 1,
"Type": 0,
"Period": 300,
"Mask": 255,
"Debounce": "#/ContBin_H6L3",
"ScanEnabled": 1,
"NominalValue": 0,
"Status": 4,
"Value": 0
}
}
条件扫描配置
json
{
"Scanner": {
"Chip": "#/Smc_NpuBrdSMC",
"Offset": 469765888,
"Size": 1,
"Type": 0,
"Period": 500,
"Mask": 255,
"Debounce": "None",
"ScanEnabled": "<=/Scanner_PowerGd.Value",
"NominalValue": 0,
"Status": 4,
"Value": 0
}
}
块读扫描配置
json
{
"Scanner": {
"Chip": "#/Smc_NpuBrdSMC",
"Offset": 469765888,
"Size": 4,
"Type": 1,
"Period": 1000,
"Mask": 0,
"Debounce": "None",
"ScanEnabled": 1,
"NominalValue": 0,
"Status": 4,
"Value": 0
}
}
🔧 使用指南
配置步骤
- 确定关联器件:通过Chip属性指定要扫描的硬件器件
- 设置地址参数:配置Offset(偏移地址)和Size(数据长度)
- 选择读取方式:根据器件特性选择Type(0位读/1块读)
- 配置扫描周期:设置Period参数,建议最小300ms
- 可选功能配置:根据需要配置Mask、Debounce、ScanEnabled等
- 监控运行状态:通过Status和Value属性监控扫描状态和数值
注意事项
- 地址转换:JSON不支持16进制,Offset需要转换为10进制值
- 器件支持:SMC命令字需要确保对应器件支持
- 掩码使用:位读时掩码有效,块读时掩码无效可置0
- 防抖配置:防抖对象需要预先定义并确保可用
- 使能表达式:ScanEnabled表达式不能形成依赖环
- 状态监控:Status初始值为4,正常运行后应为0
- 禁用状态:当ScanEnabled=0时,Value将被置为NominalValue
性能建议
- 扫描周期:建议Period≥300ms,避免过度占用系统资源
- 批量配置:相同器件的多个Scanner可以考虑优化扫描策略
- 条件扫描:合理使用ScanEnabled降低无效扫描
- 防抖策略:根据信号特性选择合适的防抖算法