920s升级载板cpld固件失败

版本:2509

cpld已签名,web界面更新失败:

EXU的UID已更改:

app.log日志部分如下:

file_transfer.lua(141): start to move file [KP920_009_TD4_6_8_20260729_sign.hpm] from tmp to shm
1970-01-01 00:03:10.715856 firmware_mgmt NOTICE: file_transfer.lua(146): move_file_s ok:true, err:0
1970-01-01 00:03:10.820240 firmware_mgmt NOTICE: validate_sign.lua(195): verify signature successfully
1970-01-01 00:03:10.821605 firmware_mgmt NOTICE: action.lua(37): Validate signature successfully
1970-01-01 00:03:10.823999 firmware_mgmt NOTICE: hpm_package.lua(757): ManufacturerValidateEnabled is false, there is no need to validate manufacture_id.
1970-01-01 00:03:11.016741 firmware_mgmt NOTICE: hpm_package.lua(562): parse cfg file successfully, Version:1.0 FileNum:2
1970-01-01 00:03:11.022324 firmware_mgmt NOTICE: hpm_package.lua(450): get obj table: 0x27e2cc2e1f30 for Id=24_1
1970-01-01 00:03:11.023570 firmware_mgmt NOTICE: hpm_package.lua(457): get obj table: 0x27e2cc2e1f30 for Id=24_1
1970-01-01 00:03:11.024696 firmware_mgmt NOTICE: hpm_package.lua(468): get obj table: 0x27e2cc2e1f30 for Id=24_1
1970-01-01 00:03:11.026702 firmware_mgmt NOTICE: hpm_package.lua(415): System product info:ProductId(0), ProductVendorID(0xffffffff), ProductUniqueID(0x0207be00)
1970-01-01 00:03:11.027866 firmware_mgmt NOTICE: hpm_package.lua(329): check product id successfully
1970-01-01 00:03:11.075846 firmware_mgmt NOTICE: hpm_package.lua(397): cfg-BoardIDList(65535) match all devices
1970-01-01 00:03:11.083726 firmware_mgmt NOTICE: hpm_package.lua(443): get obj table: 0x27e2cc2e1f30 for Id=24_1
1970-01-01 00:03:11.084817 firmware_mgmt NOTICE: hpm_package.lua(494): hard_revision:0, soft_revision:0
1970-01-01 00:03:11.085733 firmware_mgmt NOTICE: hpm_package.lua(507): revision number check successfully. Target revision=(0, 0) and hpm revision=nil
1970-01-01 00:03:11.185455 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 0, State: Running] successfully
1970-01-01 00:03:11.205848 firmware_mgmt NOTICE: action.lua(47): Parse hpm package successfully
1970-01-01 00:03:11.238569 firmware_mgmt NOTICE: task_instance.lua(217): upgrade_task file_name=KP920_009_TD4_6_8_20260729_sign.hpm, FirmwareType=BP_Cpld, fw_num=1, UniqueIDList=nil, sys_id=1, info_key=1_BP_Cpld_3112329121
1970-01-01 00:03:11.305859 firmware_mgmt NOTICE: task_id_mgmt.lua(42): del serial task id(1231220490) successfully
1970-01-01 00:03:11.306323 firmware_mgmt NOTICE: task_instance.lua(100): destroy task info(id:1231220490) successfully
1970-01-01 00:03:11.336204 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 0, State: Running] successfully
1970-01-01 00:03:11.336850 firmware_mgmt NOTICE: info_mgmt.lua(82): create_info: info_key=1_BP_Cpld_3112329121, FirmwareType=BP_Cpld, task_id=3112329121, upg_fw_num=1
1970-01-01 00:03:11.439027 firmware_mgmt NOTICE: task_instance.lua(662): firmware(info key:1_BP_Cpld_3112329121) do upgrade stages
1970-01-01 00:03:11.438219 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 0, State: Running] successfully
1970-01-01 00:03:11.439584 firmware_mgmt NOTICE: task_instance.lua(295): public initialize action start
1970-01-01 00:03:11.439990 firmware_mgmt NOTICE: hpm_package.lua(479): get obj table: 0x27e2cc2e1f30 for Id=24_1
1970-01-01 00:03:11.440459 firmware_mgmt NOTICE: hpm_package.lua(519): now uptime = 192, firmware init time = 0
1970-01-01 00:03:11.440998 firmware_mgmt NOTICE: hpm_package.lua(450): get obj table: 0x27e2cc2e1f30 for Id=24_1
1970-01-01 00:03:11.441355 firmware_mgmt NOTICE: task_instance.lua(300): public initialize action end
1970-01-01 00:03:11.441769 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_BP_Cpld_3112329121) upgrade set_stage: INITIALIZE -> DIFF_PREPARE, 5
1970-01-01 00:03:11.540869 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 5, State: Starting] successfully
1970-01-01 00:03:11.554750 general_hardware NOTICE: upgrade_subject.lua(82): [on_upgrade_prepare] firmware_type:BP_Cpld cur_firmware_type:BP_Cpld
1970-01-01 00:03:11.555333 general_hardware NOTICE: upgrade_subject.lua(90): [on_upgrade_prepare] start upgrade BP_Cpld
1970-01-01 00:03:11.555663 general_hardware NOTICE: signal.lua(116): [cpld]Start the system[1] BP_Cpld upgrade prepare phase
1970-01-01 00:03:11.652285 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 7, State: Running] successfully
1970-01-01 00:03:11.659683 general_hardware NOTICE: upgrade_subject.lua(97): [on_upgrade_prepare] end upgrade BP_Cpld
1970-01-01 00:03:11.668522 general_hardware NOTICE: fw_upgrade.lua(136): [cpld]get cpld_valid :nil
1970-01-01 00:03:11.671945 general_hardware NOTICE: fw_cfgs.lua(69): check fw uid(00000001020302031825) id(255) id_ex(4294967295) exist success
1970-01-01 00:03:12.044669 general_hardware NOTICE: fw_init.lua(194): get fw version 0.06
1970-01-01 00:03:12.045463 general_hardware NOTICE: fw_upgrade.lua(94): [cpld]get verion[0.06]
1970-01-01 00:03:12.049738 firmware_mgmt NOTICE: info_mgmt.lua(393): set FirmwareMode to Single
1970-01-01 00:03:12.050297 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_BP_Cpld_3112329121) upgrade set_stage: DIFF_PREPARE -> COMMON_PREPARE, 7
1970-01-01 00:03:12.137202 firmware_mgmt NOTICE: action.lua(86): public prepare action start
1970-01-01 00:03:12.183093 firmware_mgmt NOTICE: [worker](9): start action in worker
1970-01-01 00:03:12.201606 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 7, State: Running] successfully
1970-01-01 00:03:12.259497 firmware_mgmt NOTICE: [worker](14): execute before action script successfully
1970-01-01 00:03:12.443461 pcie_device ERROR: topo_reader.lua(159): [BizTopoMonitor] read topo info fail, position=010101
1970-01-01 00:03:12.443893 pcie_device ERROR: topo_monitor.lua(704): [BizTopoMonitor] Read topo info failed.
1970-01-01 00:03:13.175286 firmware_mgmt NOTICE: action.lua(92): public prepare action end
1970-01-01 00:03:13.175820 firmware_mgmt NOTICE: task_instance.lua(673): upgrade FirmwareMode Single
1970-01-01 00:03:13.277134 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 7, State: Running] successfully
1970-01-01 00:03:13.277539 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_BP_Cpld_3112329121) upgrade set_stage: COMMON_PREPARE -> PROCESS, 15
1970-01-01 00:03:13.378112 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 15, State: Running] successfully
1970-01-01 00:03:13.378728 firmware_mgmt NOTICE: task_instance.lua(325): sys_id=1, fw_type=BP_Cpld, filename=/dev/shm/upgrade/3112329121/Firmware1
1970-01-01 00:03:13.386168 general_hardware NOTICE: upgrade_subject.lua(109): [on_upgrade_process] start upgrade BP_Cpld
1970-01-01 00:03:13.388211 general_hardware NOTICE: signal.lua(139): [cpld]Start the system[1] BP_Cpld upgrade process phase
1970-01-01 00:03:13.499759 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 47, State: Running] successfully
1970-01-01 00:03:13.502112 general_hardware NOTICE: upgrade_subject.lua(116): [on_upgrade_process] end upgrade BP_Cpld
1970-01-01 00:03:13.503473 general_hardware NOTICE: fw_cfgs.lua(69): check fw uid(00000001020302031825) id(255) id_ex(4294967295) exist success
1970-01-01 00:03:13.504635 general_hardware NOTICE: process.lua(43): cpld fw matched, system_id = 1, fw.uid = 00000001020302031825, fw.csr.Name = EXU_CPLD
1970-01-01 00:03:13.626311 general_hardware NOTICE: process.lua(463): [cpld]get cpld packages successful
1970-01-01 00:03:13.626734 general_hardware NOTICE: process.lua(198): [cpld]_____load_cpld_single_____
1970-01-01 00:03:13.627045 general_hardware NOTICE: process.lua(61): load file[0x13bedc]
1970-01-01 00:03:14.365910 pcie_device ERROR: device_service.lua(483): [DeviceService] Can not find matching PCIeAddrinfo, PCIeDevice position=00 DeviceType=26 SlotID=1
1970-01-01 00:03:14.825129 general_hardware ERROR: process.lua(84): [cpld]block_write fail:BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:196: ./opt/bmc/libmc/lualib/sd_bus/object.lua:314: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ...bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:117: chip: Cpld_1_0101, bus: JtagOverLocalBus_1, write failed: jtag_base.lua:107: cpld file write failed:response error, ioctl(CPLD_CMD_LOAD_CPLD) failed: -1, component_id:1, product_id:16
1970-01-01 00:03:14.831491 firmware_mgmt ERROR: control.lua(201): Upgrade BP_Cpld process failed, ret=-1
1970-01-01 00:03:14.832060 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_BP_Cpld_3112329121) upgrade set_stage: PROCESS -> COMMON_FINISH, 95
1970-01-01 00:03:14.884854 firmware_mgmt NOTICE: task_instance.lua(266): wait_msg_result stage=COMMON_FINISH, timeout=7200S, loop=14
1970-01-01 00:03:14.885478 firmware_mgmt NOTICE: info_mgmt.lua(350): info_key(1_BP_Cpld_3112329121) upgrade failed, set_stage: COMMON_FINISH -> COMPLETED
1970-01-01 00:03:14.925484 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 95, State: Running] successfully
1970-01-01 00:03:15.028217 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 95, State: Exception] successfully
1970-01-01 00:03:15.028527 firmware_mgmt NOTICE: task_instance.lua(577): Upgrade 1_BP_Cpld_3112329121 completely, pre_version=0.06
1970-01-01 00:03:15.028917 firmware_mgmt NOTICE: task_instance.lua(583): firmware(info key:1_BP_Cpld_3112329121) do upgrade ret:-1, pre_version:0.06
1970-01-01 00:03:15.090513 firmware_mgmt NOTICE: utils.lua(172): Does not exists the same Id obj
1970-01-01 00:03:15.436229 firmware_mgmt NOTICE: tasks_scheduling.lua(126): upgrade queue is empty, exit the tasks processer
1970-01-01 00:03:15.436597 firmware_mgmt NOTICE: tasks_scheduling.lua(138): stop tasks processer
1970-01-01 00:03:15.438389 firmware_mgmt NOTICE: active_fructl.lua(95): get host type is Singlehost
1970-01-01 00:03:15.438912 firmware_mgmt NOTICE: active_single_host_fructrl.lua(61): active_single_host_fructrl fructrl get power status
1970-01-01 00:03:15.453022 firmware_mgmt NOTICE: state_simple_upgrading.lua(101): simple upgraded, current active mode is:nil, wait restart seconds:360000
1970-01-01 00:03:15.458567 firmware_mgmt NOTICE: init.lua(40): update status to FS_IDLE.
1970-01-01 00:03:15.460262 firmware_mgmt NOTICE: init.lua(79): Upgrading_Flag is false
1970-01-01 00:03:16.368546 pcie_device ERROR: device_service.lua(483): [DeviceService] Can not find matching PCIeAddrinfo, PCIeDevice position=010109 DeviceType=13 SlotID=1
1970-01-01 00:03:17.077956 general_hardware NOTICE: fw_init.lua(194): get fw version 0.00
1970-01-01 00:03:17.134156 firmware_mgmt NOTICE: init.lua(178): Add firmware inventory successfully, Id:SEU_CPLD_01010A, Name:DiskBP2 CPLD, Version:0.00, BuildNum:, ReleaseDate:
1970-01-01 00:03:17.136149 general_hardware NOTICE: fw_init.lua(56): register SEU_CPLD_01010A version to FirmwareInventory finish, version: 0.00, location: U11
1970-01-01 00:03:17.137049 firmware_mgmt NOTICE: persist_client_lib.lua(170): persist saving large data, op: insert, table: t_fw_inventory_objs, primary_key: [["Id","SEU_CPLD_01010A"]], data_size: 1074
1970-01-01 00:03:21.224255 event ERROR: remote_rp.lua(198): Get object Event_A3a_UnitNotSupported_010101's reference property DescArg1 failed, err: org.freedesktop.DBus.Error.UnknownObject: Unknown object path /bmc/kepler/Systems/1/BusinessConnector/BusinessConnector_CPU1UBCDD1_010101
1970-01-01 00:03:24.207590 general_hardware NOTICE: mcu_service.lua(33): start serial task for update mcu version
1970-01-01 00:03:24.349549 power_mgmt NOTICE: log_service.lua(253): detect drop flag: 85, cur_time: Thu Jan  1 00:03:23 1970, event_time: Thu Jan  1 00:03:25 1970
1970-01-01 00:03:26.718031 frudata ERROR: frudata_service.lua(97): init fruid(5) name(FruData_SEU_01010A) failed
1970-01-01 00:03:27.529726 frudata ERROR: frudata_service.lua(97): init fruid(6) name(FruData_Fru0_010109) failed
1970-01-01 00:03:30.317255 firmware_mgmt NOTICE: task_service.lua(35): destroy_task_by_id: 3112329121
1970-01-01 00:03:30.325186 firmware_mgmt NOTICE: task_mgmt.lua(436): Destroy task[Id: 3112329121, StartTime: 1970-01-01T00:03:10+00:00, Progress: 95, State: Exception] successfully
1970-01-01 00:03:30.330485 firmware_mgmt NOTICE: task_id_mgmt.lua(40): delete serial task id(3112329121) successfully
1970-01-01 00:03:30.330968 firmware_mgmt NOTICE: task_id_mgmt.lua(42): del serial task id(3112329121) successfully
1970-01-01 00:03:30.332073 firmware_mgmt NOTICE: task_instance.lua(100): destroy task info(id:3112329121) successfully
1970-01-01 00:03:31.076055 general_hardware NOTICE: fw_init.lua(194): get fw version 0.00
1970-01-01 00:03:31.077203 general_hardware NOTICE: unit_manager.lua(413): BCU valid fw list : BCU_CPLD1_010101,

