【SR升级】通过模拟加载的方式升级失败

// 此模板仅供参考,如果不适用可以修改

问题描述

通过模拟加载的方式加载板卡,然后升级CSR包,刷eeprom,报升级失败

环境信息

openubmc 2512 lts sp1

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

升级成功

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

答案内容由AI生成,仅供参考:

总结

模拟加载方式下的 CSR 升级失败,通常由写保护未关闭芯片锁冲突硬件总线通信异常配置文件错误导致。优先检查日志中具体的错误码(如 Hisport 写入错误 290)和签名验证状态;若为总线级硬件错误,建议尝试AC 断电重启。此外,升级包的 UID 匹配、CSR 版本兼容性以及正确的加载路径也是关键因素。若问题持续,请提供完整的升级日志以进一步定位。

点击此处查看详细分析解答

根据您提供的问题描述和知识库中的相关信息,以下是对“通过模拟加载方式升级CSR失败”问题的综合分析及建议排查方向。


问题背景

openUBMC 2512 LTS SP1 环境下,使用模拟加载方式(通常指通过设置 IdentifyMode=2 将板卡 CSR 文件加载到 EEPROM)进行 CSR 升级时,写入 EEPROM 失败,导致升级无法完成。

模拟加载方式的工作原理(来自知识库):

  • Connector 对象的 IdentifyMode=2 时,系统采用非天池加载方式,拼接 BomIdAuxId 来寻找下一级板卡的 CSR 文件(格式为 Bom_Id_AuxId.csr)。
  • 升级程序读取 CSR 文件,并依据 SRUpgrade 对象的配置(UID、存储芯片、写保护控制等)将数据写入指定 EEPROM。

常见失败原因及排查步骤

根据知识库中 CSR 升级介绍(文档 chunk 4)和实际案例日志(文档 chunk 2),CSR 升级失败的主要原因包括:

原因 说明 排查/解决方法
写保护未关闭 EEPROM 写保护仍处于开启状态,阻止写入 检查 SRUpgrade.WriteProtect 属性值是否为 0,确保关闭写保护。可参考日志中 write protect == 0 的确认信息。
芯片锁超时/占用 其他任务正在访问同一 EEPROM 芯片,导致写入互斥超时 等待其他任务完成,或增加超时时间。
数据校验失败 写入数据与回读数据不一致 重试写入(最多3次);若仍失败,检查 EEPROM 硬件状态。
配置文件错误 UID 不匹配、升级包文件损坏或路径错误 检查 SRUpgrade.UID 是否与 CSR 文件名(UID.bin)一致,确认文件完整且存在于预期路径。
硬件总线通信异常 Hisport 总线写入错误 日志中常见 chip write error: ... ioctl(HISPORT_CMD_WRITE) failed: Unknown error 290——这属于底层通信失败,可能与硬件连接、信号完整性有关。需检查 Hisport 总线状态或尝试重启 BMC/下电重启。
签名验证失败 EEPROM 中已有数据的签名校验不通过(尤其是从其他版本升级后) 检查日志中是否存在 Signature verification failed;若存在,需重新烧录或升级合法签名的 CSR 包。

典型的失败日志匹配

从知识库提供的实际案例(文档 chunk 2)中,可见如下错误模式:

[SRUpgrade] chip write error: BMC.Error.Unknow: ... write failed: hisport.lua:94: response error, ioctl(HISPORT_CMD_WRITE) failed: Unknown error 290, write protect: 0

该日志表明:

  • 写保护已关闭(write protect: 0),排除写保护问题。
  • 但 Hisport 总线写入返回未知错误 290,属于硬件级别的 I/O 失败,通常与总线时序、芯片响应或系统负载有关。

解决方法参考(来自知识库关系)

知识库中指出:

AC(Power Cycle) 能够解决某些升级失败问题——例如,在 CSR ALL Package 对 IEU Riser 升级失败的情况下,执行一次 AC 断电重启后,升级可以成功完成。

因此,尝试对设备进行一次完整的交流断电(AC Power Cycle) 是推荐的解决步骤之一,尤其当总线写入错误出现时。


其他可能的注意事项

  1. CSR 版本兼容性
    知识库中提到:硬件自发现组件 hwdiscovery 在 1.60.5 版本之前,格式版本限制为 3.10;之后版本采用新的版本比较逻辑。若升级前后的 CSR 格式版本不兼容,可能导致加载失败。建议确认升级包的 CSRVersion 与 BMC 固件的 hwdiscovery 版本匹配。

  2. 模拟加载方式下 SR 文件存放路径
    采用 IdentifyMode=2 时,系统会从 /opt/bmc/sr 或特定路径查找 CSR 文件。若文件未正确打包或路径不对,会报 open sr file failed: xxx。请确认升级包内的 .bin.sr 文件已放置于正确位置。

  3. 签名验证
    若升级包是合作伙伴自签名,而设备侧公钥未同步更新,会导致内层 ECC 签名校验失败。知识库建议固定一套 ECC 密钥对,并确保公钥部署到 /opt/bmc/trust/partner/device_desc_pubkey.bin


分步骤排查建议

  1. 查看完整升级日志
    重点关注以下关键词:

    • [SRUpgrade] 开头的步骤日志(确认进入 EEPROM 写入阶段)
    • write protect == 0(写保护状态)
    • chip write error(硬件写入错误)
    • Signature verification failed(签名验证失败)
  2. 确认 WriteProtect 状态
    使用 busctl 命令查询对应 SRUpgrade 对象的 WriteProtect 属性,确保值为 0

  3. 检查 UID 匹配
    对比日志中 uid: 00000001040302044499 与升级包内的 .bin 文件名是否一致(UID 应完全相同)。

  4. 执行 AC 断电重启
    若出现总线写入错误(如 Hisport 错误 290),先尝试完全断开电源再重新上电,观察升级过程是否通过。

  5. 验证硬件连接
    对于 IEU 板卡等,可检查 Hisport 总线是否被其他任务占用,或尝试在低负载环境下重试升级。

  6. 回退与重新打包
    若签名或版本不兼容,可参考知识库建议:先回退 BMC,使用 BMC Studio 重新生成 CSR 包,升级 CSR 包后再升级 BMC。


总结

模拟加载方式下的 CSR 升级失败,通常由写保护未关闭芯片锁冲突硬件总线通信异常配置文件错误导致。优先检查日志中具体的错误码(如 Hisport 写入错误 290)和签名验证状态;若为总线级硬件错误,建议尝试AC 断电重启。此外,升级包的 UID 匹配、CSR 版本兼容性以及正确的加载路径也是关键因素。若问题持续,请提供完整的升级日志以进一步定位。

HuaKunAT525B2_2187383AT525B2BALLGRTDTSET_20260611-1648.z01.txt (9 MB)
HuaKunAT525B2_2187383AT525B2BALLGRTDTSET_20260611-1648.zip (1.8 MB)

general_hardware ERROR: sr_upgrade.lua(122): [write_protect_proc] set write protect is [0] failed, error: kepler.hwproxy.ChipNotExistError: table: 0x5fc8865b0e60

CSR升级过程中,中间会通过框架接口解除eeprom的写保护再往里面写数据的。模拟加载的板卡在这一步时报错,提示对应的chip不存在,导致升级失败