【已评审】新增用于CPLD升级和寄存器收集的资源协作方法

背景

触发原因:新的需求

需求背景:当前芯片内部出现问题后定位困难,如果内部总线出现挂死,也无法通过CPU的Die信息完成收集,必须借助接JTAG仿真器进行DFX收集,该步骤费时费力,且部分产品形态无预留对接JTAG仿真器的空间。因此希望通过BMC当前已有的SVF脚本执行能力,将CPU DFX的脚本转换成SVF脚本的形式,BMC侧通过已有的解析并执行SVF脚本的能力发送JTAG信号,并将jtag链路收集到的TDO数据保存到指定路径,实现寄存器信息的收集。

应用场景:主板故障时收集CPLD寄存器信息;CPU故障寄存器信息收集

关联ISSUE

[ 新增通过Jtag收集寄存器信息能力]

整体方案

1、由CPU硬件侧将他们的CPU DFX脚本转换成SVF脚本形式,BMC侧接收该SVF文件中,解析里面的(SIR、SDR、TDI等字段),文件格式与CPLD升级所使用的SVF格式一致,BMC侧通过jtagOverlocalbus或jtagOverhisport的链路发送TDI、TMS、TCK信号给CPLD,将CPLD侧返回的TDO数据按16进制进行保存。
2、当前Cpld升级流程是通过bmc.kepler.Chip.BlockIO接口中的Write方法;Cpld下的其他功能如获取厂商Id,bypass测试是通过bmc.kepler.Chip.JtagTarget接口中的方法。
因此预期在bmc.kepler.Chip.JtagTarget接口下新增方法:
Upgrade: 用于重构原来cpld升级的接口
Collect: 用于支持新功能收集寄存器信息

评审点

在bmc.kepler.Chip.JtagTarget下新增资源协作方法Upgrade,Collect

详细描述

资源协作path: /bmc/kepler/Chip/Cpld/:id (已有)
资源协作interface: bmc.kepler.Chip.JtagTarget (已有)
变化类型:新增方法
方法名称:Upgrade、Collect
应用场景:CPLD升级、通过svf文件收集寄存器信息
持久化类型:不持久
操作权限:BasicSetting

属性名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束
Upgrade 新增方法 请求: sy
响应: NA
BasicSetting NA NA “Upgrade”: {
“req”: {
“FilePath”: {
“baseType”: “string”,
“description”: “升级文件的路径”
},
“FileType”: {
“baseType”: “U8”,
“enum”:[0, 1],
“description”: “升级文件的类型, 0代表VME, 1代表SVF”
}
“rsp”: {},
“description”: “升级CPLD固件”
},
固件文件路径必须包含文件名,路径需要在/dev/shm目录及子目录下
Collect 新增方法 请求: sys
响应: NA
BasicSetting NA NA “Collect”: {
“req”: {
“FilePath”: {
“baseType”: “string”,
“description”: “数据采集指令文件路径”
},
“FileType”: {
“baseType”: “U8”,
“enum”:[0, 1],
“description”: “数据采集指令文件的类型, 0代表VME, 1代表SVF”
}
“OutputFilePath”: {
“baseType”: “string”,
“description”: “数据采集输出文件路径”
}
},
“rsp”: {},
“description”: “通过JTAG收集芯片寄存器数据到指定的文件”
}
数据采集指令当前只支持SVF文件格式, 文件路径必须包含文件名,路径需要在/dev/shm目录及子目录下

评审结论

同意在已有资源协作接口bmc.kepler.Chip.JtagTarget新增方法:

  • Upgrade:用于CPLD固件升级,请求签名为sy,无响应签名,权限为BasicSetting

  • Collect:用于通过JTAG收集芯片寄存器数据,请求签名sys,无响应签名,权限为BasicSetting

遗留问题

1、Collect方法上与Upgrade一致保留FileType的参数
结论:已在Collect方法上增加FileType参数,并在实现上限制当前只支持SVF格式
2、增加路径约束,只能输出到特定路径,路径都需包含具体文件名
结论:已在接口描述上增加描述,文件路径需要包含具体文件名

描述不清,需要描述SVF主要功能和内容,以及预期达成的收集效果。

需要注明已有路径和接口。