完整日志见附件

AIWS-8650_19700101-0004.tar.gz (9.9 MB)

Q:如何解决web界面CPLD升级失败问题?

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

五、解决方案建议

根据不同的根因,对应的解决措施如下:

可能原因 解决方案
硬件链路不通 更换硬件(如线缆、连接器、CPLD芯片),参考之前案例中"通过更换硬件,问题已解决"
CSR链路配置错误 重新适配硬件链路的CSR文件,修改代码中的链路配置
固件包UID不匹配 重新制作固件包,确保UID与实际硬件CPLD一致
升级模式配置错误 在固件包 update.cfg 文件中配置 UpdateLink=1(走I2C链路)或 HotValidList=1(热升级),重新出包
general_hardware组件版本过低 升级general_hardware组件版本至1.100.51以上后重新尝试升级
SVF文件异常 重新制作SVF文件,制作时在CPLD烧录器将 persist_bit 设置为1(JTAG烧录)或0(I2C烧录)

总结:您遇到的CPLD升级失败问题,最可能的根因是CPLD固件UID与硬件不匹配和硬件链路异常。建议优先使用 GetChipIdCode 命令验证硬件链路是否正常,并确认固件包UID配置与实际CPLD硬件信息是否一致。如果硬件链路确认正常,则需要检查日志中 EXU_CPLD 与固件包UID匹配关系,确认是否为固件包打包配置错误。

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

