背景
触发原因:新的需求
需求背景:当前芯片内部出现问题后定位困难,如果内部总线出现挂死,也无法通过CPU的Die信息完成收集,必须借助接JTAG仿真器进行DFX收集,该步骤费时费力,且部分产品形态无预留对接JTAG仿真器的空间。因此希望通过BMC当前已有的SVF脚本执行能力,将CPU DFX的脚本转换成SVF脚本的形式,BMC侧通过已有的解析并执行SVF脚本的能力发送JTAG信号,并将jtag链路收集到的TDO数据保存到指定路径,实现寄存器信息的收集。
应用场景:主板故障时收集CPLD寄存器信息;CPU故障寄存器信息收集
关联ISSUE
整体方案
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、增加路径约束,只能输出到特定路径,路径都需包含具体文件名
结论:已在接口描述上增加描述,文件路径需要包含具体文件名