一键收集后cable_info文件未正确记录线缆上报信息问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

  • 单板类型:NA;

  • 软件版本:25.0930;

  • 涉及功能:BitIO写寄存器,扩展版,chip;

  • 触发条件:写寄存器C5。

    powershell
      busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/CpldChip/CpldChip_CpldRegister_0101 bmc.kepler.Chip.BitIO Write a{ss} uyuay 0 0xc5 1 8 1 1
  • 业务表现:预期寄存器值修改为1;实际寄存器值为0。

问题复现步骤

通过如下命令写寄存器C5:

shell
  busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/CpldChip/CpldChip_CpldRegister_0101 bmc.kepler.Chip.BitIO Write a{ss}uyuay 0 0xc5 1 8 1 1

返回值:

实际修改的bit3并未按照要求修改到对应值。

关键日志信息

sr文件代码配置如下: lua脚本代码如下:

framework.log日志如下:

framework.log日志中查找写bit位的关键字如下:

定位过程

framework.log日志查找bit位写的关键字和写的对象信息,对象找到了,为CpldChip_CpldRegister_0101,但是日志中无另外一个关键字"real write data",关键字"real write data"就代表按bit位写的方法被调用,目前看环境上实际并未按照bit的方法写寄存器,应该是按照block写寄存器,需要查看csr文件具体实现。

问题原因

涉及组件仓:vpd 组件查看Exu的csr文件Connector_EXU_1_01.sr,发现扩展板代码中对象定义里,通用chip的器件配置的属性值和CpldChip一样,配置的有问题。

解决方案

对于重复的配置对象,需要删除Chip_CpldRegister,只保留CpldChip_CpldRegister对象即可。且凡是用Chip_CpldRegister对象的,全部替换为CpldChip_CpldRegister。修改后重新编译hpm包升级后重新下发按位写命令,确认正常:

shell
  busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/CpldChip/CpldChip_CpldRegister_0101 bmc.kepler.Chip.BitIO Write a{ss}
  uyuay 0 0xc5 1 8 1 1