920s升级载板CPLD固件失败问题分析

一、关键报错信息

从您提供的app.log日志中,可以定位到以下核心报错:

general_hardware ERROR: process.lua(84): [cpld]block_write fail:BMC.Error.Unknow: 
...work_objects.lua:117: chip: Cpld_1_0101, bus: JtagOverLocalBus_1, write failed: 
jtag_base.lua:107: cpld file write failed:response error, 
ioctl(CPLD_CMD_LOAD_CPLD) failed: -1, component_id:1, product_id:16

firmware_mgmt ERROR: control.lua(201): Upgrade BP_Cpld process failed, ret=-1

核心错误在于CPLD升级流程写入阶段失败,ioctl(CPLD_CMD_LOAD_CPLD) failed: -1 表明底层硬件写入指令返回了错误。

二、升级流程梳理

从日志来看,升级流程走到了正确的阶段:

  1. 固件包验证通过:签名验证成功(validate_sign.lua(195): verify signature successfully)
  2. 固件包解析成功:parse cfg file successfully, Version:1.0 FileNum:2
  3. CPLD匹配成功:cpld fw matched, system_id = 1, fw.uid = 00000001020302031825, fw.csr.Name = EXU_CPLD
  4. 升级阶段执行:PROCESS阶段执行时,通过 JtagOverLocalBus_1 总线写入CPLD固件失败
  5. 升级失败:Upgrade BP_Cpld process failed, ret=-1

