如何使用SmcDfxInfo把数据写入到Scanner

从导出的日志看,已经\hwproxy\smc_dfx_info.txt看到获取了正确的data值,但是没有写入到Scanner之中,这样做的主要原因是6个psu,但是scanner只支持读4个数据。

还需要如何配置,当前实验了很多种Scanner_PS5Pres和Scanner_PS6Pres配置方法,改offset为无效,改Period为0,都没法读到正确的值,应该怎么修改Scanner;

    "Scanner_PS5Pres": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 603981056,
      "Size": 1,
      "Mask": 255,
      "Type": 0,
      "Value": 0,
      "Period": 0
    },

搜索了日志,里面有关的只有下面几条

1970-01-01 00:00:32.006596 hwproxy NOTICE: aggregate.lua(120): create SmcDfxInfo_PSU_0101 aggregate success, offset: 603981056, period: 2000, length: 6
1970-01-01 00:00:32.088299 hwproxy NOTICE: aggregate.lua(120): create SmcDfxInfo_PSU_0101 aggregate success, offset: 603981056, period: 2000, length: 6
1970-01-01 00:00:32.145073 hwproxy NOTICE: aggregate.lua(345): smc_dfx_info: SmcDfxInfo_PSU_0101, get smc version by opcode: 5
1970-01-01 00:00:32.145956 hwproxy NOTICE: aggregate.lua(278): aggregate: SmcDfxInfo_PSU_0101 start to get SMC dfx info
1970-01-01 00:00:35.413403 hwproxy NOTICE: aggregate.lua(403): aggregate: SmcDfxInfo_PSU_0101, version check success, expect version: 5, version by expr: nil, version by opcode: 5, version by dfx: 1
Name: SmcDfxInfo_PSU_0101
Offset: 0x24000500
Size: 6
Period: 2000ms
SmcVersion: 5
Config: 
	hw_name                                           	index	mask
	psu2_prsnt_n                                      	2	0xff
	psu4_prsnt_n                                      	4	0xff
	psu3_prsnt_n                                      	3	0xff
	psu5_prsnt_n                                      	5	0xff
	psu6_prsnt_n                                      	6	0xff
	psu1_prsnt_n                                      	1	0xff
Mapping: 
	scanner_name                                      	value
	Scanner_PS4Pres_0101                              	expr($psu4_prsnt_n)
	Scanner_PS6Pres_0101                              	expr($psu6_prsnt_n)
	Scanner_PS3Pres_0101                              	expr($psu3_prsnt_n)
	Scanner_PS2Pres_0101                              	expr($psu2_prsnt_n)
	Scanner_PS1Pres_0101                              	expr($psu1_prsnt_n)
	Scanner_PS5Pres_0101                              	expr($psu5_prsnt_n)
Context: 
	SmcVersion                                        	nil
