«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (9): 139-145  DOI: 10.19678/j.issn.1000-3428.0062745
0

引用本文  

刘鹏, 刘杰, 贾讯. 一种嵌入式硬件辅助调试机制研究与实现[J]. 计算机工程, 2022, 48(9), 139-145. DOI: 10.19678/j.issn.1000-3428.0062745.
LIU Peng, LIU Jie, JIA Xun. Research and Implementation of an Embedded Hardware-Assisted Debugging Mechanism[J]. Computer Engineering, 2022, 48(9), 139-145. DOI: 10.19678/j.issn.1000-3428.0062745.

基金项目

国家自然科学基金(61732018)

作者简介

刘鹏(1982—),男,工程师、硕士,主研方向为集成电路设计;
刘杰,副研究员、博士;
贾迅,助理研究员、博士

文章历史

收稿日期:2021-09-22
修回日期:2021-11-17
一种嵌入式硬件辅助调试机制研究与实现
刘鹏 , 刘杰 , 贾讯     
江南计算技术研究所, 江苏 无锡 214215
摘要:某自主指令架构系列芯片(简称为GCXP)主要使用基于扫描链重用的硬件调试机制,与主流商用嵌入式芯片产品相比,该硬件调制机制安全性较低且不具备用户交互、程序下载等功能,同时缺乏嵌入式调试软件生态,不利于嵌入式产品的推广与应用。参考ARM CoreSight、RISCV Debug SPEC及SiFive开源芯片Debug Module的实现细节,结合GCXP特权架构,提出一种软硬件协同的调试中断陷入机制。使用自主特权架构中的特权程序替代部分调试中断硬件逻辑,使得在调试模块设计时无需进行CPU协同修改以及操作系统软件接口和上位机调试软件的二次开发,从而避免CPU硬件逻辑修改后大量的验证工作,同时无缝兼容历史CPU IP。分析结果表明,该中断陷入机制与RISCV Debug SPEC协议能够实现良好的协同,可以与SiFive参考开源调试模块协同工作,支持主流交互式调试软件及硬件工具,且调试模块的代码及功能覆盖率都能达到100%,可以满足流片需求。
关键词嵌入式调试    开源片上调试器    自主指令集SoC    前端设计    国产芯片    
Research and Implementation of an Embedded Hardware-Assisted Debugging Mechanism
LIU Peng , LIU Jie , JIA Xun     
Jiangnan Institute of Computer Technology, Wuxi, Jiangsu 214215, China
Abstract: A series of independent instruction architecture chips(called GCXP in this paper) mainly use the hardware debugging mechanism based on scan chain reuse.Compared to mainstream commercial embedded chip products, the hardware modulation mechanism of independent instruction architecture chips has lower security and does not exhibit user interaction, program download, and other functions.In addition, it lacks embedded debugging software ecology, which is unconducive for promoting and applying embedded products.This paper proposes a debugging interrupt trapping mechanism of software and hardware cooperation based on the implementation details of ARM CoreSight, RISCV Debug SPEC, and SiFive open-source chip Debug Module, combined with GCXP privilege architecture.The privileged program in the independent privileged architecture is used to replace a part of the debugging interrupt hardware logic so that it will not be necessary to perform Central Processing Unit(CPU) collaborative modification and secondary development of the operating system software interface and the upper computer debugging software during the debugging module design.This reduces verification work after modifying the CPU hardware logic, and it is seamlessly compatible with the historical CPU Internet Protocol(IP).The analysis results show that the interrupt trapping mechanism can cooperate reasonably with the RISCV Debug SPEC protocol, work with the SiFive reference open-source debugging module, and support mainstream interactive debugging software and hardware tools.The code and function coverages of the debugging module can reach 100%, satisfying streaming requirements.
Key words: embedded debugging    open on-chip debugger    autonomous instruction set SoC    front-end design    domestic chip    

开放科学(资源服务)标志码(OSID):

0 概述