注意:日志中匹配到的是 EXU_CPLD,但之前版本升级时匹配的CSR是 SEU_CPLD。您提到"EXU的UID已更改",这说明当前固件包的UID与系统实际检测到的CPLD不匹配,导致代码流程未按预期路径执行。

三、可能的原因分析

根据日志和相关案例,失败原因可能有以下几种:

1. CPLD固件UID(Unique ID)不匹配

日志显示 fw.uid = 00000001020302031825,且CSR名称为 EXU_CPLD。您反馈"EXU的UID已更改",说明:

  • 当前固件包中固化的UID与实际硬件CPLD的UID不一致;
  • 导致系统无法正确识别目标CPLD,无法正确选择升级链路和固件文件。

2. 硬件链路(I2C/JTAG)异常

报错信息指向 JtagOverLocalBus_1 总线写入失败,结合知识库中的相关案例,可能原因包括:

  • 硬件链路不通:如连接器松动、CPLD芯片损坏等(参考案例1中,330版本升级"没有报错"是因为软件未检测此类错误,实际升级未生效);
  • CSR配置的硬件链路不正确:如 JtagOverLocalBus_0/JtagOverLocalBus_1 配置与实际链路不符合(参考案例6);
  • CPLD链路读不到值:从CPLD链路读到的sample值非0时,可能是svf文件问题;若sample值为0,需要CPLD人员测量TDO波形(参考案例4)。

