将csr文件打包为bin并烧写AC后无法自发现问题分析
更新时间: 2026/04/17
在Gitcode上查看源码

问题背景

  • 单板类型:自研板卡;
  • 软件版本:NA;
  • 涉及功能:板卡自发现,构建,bingo build;
  • 触发条件:将csr文件通过bingo工具转换为bin文件后,烧写到自研板卡的eeprom中。
  • 业务表现:预期硬件自发现加载,对应连接器的IdentifyMode为3,Id、AuxId为空;实际自发现加载失败。

问题复现步骤

  1. 将自研板卡对应sr文件转换为bin文件
shell
  bingo build -s -p ./14100513_00000055040139250004.sr --bin
  1. 将二进制bin文件转换为写入eeprom命令
shell
  root@de434d0b7a18:/home/workspace/csr# python3 bin2busctl.py 00000055040139250004.bin /bmc/kepler/Chip/Eeprom/Eeprom_IEU_010101 128
  busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_IEU_010101 bmc.kepler.Chip.BlockIO Write a{ss}uay 0 0 128 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x5A 0xA5 0x5A 0xA5 0x03 0x10 0x00 0x10 0x01 0x00 0x00 0x00 0x00 0x90 0x01 0x8A 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x06 0x08 0x30 0x30 0x30 0x30 0x30 0x30 0x35 0x35 0x30 0x34 0x30 0x31 0x33 0x39 0x32 0x35 0x30 0x30 0x30 0x34 0x00 0x00 0x00 0x00 0x75 0xB9 0xDA 0xC4 ....
  busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_IEU_010101 bmc.kepler.Chip.BlockIO Write a{ss}uay 0 7296 80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  1. 命令执行,将生成的命令全部复制到BMC环境中执行:
shell
  busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_IEU_010101 bmc.kepler.Chip.BlockIO Write…
  1. 重启BMC;
shell
  ipmcset -d reset
  1. 重启之后查看扩展组件;通过在BMC WEB->系统管理->系统信息->组件->IO扩展组件观察发现,对应的版本号,信息均可对应上生成bin文件的csr文件。
  2. 系统AC,AC后,无法自发现自研板卡,重新读取EEPROM的数据和重启BMC前输入的数据一致。

关键日志信息

hwcomponent组件日志:

定位过程

  1. 尝试把bingo build的-p参数改成-c后发现,bin文件构建报错
text
  root@de434d0b7a18:/home/workspace/csr# bingo build -s -c ./14100513_00000055040139250005.sr --bin
  ERROR: /home/workspace/csr 不是一个文件路径
  ERROR: 请查看日志信息
  1. 尝试将BCU中连接IEU hisport总线的connector删除掉,AC后可以正常的自发现,但是带来的后果是IEU上的PCIE设备无法正常进行通信;
  2. 尝试Connector中加载其他ID值,防止冲突,测试结果发现资源树上的id值是没问题的,但是loadstatus的值为4,还是无法加载成功;
text
  "Id": "<=/Accessor_BoardID.Value |> expr($1 == 2 ? '00000055040139250004' : '00000055040139250005')",
  1. 根据日志信息确认自研部件IEU是否符合天池规范,不符合天池规范的话CSR签名校验不同,可能会出问题;确认结果符合天池规范,CSR签名校验正常;
  2. 猜测CSR配置的问题,从代码上看首先连接器是挂在i2c_9下面的,其他Hisport下面不应该挂这个connector,但是目前看代码的hisport要通过connector的buses传下去,然后在Switch的CSR中PCIE的connector配置对应的Hisport总线;可以使用BMC Studio检查上面这种多bus配置同一个connector的错误,查看是否合理;

问题原因

多个bus链接了同一个connector。

解决方案

删除基础板中hisport_5,hisport_7,hisport_6,hisport_0连接connector_IEU连接器对象。同一个connector只有一个bus。具体代码如下:

PR链接

NA