在高端服务器或低功耗嵌入式产品中,调试机制虽然不受关注但不可或缺。已经通过验证测试的成熟芯片产品一般提供非入侵式、入侵式这两种或其中一种调试机制[1]。入侵式调试机制主要通过软件或硬件中断陷入调试模式[2],主要以断点和单步调试为代表。用户在断点和步进调试过程中,可以控制应用程序代码运行到代码中的指定点,然后Halt标识的处理器,此时,用户可以选择检查或更改内存以及寄存器内容,步进或重新启动应用程序。非侵入式调试机制以跟踪(Trace)模式为主,主要实现方式是将CPU状态及指令流信息压缩导入存储器,协同软件解压缩开展现场或性能分析,能够帮助用户查证CPU在全速运转下才出现的或偶然发生而不可预测的错误[3]

本文针对某自主国产SoC芯片(下文简称为GCXP),设计一个保证用户可调试观测和安全性的用户调试解决方案。调试行为通过中断及其处理程序来实现,保证在调试中断监控下开展调试行为。兼容开源上位机OpenOCD调试软件生态,从而支持Eclipse等IDE。不同于ARM、Sivife等需要进行CPU设计,本文方案向CPU IP核已经设计完备的SoC中增加硬件辅助调试功能,不需要修改CPU设计。

1 相关工作

目前,大多数处理器都独立设计了一套调试体系结构,以便于用户进行片上调试。例如,x86体系结构提供了6个调试寄存器来支持硬件断点和调试异常[1],同时Intel Processor Trace[2]也是一个备受关注的硬件辅助调试特性[3-4]。Arm架构的处理器具有调试和非调试两种状态,并设计了一组调试寄存器来支持自主机调试和外部调试[5-6]。同时,ARM[7-9]还引入了硬件组件,如Embedded Trace Macrocell[10]和Embedded Cross Trigger[11],以完成各种硬件辅助调试目的。相应地,硬件供应商通过片上调试端口将上述调试特性暴露给外部调试器,比较常用的调试端口是IEEE 1149.1[12]定义的联合测试工作组(Joint Test Action Group,JTAG)端口,主要用来支持调试目标和外部调试工具之间的通信。使用JTAG端口和外部调试工具(如Intel System Debugger[13]、ARM DS-5 [14]、OpenOCD[15]),开发人员能够有效、方便地访问目标的内存和寄存器。

ARM的调试基础架构称为CoreSight,主要实现调试和跟踪这2个功能:

1)调试功能,运行处理器的控制,允许启动和停止程序单步调试源码和汇编代码,在处理器运行时设置断点,即时读取/写入存储器内容和外设寄存器,读写内部和外部FLASH存储器。

2)跟踪功能,提供程序计数器采样、数据跟踪、事件跟踪等,实现CPU历史序列调试、软件性能分析和代码覆盖率分析。

开源SoC硬件辅助调试解决方案主要有RISCV Debug Spec 0.11/0.13[16]、Open SoC Debug(OSD)[17],两者都描述了基于Run-Stop、Trigger、System Bus Access调试的具体规范细节,后者着重描述Trace模式并给出了基于Rocket-Core的参考设计实现,需要在Core内实现Core Debug Unit逻辑,前者有独立的Trace-Spec[18],依赖CPU预留Core Trace IO。

在GCXP系列中,用户通过片外维护控制模块访问I/O和存储空间,CPU片内状态通过扫描链硬件逻辑来观测调试[19-20]。同时,特有的HMCODE机制也可以在核心驱动调试以承担调试功能,但一般不对用户开放。与商业SoC调试功能相比,现阶段GCXP系列产品的调试机制缺少安全性[21]以及交互、断点、灵活读写功能,同时缺乏上位机调试软件IDE工具生态[22],尤其在安全性和嵌入式用户调试工具生态上,存在较大缺陷,如基于扫描链重用的调试机制,因扫描链在芯片上留下一个独立的逻辑接口,不受任何权限检查,可以在任何时刻获取芯片内部的状态信息,相当于为芯片增加了一个“后门”。同时,文献[21]中也提到了一种JTAG扫描链攻击的逆向技术,黑客可以获取扫描链上芯片架构设计相关细节信息。在嵌入式用户调试工具方面,ARM、Sifive都配备对应的上位机IDE或兼容主流开源IDE,如Eclipse、Keil等,与硬件调试辅助机制相结合,可以提供便捷丰富的寄存器以及内存观测读写、断点、程序下载、性能分析功能。

