CPLD固件更新失败问题咨询

客户使用1711模组,搭配自行设计的载板,反馈先使用模组出厂自带的v2固件可以正常更新载板cpld(如果属实,说明jtag硬件通路没问题)。
然后升级为openUBMC之后,发现更新cpld固件失败。
openUBMC一键日志相关内容如下:

1970-01-01 00:08:34.870208 firmware_mgmt NOTICE: active_fructl.lua(96): get host type is Singlehost
1970-01-01 00:08:34.870998 firmware_mgmt NOTICE: utils.lua(34): The file path is local.
1970-01-01 00:08:34.886338 firmware_mgmt NOTICE: init.lua(33): update status to FS_SIMPLE_UPGRADING.
1970-01-01 00:08:34.904607 firmware_mgmt NOTICE: task_service.lua(49): task create success, task id: 191378062
1970-01-01 00:08:34.963210 firmware_mgmt NOTICE: file_transfer.lua(145): start to move file [ubmc_YunHe_920S_L1.hpm] from tmp to shm
1970-01-01 00:08:35.013805 firmware_mgmt NOTICE: file_transfer.lua(150): move_file_s ok:true, err:0
1970-01-01 00:08:35.073889 firmware_mgmt NOTICE: validate_sign.lua(255): CMS verification started.
1970-01-01 00:08:35.098041 firmware_mgmt NOTICE: validate_sign.lua(168): verify signature successfully
1970-01-01 00:08:35.102306 firmware_mgmt NOTICE: action.lua(37): Validate signature successfully
1970-01-01 00:08:35.243735 firmware_mgmt NOTICE: hpm_package.lua(471): parse cfg file successfully, Version:1.0 FileNum:2
1970-01-01 00:08:35.244074 firmware_mgmt NOTICE: hpm_package.lua(427): get obj table: 0x0889d125faf0 for Id=5
1970-01-01 00:08:35.244666 firmware_mgmt NOTICE: hpm_package.lua(396): System product info:ProductId(65535), ProductVendorID(0xffffffff), ProductUniqueID(0xffffffff)
1970-01-01 00:08:35.244899 firmware_mgmt NOTICE: hpm_package.lua(400): System product id is 0xffff, skip board verification
1970-01-01 00:08:35.245151 firmware_mgmt NOTICE: hpm_package.lua(420): get obj table: 0x0889d125faf0 for Id=5
1970-01-01 00:08:35.245463 firmware_mgmt NOTICE: hpm_package.lua(442): hard_revision:0, soft_revision:0
1970-01-01 00:08:35.245719 firmware_mgmt NOTICE: hpm_package.lua(455): revision number check successfully. Target revision=(0, 0) and hpm revision=nil
1970-01-01 00:08:35.262159 firmware_mgmt NOTICE: action.lua(47): Parse hpm package successfully
1970-01-01 00:08:35.262505 firmware_mgmt NOTICE: control.lua(241): upgrade_task file_name=ubmc_YunHe_920S_L1.hpm, FirmwareType=Cpld, fw_num=1, UniqueIDList=nil, sys_id=1
1970-01-01 00:08:35.364869 firmware_mgmt NOTICE: task_service.lua(63): destroy_dup_task: task(1Cpld) dup, task id: 3190774405 -> 191378062
1970-01-01 00:08:35.365120 firmware_mgmt NOTICE: task_service.lua(31): destroy_task_by_id: 3190774405
1970-01-01 00:08:35.368104 firmware_mgmt NOTICE: info_mgmt.lua(71): create_info: info_key=1Cpld, FirmwareType=Cpld, task_id=191378062
1970-01-01 00:08:35.466143 firmware_mgmt NOTICE: action.lua(85): public initialize action
1970-01-01 00:08:35.466464 firmware_mgmt NOTICE: info_mgmt.lua(169): info_key(1Cpld) upgrade set_stage: INITIALIZE -> DIFF_PREPARE, 5
1970-01-01 00:08:35.573460 general_hardware NOTICE: dpu_service.lua(482): [DPU] firmware_type:Cpld
1970-01-01 00:08:35.574615 general_hardware NOTICE: signal.lua(99): [cpld]Start the system[1] Cpld upgrade prepare phase
1970-01-01 00:08:35.690340 general_hardware NOTICE: fw_upgrade.lua(88): [cpld]get cpld_valid :nil
1970-01-01 00:08:35.691468 general_hardware NOTICE: fw_cfgs.lua(70): check fw uid(000000071BKHX528X0100000) id(255) id_ex(4294967295) exist success
1970-01-01 00:08:35.963844 general_hardware NOTICE: fw_init.lua(163): get fw version 2.08
1970-01-01 00:08:35.964820 general_hardware NOTICE: fw_upgrade.lua(125): [cpld]get verion[2.08]
1970-01-01 00:08:35.967081 firmware_mgmt NOTICE: info_mgmt.lua(169): info_key(1Cpld) upgrade set_stage: DIFF_PREPARE -> COMMON_PREPARE, 7
1970-01-01 00:08:36.068032 firmware_mgmt NOTICE: action.lua(89): public prepare action start
1970-01-01 00:08:36.106304 firmware_mgmt NOTICE: [worker](9): start action in worker
1970-01-01 00:08:36.166802 firmware_mgmt NOTICE: [worker](14): execute before action script successfully
1970-01-01 00:08:37.100177 firmware_mgmt NOTICE: action.lua(95): public prepare action end
1970-01-01 00:08:37.100535 firmware_mgmt NOTICE: info_mgmt.lua(169): info_key(1Cpld) upgrade set_stage: COMMON_PREPARE -> PROCESS, 15
1970-01-01 00:08:37.200690 firmware_mgmt NOTICE: control.lua(155): sys_id=1, fw_type=Cpld, filename=/dev/shm/upgrade/191378062/Firmware1
1970-01-01 00:08:37.206064 general_hardware NOTICE: signal.lua(123): [cpld]Start the system[1] Cpld upgrade process phase
1970-01-01 00:08:37.304141 general_hardware NOTICE: fw_cfgs.lua(70): check fw uid(000000071BKHX528X0100000) id(255) id_ex(4294967295) exist success
1970-01-01 00:08:37.304441 general_hardware NOTICE: process.lua(36): cpld fw matched, system_id = 1, fw.uid = 000000071BKHX528X0100000, fw.csr.Name = EXU_CPLD
1970-01-01 00:08:37.372379 hardware ERROR: tar.c(664): __extract_file: lchown on file(cpld.vme) failed!
1970-01-01 00:08:37.404087 hardware ERROR: tar.c(664): __extract_file: lchown on file(valid.vme) failed!
1970-01-01 00:08:37.404636 general_hardware NOTICE: process.lua(259): [cpld]get cpld packages successful
1970-01-01 00:08:37.405032 general_hardware NOTICE: process.lua(189): [cpld]_____load_cpld_single_____
1970-01-01 00:08:37.405402 general_hardware NOTICE: process.lua(54): load file[0x13bede]
1970-01-01 00:09:26.546515 account ERROR: account_service.lua(592): now time(1970-01-01 00:09:26) is default time, account time info operation passed
1970-01-01 00:09:37.313902 firmware_mgmt NOTICE: control.lua(124): waiting for firmware reply...
1970-01-01 00:10:05.605981 account NOTICE: global_account_config.lua(457): generate new requested key pair
1970-01-01 00:10:26.159947 product_mgmt ERROR: service.lua(48): Get product obj failed!
1970-01-01 00:10:26.160436 product_mgmt ERROR: app_preloader.lua(83): ...mc/apps/product_mgmt/lualib/digital_warranty/service.lua:64: app(product_mgmt/service/main) count(5) pcall failed(...mc/apps/product_mgmt/lualib/digital_warranty/service.lua:49: Get product obj failed)
1970-01-01 00:10:37.415467 general_hardware ERROR: process.lua(77): [cpld]block_write fail:kepler.hwproxy.RequestTimeout: table: 0x0f2147da4c60
1970-01-01 00:10:37.420313 firmware_mgmt ERROR: control.lua(380): Upgrade Cpld process failed, ret=-1
1970-01-01 00:10:37.420577 firmware_mgmt NOTICE: info_mgmt.lua(169): info_key(1Cpld) upgrade set_stage: PROCESS -> COMMON_FINISH, 95
1970-01-01 00:10:37.465738 firmware_mgmt NOTICE: control.lua(107): wait_msg_result stage=COMMON_FINISH, timeout=7200S, loop=1199
1970-01-01 00:10:37.466043 firmware_mgmt NOTICE: info_mgmt.lua(220): info_key(1Cpld) upgrade failed, set_stage: COMMON_FINISH -> COMPLETED
1970-01-01 00:10:37.732475 firmware_mgmt NOTICE: info_mgmt.lua(169): info_key(1Cpld) upgrade set_stage: COMPLETED -> COMPLETED, 100
1970-01-01 00:10:37.732915 firmware_mgmt ERROR: task_service.lua(83): Update task failed, task_id: 191378062, res: -9
1970-01-01 00:10:37.735127 firmware_mgmt NOTICE: state_simple_upgrading.lua(76): simple upgraded, current active mode is:nil, wait restart seconds:30000
1970-01-01 00:10:37.746160 firmware_mgmt NOTICE: init.lua(33): update status to FS_IDLE.

