将csr文件打包为bin并烧写 AC后无法自发现

求助:自研板卡自发现AC后失败。
目标:将csr文件通过bingo工具转换为bin文件后,烧写到自研板卡的eeprom中,实现硬件自发现加载,对应连接器的IdentifyMode为3,Id、AuxId为空。
步骤:

  1. 将自研板卡对应sr文件转换为bin文件:
bingo build -s  -p ./14100513_00000055040139250004.sr   --bin
  1. 将二进制bin文件转换为写入eeprom命令:
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. 将生成的busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_IEU_010101 bmc.kepler.Chip.BlockIO Write…命令全部复制到BMC环境中执行。
  2. BMC系统重启:
ipmcset -d reset
  1. 重启之后,通过在BMC WEB——系统管理——系统信息——组件——IO扩展组件观察发现,对应的版本号,信息均可对应上生成bin文件的csr文件。

问题:AC后,无法自发现自研板卡,重新读取EEPROM的数据和步骤三输入的数据一致。

把bingo build的-p参数改成-c,再试试

将-p改为-c后,无法正常的构建出bin文件。
具体报错:

root@de434d0b7a18:/home/workspace/csr# bingo build -s  -c ./14100513_00000055040139250005.sr   --bin
ERROR: /home/workspace/csr 不是一个文件路径
ERROR: 请查看日志信息

发现如果将BCU中连接IEU hisport总线的connector删除掉,AC后可以正常的自发现,但是带来的后果是IEU上的PCIE设备无法正常进行通信

        "I2c_9": {
            "Connectors": [
                "Connector_IEU_1"
            ]
        },
       将以下内容删除,只保留上面的I2c_9 connector
        "Hisport_5": {
            "Connectors": [
                "Connector_IEU_1"
            ]
        },
        "Hisport_7": {
            "Connectors": [
                "Connector_IEU_1"
            ]
        },
        "Hisport_6": {
            "Connectors": [
                "Connector_IEU_1"
            ]
        },
        "Hisport_0": {
            "Connectors": [
                "Connector_IEU_1"
            ]
        },

试了其他方案如下:

"Id": "<=/Accessor_BoardID.Value |> expr($1 == 2 ? '00000055040139250004' : '00000055040139250005')",

资源树上的id值是没问题的,但是loadstatus的值为4,还是无法加载成功。

@zybwh 可以帮忙看看 提供一下思路吗?

你的自研部件是IEU?符合天池规范?
看一下framework.log的对应connector加载日志,看看具体发生了啥

我预感是CSR签名校验出了问题,导致无法加载eeprom里面的CSR

有尝试用BMC Studio的CSR出包功能试试吗

理论上BCU上的IEU都是hisport总线,你配I2c_9会导致i2c链路无法访问吧

自研部件是类IEU(pcie switch),符合天池规范。可以怎么确定bingo build的csr签名校验是否有问题?还没有尝试使用bmc studio。我们的硬件设计是 IEU上的所有pcie槽都是通过hisport总线管理的,i2c_9是bmc用来管理管理ieu下cpld、eeprom的。

1970-01-01 08:00:29.098268 hwdiscovery NOTICE: hwcomponent.lua(242): [self-discovery] name: Connector_IEU_1_010101, position: 01010101, current: 1, previous: 0,uptime: 30 s
1970-01-01 08:00:29.859665 hwdiscovery NOTICE: hwcomponent.lua(242): [self-discovery] name: Connector_IEU_1_010101, position: 01010101, current: 1, previous: 0,uptime: 30 s

那感觉还是CSR配置的问题
首先连接器是挂在i2c_9下面的,其他Hisport下面不应该挂这个connector
反而是你hisport要通过connector的buses传下去,然后在Switch的CSR中PCIE的connector配置对应的Hisport总线

BMC Studio应该能检查上面这种多bus配置同一个connector的错误

1 个赞

我现在将hisport connector到IEU的配置从BCU中删除了。并且通过connector的buses传下去了。对应的配置如下:

        "Connector_IEU_1": {
            "Bom": "14100513",
            "Slot": 1,
            "Position": 1,
            "Presence": 1,
            "Id": "",
            "AuxId": "",
            "Buses": [
                "Hisport_5",
                "Hisport_6",
                "Hisport_7",
                "Hisport_0",
                "I2c_9",
                "JtagOverLocalBus_1"
            ],
            "SystemId": "${SystemId}",
            "ManagerId": "${ManagerId}",
            "ChassisId": "${ChassisId}",
            "SilkText": "J6013",
            "IdentifyMode": 3,
            "Type": "PCIeRiserCard"
        },

根据实际的硬件拓扑,hisport会经过i2c多路复用器PCA9545,所以switch相关的配置如下,实测该csr配置无法实现对pcie板卡的i2c带外管理:

    "ManagementTopology": {
        "Anchor": {
            "Buses": [
                "Hisport_5",
                "Hisport_6",
                "Hisport_7",
                "Hisport_0",
                "I2c_9",
                "JtagOverLocalBus_1"
            ]
        },
        "Hisport_5": {
            "Chips": [
                "Pca9545_IEU5"
            ]
        },
        "Hisport_6": {
            "Chips": [
                "Pca9545_IEU6"
            ]
        },
        "Hisport_7": {
            "Chips": [
                "Pca9545_IEU7"
            ]
        },
        "Hisport_0": {
            "Chips": [
                "Pca9545_IEU0"
            ]
        },
        "Pca9545_IEU7": {
            "Buses": [
                "I2cMux_9548Chan70",
                "I2cMux_9548Chan71",
                "I2cMux_9548Chan72",
                "I2cMux_9548Chan73",
                "I2cMux_9548Chan74"
            ]
        },
       ....
        "I2cMux_9548Chan70": {
            "Connectors": [
                "Connector_PCIE_10"
            ]
        },
        "I2cMux_9548Chan71": {
            "Connectors": [
                "Connector_PCIE_12"
            ]
        },
        "I2cMux_9548Chan72": {
            "Connectors": [
                "Connector_PCIE_14"
            ]
        },
        "I2cMux_9548Chan73": {
            "Connectors": [
                "Connector_PCIE_16"
            ]
        },
        "I2cMux_9548Chan74": {
            "Connectors": [
                "Connector_PCIE_18"
            ]
        },

PCIe的connector、I2cMux_9548Chan70的定义能贴一下吗?
还有就是在访问PCIe的器件时候,具体报错是什么?有没有hisport的错误码返回

嗯?你就问题解决了?是CSR配置问题吗

是的,问题已经解决了,不能有多个bus链接同一个connector。

1 个赞