GCXP硬件辅助调试配套软件部署要求较高(可参见文献[20]),且只提供观测功能,目前没有与商业SoC产品类似的用户环境。此外,交互式调试设计需要CPU设计配合,是流水线设计的重要一环,且目前没有向已有成熟CPU设计的SoC环境中增加交互调试的方法。

2 GCXP-1A调试模块设计

GCXP-1A是一款面向低功耗嵌入式领域、采用精简GCXP指令集的国产通用处理器核心,实现了全独立自主指令集嵌入式子集,是GCXP架构下面向嵌入式领域的处理器核心,该核心采用IP化设计,指令、数据存储器工作模式、TLB条目数等关键微结构参数化设计,并实现标准AXI接口,便于通用SoC集成。

GCXP-1A设计主要参考RISCV Debug Spec 0.13.2规范及Sifive U500K开源SoC源码,兼容RISCV OpenOCD软件调试工具及OpenOCD的IDE生态,结合GCXP软硬件架构开展调试模块设计,结合GCXP特权架构开展用户调试工具的硬件设计,同时在OpenOCD软件端开辟GCXP分支,兼容RISCV Debug Spec 0.13.2流程,实现完整的Run-Stop侵入式调试机制以及OpenOCD接口下的基本调式、程序下载功能,相较于无感知的扫描链重用调试信息获取,该方法处于调试中断语义监控环境中,安全性更高,并且对CPU核内无设计要求,借助OpenOCD,可直接与GDB、开源IDE产品对接,可以向前扩展CPU产品的通用调试生态,同时开展模拟验证及FPGA验证,从而证明功能的正确性。

RISCV Debug Spec 0.13.2 Spec中对CPU设计提出了诸多要求,例如,需要2条调试专用指令EBREAK、DRET,Trigger硬件断点寄存器,以及调试模式与配套的DPC、DCSR寄存器等,同时,在流水线控制上也需要对应的设计。在GCXP特权架构下,为了不对原有CPU设计、操作系统核软件接口及编译工具链设计进行改动,取消调试模式(调试模式在RISCV开源CPU中实现,特权层级还是处于M模式,严格上来说并不算是一种独立的特权层级),同时,EBREAK与DRET分别设计成GCXP指令集中的SYSCALL,并分别约定特定的调用号,将DPC、DCSR放入Debug Module(IO地址空间)中。同时,因为GCXP HM特权架构不响应中断,所以将RISCV Trigger调试中断、单步调试、硬件调试中断都进行重新设计,并设置对应的HMCODE处理软件程序,以实现Spec中调试中断处理的硬件逻辑部分。

2.1 硬件逻辑设计

由于GCXP-1A面向低功耗MCU场景,因此调试机制设计主要考虑用户调试应用程序的Run-Stop调试以及外设I/O、Memory内容读写功能这些需求,从而实现中断调试模式、总线访问调试。GCXP-1A的具体硬件逻辑架构如图 1所示。

Download:
图 1 GCXP-1A用户调试模块的逻辑架构 Fig. 1 Logical architecture of GCXP-1A user debugging module

RISCV Debug Spec 0.13.2中主要规范了一套抽象调试命令,便于不同架构具体实现与调试工具及生态解耦,其Run-Stop调试机制基于DM模块接管PC来实现,分为Trigger中断(由硬件断点触发)、上位机调试中断、软件断点陷入调试中断这3类,最终通过Debug ROM程序与调试模块(Debug Module,DM)状态机协同路由,决定CPU PC取指地址,从而执行从抽象命令解析、翻译、预装填到抽象命令相关字段所指定的不同存储空间的调试命令。