结合代码排查,发现cpld hpm包签名校验,uid校验等步骤都是ok的,最终应该是在jtag写入出错了,日志显示[cpld]block_write fail:kepler.hwproxy.RequestTimeout:,
目前已经没有头绪,所以想咨询一下后面该如何定位排查?


EXU相关配置如下,就改了个UID

"ManagementTopology": {
	"Anchor": {
		"Buses": [
			"I2c_1",
			"I2c_2",
			"I2c_3",
			"I2c_4",
			"I2c_5",
			"I2c_6",
			"I2c_7",
			"I2c_8",
			"I2c_11",
			"Jtag_1",
			"JtagOverLocalBus_1",
			...
}				
"Jtag_1": {
		"Chips": [
			"Cpld_1"
		]
	},
"Cpld_1": {
		"HealthStatus": 0
	},
"LogicFirmware_EXU_1": {
	"UId": "000000071BKHX528X0100000",
	"Name": "EXU_CPLD",
	"Manufacturer": "Huawei",
	"Version": "#/Accessor_LogicVerId.Value",
	"Location": 5,
	"UpgradeChip": "#/Cpld_1",
	"ChipInfo": "#/Cpld_1",
	"Routes": "#/Accessor_JtagSwitch.Value",
	"DefaultRoute": 0,
	"FirmwareRoute": 0,
	"ValidMode": 1,
	"ValidAction": "#/Accessor_AC.Value",
	"SoftwareId": "CPLD-BC83SMMB"
},

可以排查下root.sr中是否对jtag的引脚做了正确的初始化



你好,能帮忙看下root.sr中的配置有问题吗?root.sr ManagementTopology Buses也都引入了。

看着应该没啥问题,这样的话建议量下信号,看是不是链路信号质量差导致文件传输不成功

嗯,觉得反馈不属实,我再来和客户交流看看。
cpld固件升级,相同的代码有其他客户功能是ok的。