CPU模组在线升级CPLD失败问题分析
更新时间: 2026/05/29
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:OpenUBMC 25.03;
- 涉及功能:CPLD,升级;
- 触发条件:WEB页面升级CPLD。
- 业务表现:预期升级成功;实际升级失败。
问题复现步骤
web页面升级签完名的CPU模组的CPLD升级包。
关键日志信息
查看app.log日志,确认报错如下:
定位过程
- 根据日志信息确认代码实现流程以及报错位置:
- id_list添加打印后发现,id_list实际为空:
- 确认硬件上,BMC通过LocalBus总线连接载板CPLD:
- GetChipIdCode正常执行了,但是返回结果为空。可能的情况有两种:CSR中配置的硬件链路不正确(例如JtagOverLocalBus_0/JtagOverLocalBus_1这种),或者硬件链路本身异常。
问题原因
使用这个命令直接调用GetChipIdCode接口检查结果: mdbctl call Cpld_1_010101 bmc.kepler.Chip.JtagTarget GetChipIdcode 0(将Cpld_xxxx换成对应的器件,发现硬件链路配置错误,需要修改代码。
解决方案
硬件链路的csr文件重新适配。