GCXP-1A用户调试模块的逻辑架构主要实现用户程序异常中断调试、提供断点环境通用寄存器及CSR寄存器的访问、提供SoC总线上外设I/O寄存器或存储器的访问。具体如下:

1)DM_TRANSPORT模块负责JTAG TAP状态机的实现,以及上位机指令操作向DM_ROUTER模块内部总线的转写,主要分为DM_TRASNPORT寄存器访问和DM内部总线访问,前者主要是标识调试协议实现版本,后者用于交互具体的调试任务。

当TAP状态机进入Update-DR状态,IR寄存器的值为DMI_ACCESS(5’h11),且当前调试系统总线(Debug Message Interface,DMI)接口没有错误信息时,开始执行dmi.op指定的操作。

图 2所示,当dmi.op=0x1,dmi状态机进入Read状态。在Read状态中,先将dmi_req_valid信号拉高,再等待dmi_req_ready信号为高时进入WaitReadValid状态。在WaitReadValid状态中等待dmi_resp_valid信号为高,当该信号为高时,dmi读取DM模块回应的数据(dmi_resp.data),并返回Idle状态。当dmi.op=0x2,dmi状态机进入Write状态。在Write状态中,先将dmi_req_valid信号拉高,再等待dmi_req_valid信号为高时返回Idle状态。

Download:
图 2 JTAG转DMI内部总线状态机 Fig. 2 JTAG to DMI internal bus state machine

2)DM_ROUTER模块负责上位机通过JTAG DMI_ ACCESS访问填充的抽象调试寄存器内容,图 3为其功能逻辑图,将调试任务依据抽象命令对应标志位,通过内部总线发送到具体部件执行。

Download:
图 3 DM_ROUTER功能流程 Fig. 3 Procedure of DM_ROUTER function

3)DM_EXE模块接收并处理处理器内部信息的调试指令,图 4为其功能逻辑图,根据用户Halt指令、软件配置的硬件断点是否等于CPU Trace信号中PC值、单步调试指令标志情况,向外发出调试中断信号,同时完成调试目的寄存器访问路由,分别组织指令架构下通用寄存器访问、CSR寄存器访问的指令编码,并依据调试任务中标识的执行空间进行指令填充(结果目的地址为内部DATA寄存器),等待PC正确跳入取指执行,执行完毕标记完成位,上位机将DATA寄存器中的结果扫回。DM_EXE模块中的关键点是CPU、上位机、DM模块的三方协同状态机,从而保证作业正常流转。

Download:
图 4 DM_EXE解析ABSTRACT_CMD以及填充指令槽位逻辑 Fig. 4 DM_EXE parsing ABSTRACT_CMD and filling instruction slot logic

三方协同状态机设计如图 5所示,其中,左图主要描述DM_EXE硬件状态机,右图主要描述Debug Rom软件中断处理程序。中断可以由软件陷入或上位机调制命令通过DM发出,任何一种调试中断发起,即触发调试中断,PC跳入调试中断入口程序(Debug Rom),首先挪用一个通用寄存器,再将标定调试的Core_Id写入DM Halted寄存器,硬件状态机确认选中的CPU已经被停住,此时,若上位机发送了调试命令,则DM将CMD_BUSY拉高,进入下一状态,否则停留在IDLE,在Debug Rom程序go与resume都等于0的情况下会在Debug Rom程序空间死循环,等待调试指令到来。

Download:
图 5 DM_EXE软硬协同状态机 Fig. 5 DM_EXE software and hardware collaborative state machine

