VRD固件包导入正常无报错,但AC重启生效流程处理时,出现MCU多次重传失败,日志如下:
对应代码:
为什么每次获取偏移要回退到2016,中间MCU 少收/丢失了 [2016, 2112) 这 96 字节?这是什么原因呢?
2112是上一次写入完成后的offset,然后代码会通过query_next_frame_offset获取下一段数据应该写入的起始地址,但是与硬件通信,获取到的地址就是2016。建议硬件协助分析,或者可以先手动执行查询下一个offset的smc命令验证现象(参考query_next_frame_offset函数中的命令字)
@yctco-chendanni 之前遇到过VRD 升级失败问题,打印与你这几乎一样
经过排查确认问题原因是 获取BCU MCU升级状态一直返回2,一直在重试;AC后状态恢复正常,可正常升级
结合代码确认,获取BCU MCU状态命令字为0x00019500
使用busctl读取状态
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x00019500 2
返回 ay 2 2 0 ay 2是指返回的数据是uint8数组 2个字节,第一个字节数据2是mcu升级状态,从SMC获取
mcu升级状态异常时获取下次偏移量命令字为0x0001a500
使用busctl读取状态
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0x0001a500 4
返回ay 4 224 7 0 0 224 → E0,7E0 → 2016
问题机器上AC后也无法升级VRD固件,升级过程读取MCU升级状态=2
最终处理方法:检查并重新升级CPLD后再升级VRD,固件正常升级成功
问题解决还请标记下解决方案呢,感谢