VersionByOpcode: 5
TimeStamp: 36 s
Data: 
01 01 1D 10 1D 1D 
TimeStamp: 320 s
Data: 01 01 1D 10 1D 1D 
```bash

- 软件版本:[ OpenUBMC2512]

答案内容由AI生成,仅供参考:
:pushpin: 总结:关键修正点

问题 修正方案
Scanner 名称不匹配 改为 Scanner_PS5Pres_0101(与 Mapping 一致)
Period=0 改为 2000(与 DFX 周期一致)
错误配置 Offset/Size 删除这些字段,避免硬扫码
Scanner 不能读6个 :cross_mark: 错误认知,支持!由 SmcDfxInfo.Size=6 控制
6个PSU数据无法写入 :white_check_mark: 改为由 SmcDfxInfo 统一读,Scanner 仅作映射输出
点击此处查看详细分析解答

如何正确配置 SmcDfxInfo 将数据写入 Scanner:解决6个PSU中仅4个可读的问题

根据您提供的日志与配置信息,您已经成功通过 SmcDfxInfo_PSU_0101 聚合读取了6个电源(PSU1~PSU6)的状态数据(Data: 01 01 1D 10 1D 1D),但 Scanner_PS5PresScanner_PS6Pres 未能正常获取值。其根本原因并非硬件限制,而是 Scanner 与 SmcDfxInfo 的映射和配置逻辑错误


:magnifying_glass_tilted_left: 问题分析

:white_check_mark: 成功之处:

  • SmcDfxInfo_PSU_0101 已成功创建并读取数据(offset=0x24000500, size=6)。
  • 数据已正确返回:Data: 01 01 1D 10 1D 1D
    • 对应:PSU1=0x01(在位)、PSU2=0x01(在位)、PSU3=0x1D(不在位?)、PSU4=0x10、PSU5=0x1D、PSU6=0x1D
  • Mapping 字段已正确将 Scanner_PS5Pres_0101Scanner_PS6Pres_0101 映射到 $psu5_prsnt_n$psu6_prsnt_n

:cross_mark: 当前配置存在的问题:

"Scanner_PS5Pres": {
  "Chip": "#/Smc_ExpBoardSMC",
  "Offset": 603981056,   // ❌ 仍然单独读硬件!应避免
  "Size": 1,
  "Mask": 255,
  "Type": 0,
  "Value": 0,
  "Period": 0             // ❌ Period=0 表示不扫描 → Value 永远不会更新
}

关键错误点:

  1. Scanner 不应再独立配置硬件访问(Offset、Size等)
    一旦使用 SmcDfxInfo 聚合批量读取,所有相关 Scanner 必须完全依赖 DFX 同步机制,不能再单独从硬件读取。

  2. Period=0 会导致 Scanner 不参与周期性更新
    即使你在 SmcDfxInfo.Mapping 中映射了它,Scanner 的 Period 必须 > 0 才能触发值同步。

  3. Scanner 名称必须严格匹配 SmcDfxInfo.Mapping 中定义的 scanner_name
    日志中是:Scanner_PS5Pres_0101,但您的实际对象名是 Scanner_PS5Pres —— :cross_mark: 不匹配!


:white_check_mark: 正确解决方案:基于 SmcDfxInfo 的批量数据分发机制

:white_check_mark: 核心原理(摘自官方文档)

当同时配置了 ScannerSmcDfxInfo 对象时,BMC 会优先从 SmcDfxInfo 中获取扫描数据。
如果该 ScannerSmcDfxInfoMapping 中有定义,则它的值将从聚合数据中按映射表达式同步,而不再直接访问硬件。

—— 来源:[扩展板CSR配置指导书 - 搜索结果 #1]


:white_check_mark: 配置修正步骤

:white_check_mark: 第一步:确保 SmcDfxInfo 配置正确(您已基本完成)

"SmcDfxInfo_PSU_0101": {
  "Chip": "#/Smc_ExpBoardSMC",
  "Offset": 603981056,
  "Size": 6,
  "Period": 2000,
  "SmcVersion": 5,
  "Config": [
    { "hw_name": "psu1_prsnt_n", "index": 0, "mask": 0xFF },
    { "hw_name": "psu2_prsnt_n", "index": 1, "mask": 0xFF },
    { "hw_name": "psu3_prsnt_n", "index": 2, "mask": 0xFF },
    { "hw_name": "psu4_prsnt_n", "index": 3, "mask": 0xFF },
    { "hw_name": "psu5_prsnt_n", "index": 4, "mask": 0xFF },
    { "hw_name": "psu6_prsnt_n", "index": 5, "mask": 0xFF }
  ],
  "Mapping": [
    { "scanner_name": "Scanner_PS1Pres_0101", "value": "expr($psu1_prsnt_n)" },
    { "scanner_name": "Scanner_PS2Pres_0101", "value": "expr($psu2_prsnt_n)" },
    { "scanner_name": "Scanner_PS3Pres_0101", "value": "expr($psu3_prsnt_n)" },
    { "scanner_name": "Scanner_PS4Pres_0101", "value": "expr($psu4_prsnt_n)" },
    { "scanner_name": "Scanner_PS5Pres_0101", "value": "expr($psu5_prsnt_n)" },
    { "scanner_name": "Scanner_PS6Pres_0101", "value": "expr($psu6_prsnt_n)" }
  ]
}

:white_check_mark: 第二步:正确配置 Scanner(关键!)

:fire: 重点:Scanner 必须满足以下条件才能从 SmcDfxInfo 获取数据

  • 名称完全一致(含 _0101 后缀)
  • Period > 0(建议与 DFX 一致)
  • 不强制要求配置 Offset 等字段(可省略或留空)

:white_check_mark: 推荐配置:

"Scanner_PS5Pres_0101": {
  "Chip": "#/Smc_ExpBoardSMC",
  "Period": 2000,            // ✅ 必须 > 0!建议与 SmcDfxInfo 一致
  "Value": 0                 // 初始化值
  // ❌ 不要配置 Offset, Size, Type, Mask 等字段,避免单独读取硬件
}
"Scanner_PS6Pres_0101": {
  "Chip": "#/Smc_ExpBoardSMC",
  "Period": 2000,
  "Value": 0
}

:warning: 解释:

  • hwproxy 在启动时发现该 Scanner 在某个 SmcDfxInfoMapping 列表中,就会自动将其标记为“由 DFX 提供数据”
  • 它不会执行自己的 Offset 读取(即使有),而是等待 SmcDfxInfo 每2秒刷新后,按表达式 expr($psu5_prsnt_n) 从第5字节取值更新 Value

:test_tube: 验证方法

1. 检查资源树是否更新

busctl --user tree bmc.kepler.hwproxy

查找路径下是否存在:

/org/openbmc/Scanner_PS5Pres_0101
/org/openbmc/Scanner_PS6Pres_0101

查看其 Value 是否随日志中 Data 变化而更新(如从 1D01)。

2. 查看 smc_dfx_info.txt 日志

确认以下格式输出:

Mapping:
  Scanner_PS5Pres_0101 → expr($psu5_prsnt_n) → 使用第4个字节(index=4)

且后续有类似日志:

hwproxy NOTICE: aggregate.lua(500): SmcDfxInfo_PSU_0101 updated Scanner_PS5Pres_0101 = 0x1D

若无此日志 → 表示名称未匹配或 Period=0 导致未注册为同步目标。


:pushpin: 总结:关键修正点

问题 修正方案
Scanner 名称不匹配 改为 Scanner_PS5Pres_0101(与 Mapping 一致)
Period=0 改为 2000(与 DFX 周期一致)
错误配置 Offset/Size 删除这些字段,避免硬扫码
Scanner 不能读6个 :cross_mark: 错误认知,支持!由 SmcDfxInfo.Size=6 控制
6个PSU数据无法写入 :white_check_mark: 改为由 SmcDfxInfo 统一读,Scanner 仅作映射输出

:blue_book: 附加建议

:white_check_mark: 命名规范建议

统一使用格式:Scanner_<功能>_<槽位>_<版本>
例如:

  • Scanner_PS1Pres_0101
  • Scanner_FanSpeed_0103

便于与 SmcDfxInfo.Mapping 精确匹配。

:white_check_mark: 日志调试建议

启用 hwproxy 详细日志:

export HWPROXY_LOG_LEVEL=DEBUG
systemctl restart hwproxy

观察 aggregate.lua 是否打印:

  • updated scanner [name] = [value]

:white_check_mark: 按照上述配置修改后,Scanner_PS5Pres_0101Scanner_PS6Pres_0101 将能正确从 SmcDfxInfo 的第5、第6字节获取值,彻底解决“只能读4个PSU”的限制。

修改了一下SmcVersion,增加了"Context"配置了 “SmcVersion”: “expr(100)”,现在是这样的,

    "SmcDfxInfo_PSU": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 603981056,
      "Size": 6,
      "Period": 2000,
      "SmcVersion": 100,
      "Config": {
        "1": {"psu4_prsnt_n": 255},
        "2": {"psu5_prsnt_n": 255},
        "3": {"psu6_prsnt_n": 255},
        "4": {"psu1_prsnt_n": 255},
        "5": {"psu2_prsnt_n": 255},
        "6": {"psu3_prsnt_n": 255}
      },
      "Mapping": {
        "Scanner_PS1PresNew": {"Value": "expr($psu1_prsnt_n)"},
        "Scanner_PS2PresNew": {"Value": "expr($psu2_prsnt_n)"},
        "Scanner_PS3PresNew": {"Value": "expr($psu3_prsnt_n)"},
        "Scanner_PS4PresNew": {"Value": "expr($psu4_prsnt_n)"},
        "Scanner_PS5PresNew": {"Value": "expr($psu5_prsnt_n)"},
        "Scanner_PS6PresNew": {"Value": "expr($psu6_prsnt_n)"}
      },
      "Context": {
        "SmcVersion": "expr(100)"
      }
    },
"Scanner_PS1PresNew": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 0,
      "Size": 1,
      "Mask": 255,
      "Type": 0,
      "Period": 2000,
      "Debounce": "None",
      "Value": 255
    },
    "Scanner_PS2PresNew": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 0,
      "Size": 1,
      "Mask": 255,
      "Type": 0,
      "Value": 0,
      "Period": 2000
    },
    "Scanner_PS3PresNew": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 0,
      "Size": 1,
      "Mask": 255,
      "Type": 0,
      "Value": 0,
      "Period": 2000
    },
    "Scanner_PS4PresNew": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 0,
      "Size": 1,
      "Mask": 255,
      "Type": 0,
      "Value": 0,
      "Period": 2000
    },
    "Scanner_PS5PresNew": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 0,
      "Size": 1,
      "Mask": 255,
      "Type": 0,
      "Value": 0,
      "Period": 2000
    },
    "Scanner_PS6PresNew": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 0,
      "Size": 1,
      "Mask": 255,
      "Type": 0,
      "Value": 0,
      "Period": 2000
    },

目前看debug打印里面有SmcDfxInfo_PSU的日志,但是一次update了6个Scanner,而且拷贝的同一个值1D,不知道是什么原因,上面的配置偏移的1,2,3对应的psu的4,5,6这里没问题,本身是这样设计的,不是错误;

970-01-04 23:09:39.358500 hwproxy DEBUG: work_objects.lua(74): Chip Eeprom_PsuChip2_0101 starts to execute the block_read function.
1970-01-04 23:09:39.373134 hwproxy DEBUG: object.lua(84): set property traceback: sender[bmc.kepler.hwproxy], path[/bmc/kepler/Accessor/Accessor_LogicVersionID_0101], interface[bmc.kepler.Accessor], name[Status], value[0]->[""], traceback[stack traceback:  ./opt/bmc/libmc/lualib/traceback/object.lua:49: in function <./opt/bmc/libmc/lualib/traceback/object.lua:45>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/logging.lua:109: in function 'format_msg'  ./opt/bmc/libmc/lualib/mc/logging.lua:253: in function 'LOG_MSG'  ./opt/bmc/libmc/lualib/mc/logging.lua:465: in function 'log_easy'  ./opt/bmc/libmc/lualib/mc/logging.lua:469: in function 'debug_easy'  ./opt/bmc/libmc/lualib/traceback/object.lua:84: in function 'before_set_value'  ./opt/bmc/libmc/lualib/traceback/object.lua:89: in function '__newindex'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:741: in function 'handle_resource_success'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:803: in function 'update_resource'  .../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:487: in function 'update_resource'  ./opt/bmc/apps/hwproxy/service/main.lua:47: in function 'f'  ./opt/bmc/apps/hwproxy/service/main.lua:91: in function <./opt/bmc/apps/hwproxy/service/main.lua:89>  [builtin#21]: at 0xffff8ceedd28  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/context.lua:212: in function 'with_context'  ./opt/bmc/libmc/lualib/mc/app_preloader.lua:97: in function ''  /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>]
1970-01-04 23:09:39.374560 hwproxy DEBUG: object.lua(84): set property traceback: sender[bmc.kepler.hwproxy], path[/bmc/kepler/Accessor/Accessor_LogicVersionID_0101], interface[bmc.kepler.Accessor], name[Value], value[5]->[""], traceback[stack traceback:  ./opt/bmc/libmc/lualib/traceback/object.lua:49: in function <./opt/bmc/libmc/lualib/traceback/object.lua:45>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/logging.lua:109: in function 'format_msg'  ./opt/bmc/libmc/lualib/mc/logging.lua:253: in function 'LOG_MSG'  ./opt/bmc/libmc/lualib/mc/logging.lua:465: in function 'log_easy'  ./opt/bmc/libmc/lualib/mc/logging.lua:469: in function 'debug_easy'  ./opt/bmc/libmc/lualib/traceback/object.lua:84: in function 'before_set_value'  ./opt/bmc/libmc/lualib/traceback/object.lua:89: in function '__newindex'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:743: in function 'handle_resource_success'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:803: in function 'update_resource'  .../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:487: in function 'update_resource'  ./opt/bmc/apps/hwproxy/service/main.lua:47: in function 'f'  ./opt/bmc/apps/hwproxy/service/main.lua:91: in function <./opt/bmc/apps/hwproxy/service/main.lua:89>  [builtin#21]: at 0xffff8ceedd28  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/context.lua:212: in function 'with_context'  ./opt/bmc/libmc/lualib/mc/app_preloader.lua:97: in function ''  /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>]
1970-01-04 23:09:39.376176 hwproxy DEBUG: object.lua(84): set property traceback: sender[bmc.kepler.hwproxy], path[/bmc/kepler/Accessor/Accessor_LogicVersionID_0101], interface[bmc.kepler.Accessor], name[Value], value[5]->[""], traceback[stack traceback:  ./opt/bmc/libmc/lualib/traceback/object.lua:49: in function <./opt/bmc/libmc/lualib/traceback/object.lua:45>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/logging.lua:109: in function 'format_msg'  ./opt/bmc/libmc/lualib/mc/logging.lua:253: in function 'LOG_MSG'  ./opt/bmc/libmc/lualib/mc/logging.lua:465: in function 'log_easy'  ./opt/bmc/libmc/lualib/mc/logging.lua:469: in function 'debug_easy'  ./opt/bmc/libmc/lualib/traceback/object.lua:84: in function 'before_set_value'  ./opt/bmc/libmc/lualib/traceback/object.lua:89: in function '__newindex'  .../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:223: in function <.../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:215>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/signal.lua:93: in function 'run_slot'  ...  ./opt/bmc/libmc/lualib/sd_bus/harbor_client.lua:303: in function <./opt/bmc/libmc/lualib/sd_bus/harbor_client.lua:301>  [C]: in function 'xpcall'  ./opt/bmc/libmc/lualib/mc/error/common.lua:46: in function 'safe_call'  ./opt/bmc/libmc/lualib/sd_bus/harbor_client.lua:395: in function 'harbor_shm_call'  ./opt/bmc/libmc/lualib/dbus/nonblock/init.lua:264: in function <./opt/bmc/libmc/lualib/dbus/nonblock/init.lua:251>  [builtin#21]: at 0xffff8ceedd28  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/context.lua:212: in function 'with_context'  ./opt/bmc/libmc/lualib/mc/app_preloader.lua:97: in function ''  /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>]
1970-01-04 23:09:39.534438 hwproxy DEBUG: aggregate.lua(411): aggregate: SmcDfxInfo_PSU_0101 get result: 01 01 1D 10 1D 1D , self.error: nil
1970-01-04 23:09:39.535028 hwproxy DEBUG: aggregate.lua(224): aggregate: SmcDfxInfo_PSU_0101 update scanner: Scanner_PS5PresNew_0101, Scanner_PS1PresNew_0101, Scanner_PS3PresNew_0101, Scanner_PS2PresNew_0101, Scanner_PS6PresNew_0101, Scanner_PS4PresNew_0101, result: 01 , error: nil
1970-01-04 23:09:39.535890 hwproxy DEBUG: aggregate.lua(224): aggregate: SmcDfxInfo_PSU_0101 update scanner: Scanner_PS5PresNew_0101, Scanner_PS1PresNew_0101, Scanner_PS3PresNew_0101, Scanner_PS2PresNew_0101, Scanner_PS6PresNew_0101, Scanner_PS4PresNew_0101, result: 01 , error: nil
1970-01-04 23:09:39.536715 hwproxy DEBUG: aggregate.lua(224): aggregate: SmcDfxInfo_PSU_0101 update scanner: Scanner_PS5PresNew_0101, Scanner_PS1PresNew_0101, Scanner_PS3PresNew_0101, Scanner_PS2PresNew_0101, Scanner_PS6PresNew_0101, Scanner_PS4PresNew_0101, result: 01 , error: nil
1970-01-04 23:09:39.537544 hwproxy DEBUG: aggregate.lua(224): aggregate: SmcDfxInfo_PSU_0101 update scanner: Scanner_PS5PresNew_0101, Scanner_PS1PresNew_0101, Scanner_PS3PresNew_0101, Scanner_PS2PresNew_0101, Scanner_PS6PresNew_0101, Scanner_PS4PresNew_0101, result: 01 , error: nil
1970-01-04 23:09:39.538398 hwproxy DEBUG: aggregate.lua(224): aggregate: SmcDfxInfo_PSU_0101 update scanner: Scanner_PS5PresNew_0101, Scanner_PS1PresNew_0101, Scanner_PS3PresNew_0101, Scanner_PS2PresNew_0101, Scanner_PS6PresNew_0101, Scanner_PS4PresNew_0101, result: 01 , error: nil
1970-01-04 23:09:39.539229 hwproxy DEBUG: aggregate.lua(224): aggregate: SmcDfxInfo_PSU_0101 update scanner: Scanner_PS5PresNew_0101, Scanner_PS1PresNew_0101, Scanner_PS3PresNew_0101, Scanner_PS2PresNew_0101, Scanner_PS6PresNew_0101, Scanner_PS4PresNew_0101, result: 01 , error: nil
1970-01-04 23:09:39.553688 hwproxy DEBUG: init.lua(107): int plugins chip read cmd151   len3
1970-01-04 23:09:39.555125 hwproxy DEBUG: cont.lua(67): go here new_val 0 dbd_val 0 cont_num 40 unstable_val 0 unstable_cnt 0
1970-01-04 23:09:39.581800 hwproxy DEBUG: object.lua(84): set property traceback: sender[bmc.kepler.hwproxy], path[/bmc/kepler/Accessor/Accessor_LogicVersionID_0101], interface[bmc.kepler.Accessor], name[Status], value[0]->[""], traceback[stack traceback:  ./opt/bmc/libmc/lualib/traceback/object.lua:49: in function <./opt/bmc/libmc/lualib/traceback/object.lua:45>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/logging.lua:109: in function 'format_msg'  ./opt/bmc/libmc/lualib/mc/logging.lua:253: in function 'LOG_MSG'  ./opt/bmc/libmc/lualib/mc/logging.lua:465: in function 'log_easy'  ./opt/bmc/libmc/lualib/mc/logging.lua:469: in function 'debug_easy'  ./opt/bmc/libmc/lualib/traceback/object.lua:84: in function 'before_set_value'  ./opt/bmc/libmc/lualib/traceback/object.lua:89: in function '__newindex'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:741: in function 'handle_resource_success'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:803: in function 'update_resource'  .../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:487: in function 'update_resource'  ./opt/bmc/apps/hwproxy/service/main.lua:47: in function 'f'  ./opt/bmc/apps/hwproxy/service/main.lua:91: in function <./opt/bmc/apps/hwproxy/service/main.lua:89>  [builtin#21]: at 0xffff8ceedd28  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/context.lua:212: in function 'with_context'  ./opt/bmc/libmc/lualib/mc/app_preloader.lua:97: in function ''  /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>]
1970-01-04 23:09:39.583393 hwproxy DEBUG: object.lua(84): set property traceback: sender[bmc.kepler.hwproxy], path[/bmc/kepler/Accessor/Accessor_LogicVersionID_0101], interface[bmc.kepler.Accessor], name[Value], value[5]->[""], traceback[stack traceback:  ./opt/bmc/libmc/lualib/traceback/object.lua:49: in function <./opt/bmc/libmc/lualib/traceback/object.lua:45>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/logging.lua:109: in function 'format_msg'  ./opt/bmc/libmc/lualib/mc/logging.lua:253: in function 'LOG_MSG'  ./opt/bmc/libmc/lualib/mc/logging.lua:465: in function 'log_easy'  ./opt/bmc/libmc/lualib/mc/logging.lua:469: in function 'debug_easy'  ./opt/bmc/libmc/lualib/traceback/object.lua:84: in function 'before_set_value'  ./opt/bmc/libmc/lualib/traceback/object.lua:89: in function '__newindex'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:743: in function 'handle_resource_success'  ./opt/bmc/apps/hwproxy/lualib/chip.lua:803: in function 'update_resource'  .../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:487: in function 'update_resource'  ./opt/bmc/apps/hwproxy/service/main.lua:47: in function 'f'  ./opt/bmc/apps/hwproxy/service/main.lua:91: in function <./opt/bmc/apps/hwproxy/service/main.lua:89>  [builtin#21]: at 0xffff8ceedd28  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/context.lua:212: in function 'with_context'  ./opt/bmc/libmc/lualib/mc/app_preloader.lua:97: in function ''  /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>]
1970-01-04 23:09:39.587003 hwproxy DEBUG: object.lua(84): set property traceback: sender[bmc.kepler.hwproxy], path[/bmc/kepler/Accessor/Accessor_LogicVersionID_0101], interface[bmc.kepler.Accessor], name[Value], value[5]->[""], traceback[stack traceback:  ./opt/bmc/libmc/lualib/traceback/object.lua:49: in function <./opt/bmc/libmc/lualib/traceback/object.lua:45>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/logging.lua:109: in function 'format_msg'  ./opt/bmc/libmc/lualib/mc/logging.lua:253: in function 'LOG_MSG'  ./opt/bmc/libmc/lualib/mc/logging.lua:465: in function 'log_easy'  ./opt/bmc/libmc/lualib/mc/logging.lua:469: in function 'debug_easy'  ./opt/bmc/libmc/lualib/traceback/object.lua:84: in function 'before_set_value'  ./opt/bmc/libmc/lualib/traceback/object.lua:89: in function '__newindex'  .../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:223: in function <.../bmc/apps/hwproxy/lualib/hwproxy_objects/app_objects.lua:215>  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/signal.lua:93: in function 'run_slot'  ...  ./opt/bmc/libmc/lualib/sd_bus/harbor_client.lua:303: in function <./opt/bmc/libmc/lualib/sd_bus/harbor_client.lua:301>  [C]: in function 'xpcall'  ./opt/bmc/libmc/lualib/mc/error/common.lua:46: in function 'safe_call'  ./opt/bmc/libmc/lualib/sd_bus/harbor_client.lua:395: in function 'harbor_shm_call'  ./opt/bmc/libmc/lualib/dbus/nonblock/init.lua:264: in function <./opt/bmc/libmc/lualib/dbus/nonblock/init.lua:251>  [builtin#21]: at 0xffff8ceedd28  [C]: in function 'pcall'  ./opt/bmc/libmc/lualib/mc/context.lua:212: in function 'with_context'  ./opt/bmc/libmc/lualib/mc/app_preloader.lua:97: in function ''  /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>]
1970-01-04 23:09:39.982387 hwproxy DEBUG: init.lua(107): int plugins chip read cmd151   len3

没有配置Context的时候debug日志里面没有SmcDfxInfo_PSU对象的日志;
下面是 smc_dfx_info.txt日志

Name: SmcDfxInfo_PSU_0101
Offset: 0x24000500
Size: 6
Period: 2000ms
SmcVersion: 100
Config: 
	hw_name                                           	index	mask
	psu2_prsnt_n                                      	5	0xff
	psu5_prsnt_n                                      	2	0xff
	psu6_prsnt_n                                      	3	0xff
	psu1_prsnt_n                                      	4	0xff
	psu4_prsnt_n                                      	1	0xff
	psu3_prsnt_n                                      	6	0xff
Mapping: 
	scanner_name                                      	value
	Scanner_PS5PresNew_0101                           	expr($psu5_prsnt_n)
	Scanner_PS2PresNew_0101                           	expr($psu2_prsnt_n)
	Scanner_PS3PresNew_0101                           	expr($psu3_prsnt_n)
	Scanner_PS1PresNew_0101                           	expr($psu1_prsnt_n)
	Scanner_PS6PresNew_0101                           	expr($psu6_prsnt_n)
	Scanner_PS4PresNew_0101                           	expr($psu4_prsnt_n)
Context: 
	SmcVersion                                        	100
VersionByOpcode: 5
TimeStamp: 37 s
Data: 
01 01 1D 10 1D 1D 
TimeStamp: 320 s
Data: 01 01 1D 10 1D 1D 

Scanner的Chip、Offset、Size、Mask、Type配置一样的场景下Scanner对象会合并,即哪个对象先上树,其他Scanner均被合并到这个Scanner上,所以Scanner显示同一个值。
正常来说Scanner的这几个属性不会全部相同的。