当上位机调试指令到来,CMD_BUSY信号随即拉高,DM_EXE状态机进入GO状态,此时等待Debug Rom程序填写DM寄存器going为1,此处设计是因为调试指令一般由1~2条组成,并且为硬件寄存器装填,1个CLK周期就能完成,在GCXP-1A 5级流水线设计下,一条指令执行周期即可保证指令硬件装填完毕,Debug Rom执行DM go寄存器判断这条指令周期就足以满足,因此,这里不再做DM指令槽位填充完毕握手机制。状态机检测到Going地址有写操作后,随即PC获取一条跳转指令,跳入DM_EXE取指入口(where to go),根据上位机指令标记获取跳入不同DM内部指令槽入口的跳转指令,从而执行调试任务,指令槽位最后一条指令必然为跳回Debug Rom首地址,通过再次写Halted地址进入Idle状态。复位三方握手流程类似,不再详细描述。

4)DM_SBA模块实现一个总线的Master端,从而使得DM模块能够访问SoC总线下编址地址信息读写。DM_SBA的总体功能逻辑结构如图 6所示。

Download:
图 6 DM_SBA模块功能逻辑 Fig. 6 DM_SBA module function logic

DM_SBA模块的读写过程用一个状态机实现,有idle、write、read、waite_write、waite_read这5种状态。状态机的转换示意图如图 7所示,Idle为master接口处于空闲状态,write为master接口往内存写数据,read为master接口向内存读取数据,waite_write和waite_read分别为master接口的读、写等待状态。

Download:
图 7 DM_SBA工作状态机 Fig. 7 DM_SBA working state machine
2.2 软件设计

GCXP软件特权架构有3种特权级:1)硬件模式(Hadware Mode,HM),是最高权限模式,为特权程序运行环境;2)内核模式(Kernel Mode,KM),是次低级模式,为操作系统运行环境;3)用户模式(User Mode,UM),是最低级模式,为用户程序运行环境。

特权程序运行程序(SW-HMCODE)为代替硬件逻辑的软件代码,定义了平台SYS_CALL,注册了操作系统核心对应的特权异常、中断处理入口地址,在扩展处理器功能实验、规避硬件错误以及OS调试上都有重要的地位,是一种GCXP独有的软硬件协同机制,默认为绝对正确,保证程序不会挂死在HM模式下,且对用户透明。

RISCV Debug Spec中所涉及的CPU硬件中断处理、调试模式及其配套的DPC、DCSR,在GCXP GCXP-1A软硬件环境下都进行了重新设计,与GCXP-1A HMCODE相结合,调试中断改为普通中断,通过HMCODE中断处理流程,实现现场保护和复原,并在HMCODE中设置专用SYS_CALL入口,结合中断控制器,与普通中断跳入操作系统核心注册处理程序不同,调试中断处理程序(DM_ROM)在HMCODE内部进行调试中断识别并完成跳转,从而实现软硬件调试陷入。

在上位机OpenOCD中,由于兼容RISCV Debug Spec 0.13.2,因此按照RISCV Debug Spec 0.13.2的软件流程,添加th1a-013 target分支,注册寄存器读写、内存地址读写以及programbuf、abstract commad函数读写等,从而完善用户调试流程。

3 验证分析 3.1 GCXP-1A调试模块模拟验证

图 8所示,GCXP-1A调试模块模拟验证环境由3个部分组成,分别为:1)SimJTAG.sv包含Jtag_tick DPI-C接口,负责路由来自DPI-C的JTAG引脚信号,并与GCXP-1A SOC DM JTAG桥接;2)DPI-C接口具体实现本机socket注册、监听和链接接受服务,使用bitbang协议将socket调试请求转换成JTAG信号;3)上位机调试软件通过DPI-C暴露的本地端口链接,开展调试流程。

Download:
图 8 调试模块模拟验证环境逻辑结构 Fig. 8 Debugging module simulation verification environment logical structure

图 9所示,在模拟验证环境下,激励时钟起震、复位撤销前使用HMCODE+TEST_CODE HEX进行约定地址空间布数。软件流程具体如下:1)CPU从HMCODE开始取指运行,跳转到TEST_CODE地址;2)TEST_CODE配置CSR寄存器打开调试中断使能;3)跳出HM模式,运行死循环;4)HMCODE根据CPU捕获的中断(CPU保证流水线硬件冲刷),将PC跳转到Debug ROM HALT地址执行;5)上位机执行调试作业;6)Debug退出,执行Debug ROM resume程序段,恢复现场,跳转PC到保留PC。