3. CPLD固件包与硬件环境版本不一致

日志中 fw_init.lua(194): get fw version 0.06 获取到当前CPLD固件版本为 0.06,升级的固件包版本也需要与目标硬件环境匹配。如果固件版本号和环境不一致,可能影响升级流程(参考案例1)。

4. CPLD升级拓扑/模式配置错误

  • 日志显示代码流程走的是 JTAG升级 分支(Chip: Cpld_1_0101, bus: JtagOverLocalBus_1);
  • 如果该CPLD本应通过 I2C链路 升级(参考案例3),则可能因缺少 I2CUpgradeChip 属性配置导致失败;
  • 需要确认当前CPLD升级拓扑场景:如果涉及紫光CPLD级联场景,还需确认 general_hardware 组件版本是否在 1.100.51 以上(参考案例1)。

四、排查建议

建议按照以下步骤进行排查:

  1. 确认固件包UID:检查当前升级的CPLD固件包中UID配置(00000001020302031825)是否与硬件上实际CPLD的UID一致(通过 GetCpldDeviceidInfo 或 get_cpld_id 命令获取实际CPLD的ID信息)。

  2. 确认硬件链路:

    • 使用命令 mdbctl call Cpld_1_010101 bmc.kepler.Chip.JtagTarget GetChipIdcode 0 检查是否能正常读取CPLD的ID(参考案例6);
    • 如果返回结果为空,可能是CSR中配置的硬件链路不正确或硬件链路本身异常;
    • 检查 JtagOverLocalBus_1 总线对应的硬件连接是否正常。
  3. 确认软件版本和环境匹配性:

    • 确认 general_hardware 组件版本是否满足当前CPLD拓扑场景要求;
    • 确认CPLD固件版本(0.06)与升级包版本是否匹配。
  4. 检查内核日志:查看 linux_kernel 日志,确认对应时间是否有CPLD相关打印,判断是否是底层驱动问题。

五、解决方案建议

根据不同的根因,对应的解决措施如下:

可能原因 解决方案
硬件链路不通 更换硬件(如线缆、连接器、CPLD芯片),参考之前案例中"通过更换硬件,问题已解决"
CSR链路配置错误 重新适配硬件链路的CSR文件,修改代码中的链路配置
固件包UID不匹配 重新制作固件包,确保UID与实际硬件CPLD一致
升级模式配置错误 在固件包 update.cfg 文件中配置 UpdateLink=1(走I2C链路)或 HotValidList=1(热升级),重新出包
general_hardware组件版本过低 升级general_hardware组件版本至1.100.51以上后重新尝试升级
SVF文件异常 重新制作SVF文件,制作时在CPLD烧录器将 persist_bit 设置为1(JTAG烧录)或0(I2C烧录)

总结:您遇到的CPLD升级失败问题,最可能的根因是CPLD固件UID与硬件不匹配和硬件链路异常。建议优先使用 GetChipIdCode 命令验证硬件链路是否正常,并确认固件包UID配置与实际CPLD硬件信息是否一致。如果硬件链路确认正常,则需要检查日志中 EXU_CPLD 与固件包UID匹配关系,确认是否为固件包打包配置错误。