Download:
图 9 模拟验证环境软件逻辑结构 Fig. 9 Simulation verification environment software logical structure

基于Synopsys VCS 2018.09-SP2开展GCXP-1A SoC模拟验证,针对dm开展OpenOCD test_compliance测试集验证,针对所设计的功能,波形日志如下:

1)调试中断流程。

图 10所示,当上位机中断请求发起,dm模块io_debug_req_o信号拉高,由HMCODE中断现场保护,并跳转PC到0x100调试处理程序首地址,执行118地址的写hart id(0)到dm 0x400(Halted_aligned)地址,dm状态机检测到该写操作后随即拉高halted_q信号,标识CPU已经成功响应调试中断。

Download:
图 10 模拟环境调试中断响应波形图 Fig. 10 Simulated environment debugging interrupt response waveform

2)CPU内部寄存器读写。

图 11所示,state_q为上文描述的三方交互状态机状态寄存器,分别标识idle(0)、go(1)、resume(2)、excuting(3),调试指令下达后,由idle- > go状态,并等待debug rom程序写going地址,期间硬件完成abstract_cmd任务指令转译和填充,在going拉高后跳入excuting阶段,执行完毕后(指令槽位最后一条固定位回到debug rom首地址),等待debug rom再次写halted_align地址,从而回到Idle状态。

Download:
图 11 模拟环境abstract cmd CPU内部寄存器读写 Fig. 11 Simulated environment abstract cmd CPU internal register read and write

3)SBA总线地址访问。

图 12所示,上位机通过OpenOCD对总线上的地址进行读写访问,dm_sba模块从dm_csr路由信号操作axi4 master读写时序,从而完成读写任务。

Download:
图 12 模拟环境SBA时序 Fig. 12 Simulation environment SBA time limit
3.2 GCXP-1A调试模块FPGA验证

FPGA验证环境为KCU105,将设计中的JTAG引脚约束到FMC XM105扩展卡引脚,链接JLink v9,DM模块挂在系统总线下。在Vivado 2019.2环境下开展SoC综合仿真实验,运行频率为100 MHz。

在仿真过程中,需要HMCODE逻辑配合,在不依赖linux kernel的情况下识别响应调试中断。实验环境如图 13所示。

Download:
图 13 GCXP SoC DM+JLINKV9+OpenOCD验证平台 Fig. 13 GCXP SoC DM+JLINKV9+OpenOCD verification platform

图 14中,使用OpenOCD客户端链接JLNK开展DM功能测试实验,图 14(a)测试内容为通用寄存器或CSR寄存器读写功能,图中示例使用OpenOCD寄存器读写命令读写寄存器,图 14(b)测试内容为SoC总线地址空间存储器读写功能,使用OpenOCD SBA模式测试字读写。

Download:
图 14 OpenOCD命令行操作示例 Fig. 14 OpenOCD command line operation example

覆盖率是判断DUT验证是否完备的重要指标,在数字集成电路设计中,覆盖率分为代码覆盖率和功能覆盖率,代码覆盖率表征每行代码的执行情况,功能覆盖率表征具备一定功能的代码组合的执行情况。从图 15可以看出,本文DM模块的代码及功能覆盖率都能达到100%,能够满足流片要求。

Download:
图 15 代码及功能覆盖率 Fig. 15 Code and function coverage rate
4 结束语

本文在RISCV调试协议规范的基础上,结合GC,使用GCXP的HMCODE机制实现一套轻量级且对CPU无设计需求的调试方案,该方案可以兼容GCXP全系列CPU IP产品以及RISCV的调试软件和转接器,从而丰富自主芯片的调试生态。下一步将协同CPU设计Trace模式,实现CPU非入侵式调试机制,完成可控可过滤的指令流、数据流跟踪,此外,配套上位机程序开发,实现性能可分析观测、功能完备且安全的用户调试机制,也是今后的研究方向。

参考文献
[1]
HOPKINS A B T, MCDONALD-MAIER K D. Debug support for complex systems on-chip: a review[J]. IEEE Proceedings-Computers and Digital Techniques, 2006, 153(4): 197. DOI:10.1049/ip-cdt:20050194
[2]
VERMEULEN B, GOEL S K. Design for debug: catching design errors in digital chips[J]. IEEE Design & Test of Computers, 2002, 19(3): 35-43.
[3]
VERGÉ A, EZZATI-JIVAN N, DAGENAIS M R. Hardware-assisted software event tracing[J]. Concurrency and Computation: Practice and Experience, 2017, 29(10): e4069. DOI:10.1002/cpe.4069
[4]
[5]
Intel. Architecture instruction set extensions and future features programming reference[EB/OL]. [2021-08-05]. https://software.intel.com/sites/default/files/managed/c5/15/architectu-reinstruction-set-extensions-programming-reference.pdf.
[6]
SCHUMILO S, ASCHERMANN C, GAWLIK R, et al. kAFL: hardware-assisted feedback fuzzing for OS kernels[EB/OL]. [2021-08-05]. https://etit.ruhr-uni-bochum.de/media/emma/veroeffentlichungen/2017/08/16/usenix17-kAFL.pdf.
[7]
XU J, MU D, XING X, et al. POMP: postmortem program analysis with hardware-enhanced post-crash artifacts[C]//Proceedings of the 26th USENIX Conference on Security Symposium. San Diego, USA: USENIX Association, 2017: 17-32.
[8]
ARM. Architecture reference manual ARMv7-A and ARMv7-R edition-n[EB/OL]. [2021-08-05]. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html.
[9]
ARM. ARMv8-A reference manual[EB/OL]. [2021-08-05]. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0487a.k/index.html.
[10]
ARM. Embedded trace macrocell architecture specification[EB/OL]. [2021-08-05]. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0014q/index.html.
[11]
[12]
IEEE. Standard for test access port and boundary-scan architecture: IEEE Std 1149.1-2013[S]. Washington D. C., USA: IEEE Press, 2010.
[13]
[14]
[15]
OpenOCD. Open on-chip debugger[EB/OL]. [2021-08-05]. http://openocd.org/.
[16]
[17]
OpTiMSoC, lowRISC. Open SoC debug is a new project[EB/OL]. [2021-08-05]. https://opensocdebug.org/.
[18]
[19]
胡向东, 董建萍. 实时监测处理器内部状态的装置: CN101187892A[P]. 2008-05-28.
HU X D, DONG J P. Device for real-time monitoring inside of processor: CN101187892A[P]. 2008-05-28. (in Chinese)
[20]
李彦哲, 尹飞, 巨鹏锦. 芯片实时监测系统及其实现[C]//第十八届计算机工程与工艺年会暨第四届微处理器技术论坛论文集. 贵阳, 贵州: 中国计算机学会计算机工程与工艺专业委员会, 2014: 606-611.
LI Y Z, YIN F, JU P J. Chip real-time monitoring system and its implementation[C]//Proceedings of the 18th Annual Conference of Computer Engineering and Technology and the 4th Microprocessor Technology Forum. Guiyang, Guizhou: Computer Engineering and Technology Committee of Chinese Computer Society, 2014: 606-611. (in Chinese)
[21]
程军. 基于等效移位寄存器的针对扫描链攻击的安全扫描设计[D]. 西安: 西安电子科技大学, 2014.
CHENG J. Secure scan design against scan-based attacks based on shift register equivalents[D]. Xi'an: Xidian University, 2014. (in Chinese)
[22]
HSU Y C, TSAI F, JONG W, et al. Visibility enhancement for silicon debug[C]//Proceedings of the 43rd ACM/IEEE Design Automation Conference. Washington D. C., USA: IEEE Press, 2006: 13-18.