一种适用于专用处理器的多调试模式电路及其监测仿真方法与流程

文档序号:18211214发布日期:2019-07-19 22:19阅读:222来源:国知局
一种适用于专用处理器的多调试模式电路及其监测仿真方法与流程

本发明属于嵌入式系统硬件领域,具体涉及一种适用于专用处理器的多调试模式电路及其监测仿真方法。



背景技术:

现有一款专用处理器,采用了改进型的哈佛结构,包括两个独立的存储器模块flash和sram,以及独立的地址总线和数据总线。flash和sram分别存储指令和数据,处理器工作时,两条总线由程序存储器和数据存储器分时共用,由处理器的存储器片选信号和读写使能信号协同控制,利用公用地址总线访问两个存储器,而公用数据总线则被用来完成程序存储器或数据存储器与cpu之间的数据传输。

对于处理器的仿真,现有的仿真技术主要包括五种:商用cpu仿真技术、基于专有仿真特性的bondout和hooks仿真技术、基于内部仿真电路的嵌入式仿真技术和基于定制开发板的rom监测仿真技术。而该16位处理器的特点是采用了risc精简指令集架构,内部包括主辅寄存器,没有特殊的仿真构造,且不具备嵌入仿真电路,因此只能利用基于定制开发板的rom监测仿真技术进行仿真,但现有rom监测仿真技术都是基于专用处理器芯片的参考原型设计,为了满足不同调试模式的需求,电路设计较为复杂,实现成本高,实用拓展性较差。



技术实现要素:

本发明的目的在于提供一种适用于专用处理器的多调试模式电路及其监测仿真方法,以克服现有技术存在的问题,本发明电路将调试功能进行了简化集成,能够方便高效地完成对处理器的数据监测和功能仿真。

为达到上述目的,本发明采用如下技术方案:

一种适用于专用处理器的多调试模式电路,所述多调试模式电路由嵌套功能状态机实现,嵌套功能状态机包括用于命令包解析的主状态机电路以及程序执行子状态机电路和数据反馈子状态机电路;所述程序执行子状态机电路将单步执行、断点执行、完全执行和寄存器值监测四种调试功能集成在一起,用于控制处理器执行程序,包括用于控制多调试模式程序执行的地址判断电路、用于记录存储器起止地址的地址监测电路以及用于检测寄存器值的状态机指令产生电路;所述数据反馈子状态机电路用于选择返回方式,并反馈程序执行结果及监测数据;

多调试模式电路工作时,下位机连接处理器,上位机为pc端集成开发环境,上位机通过usb通信电路发送命令包至主状态机电路,主状态机电路完成解析后,启动程序执行子状态机电路控制处理器执行程序,最后通过数据反馈子状态机电路将程序执行结果及监测数据反馈至上位机。

一种适用于专用处理器的多调试模式监测仿真方法,包括以下步骤:

步骤1、上位机发送单步执行、断点执行、完全执行的调试模式命令包,主状态机电路接收命令包后进行解析,跳转进入程序执行子状态机电路;

步骤2、程序执行子状态机电路在识别命令包中关键地址后,将不区分调试模式,利用地址判断电路实时检测存储器片选信号和地址总线信号,进行指令运行地址和终止地址的比较,进而控制处理器运行调试指令程序;同时地址监测电路实时比较并记录下存储器的起止地址,确定处理器运行过程中数据变化的地址段;调试程序指令执行完成后,状态机指令产生电路启动,生成附加的通用汇编指令机器码,将寄存器值存储在指定地址中,所述通用汇编指令机器码包括数据传送指令机器码和交换指令机器码;

步骤3、数据反馈子状态机电路识别命令包中控制字节,选择全数据返回或分段数据返回的方式,根据地址监测电路记录下的存储器起止地址,将寄存器值和程序执行结果反馈回上位机。

进一步地,所述命令包通过数据再编码实现,每个命令包由四个字节组成:第一个字节为控制字节即包头,主要控制功能实现,包括程序调试模式和数据反馈方式;中间两个字节为数据字节,为三种不同调试模式下指定的指令运行结束地址;最后一个字节为校验字节即包尾,进行奇偶校验和状态指示。

进一步地,所述状态机指令产生电路基于处理器常用的汇编指令实现,用来监测处理器主辅寄存器的值,具体步骤为:

1)在地址判断电路检测到调试指令结束地址后,flash使能无效,开始监测寄存器的值;

2)状态机指令产生电路产生数据传送指令机器码,将主寄存器r0值存储在指定地址;

3)产生交换指令机器码,交换主寄存器r0和辅助寄存器r1的值;

4)重复产生数据传送指令机器码,将辅助寄存器r1值存储在指定地址;

5)最后产生交换指令机器码,将主寄存器r0值和辅助寄存器r1值恢复。

进一步地,所述的存储器起止地址包括四个地址:当前断点和上一断点的flash读指令地址bp_addr_now以及bp_addr_pre、程序运行过程中的sram写数据地址的最大值sram_addr_max和最小值sram_addr_min。

进一步地,所述的全数据返回或分段数据返回的方式具体为:

全数据返回:每次固定返回全部数据,由sram数据容量决定,反馈顺序为主寄存器r0值和辅寄存器r1值、sram全地址的数据、初始地址0、全返回结束标志数据包;

分段数据返回:每次只返回发生变化地址段范围内的数据,反馈顺序为主寄存器r0值和辅寄存器r1值、sram变化地址的数据、sram_addr_min、分段返回结束标志数据包。

与现有技术相比,本发明具有以下有益的技术效果:

本发明所述的适用于专用处理器的多调试模式电路基于嵌套功能状态机设计,电路结构简单,具有良好的实用性。程序执行子状态机电路利用地址判断电路和状态机指令产生电路将单步执行、断点执行、完全执行和寄存器值监测四种调试功能集成在一起,大大简化了仿真电路;数据反馈子状态机电路结合地址监测电路,提供了两种数据反馈方式,可以满足不同的仿真需求。

本发明所述的适用于专用处理器的多调试模式监测仿真方法,采用所述的适用于专用处理器的多调试模式电路实现,基于此方法设计仿真器成本低且周期短,对于专用处理器具有较好的实用拓展性。命令包的数据再编码由自定义通信协议实现,通讯模式简单且便于功能配置。监测仿真时充分利用了处理器的改进型哈佛结构的特点和通用汇编指令,通过简化的仿真电路将四种主要的调试功能集成在一起,降低了资源消耗率。针对仿真条件的多样性,适用于专用处理器的多调试模式监测仿真方法提供了两种可供选择的数据反馈方式,不但可以满足ram容量和仿真速度的要求,而且还便于上位机对监测结果的查看和处理。

附图说明

图1为处理器的模型结构示意图;

图2为多调试模式的监测仿真电路的功能结构示意图;

图3为通讯命令包的封装组成示意图;

图4为程序执行状态机流程示意图;

图5为数据反馈状态机流程示意图。

具体实施方式

下面结合附图对本发明作进一步详细描述:

参考图1,处理器采用改进的哈佛结构,flash和sram分别存储指令和数据,地址总线和数据总线由两个存储器分时共用,控制总线(包括片选信号和读写使能信号)控制完成程序或数据存储模块与cpu之间的数据传输。在具体设计时,仿真监测电路依托fpga平台实现,由例化ram来代替flash和sram。

参考图2,适用于专用处理器的多调试模式电路及其监测仿真方法是基于嵌套功能状态机实现,嵌套功能状态机包括用于命令包解析的主状态机电路以及程序执行子状态机电路和数据反馈子状态机电路。多调试模式电路工作时,下位机连接处理器,上位机为pc端集成开发环境,程序执行的具体步骤为:

首先,指令下载完成后,上位机选择仿真器的调试模式,发送单步执行、断点执行、完全执行的调试命令包。主状态机电路接收命令包后进行解析,跳转进入程序执行子状态机电路;

参考图3,命令包通过再编码数据包实现,处理器的指令数据为双字节,而重定义的命令包由四个字节组成:第一个字节为控制字节即包头,主要控制功能实现,包括程序调试模式和数据反馈方式,并且数据位还有所保留可进行后续开发和补充;中间两个字节为数据字节,为三种不同调试模式下指定的指令运行结束地址;最后一个字节为校验字节即包尾,与控制字节一起,进行奇偶校验和状态指示。

其次,程序执行子状态机电路识别命令包中关键地址,将不区分调试模式,统一地实时检测存储器片选信号和地址总线信号,利用地址判断电路进行指令运行地址和终止地址的比较,控制处理器调试程序的运行状态;

最后,调试指令执行完成后,状态机指令产生电路启动,生成附加的汇编指令:数据传送指令和交换指令,将主寄存器r0和辅助寄存器r1的值存储在指定地址中,实现寄存器值监测。

多调试模式的监测仿真电路核心为程序执行子状态机电路,由地址判断电路、地址监测电路和状态机指令产生电路构成,将单步执行、断点执行、完全执行和寄存器值监测等四种功能集成在一起。参考图4,程序执行子状态机电路启动,处理器取指运行,同时地址判断电路实时进行循环比较,判断是否达到指定的指令结束地址。这样将仿真器三大调试模式:单步执行、断点执行和完全执行简化成一个控制电路,大大减轻了工程资源复杂度,这也是本发明相较现有仿真电路的主要优化点。调试程序运行结束后,状态机指令产生电路将执行监测寄存器值功能,具体步骤为:

1)检测调试指令结束地址后,flash使能无效,进入寄存器监测态;

2)状态机指令产生电路产生数据传送指令st机器码,将主寄存器r0值存储在指定地址;

3)产生交换指令xchg机器码,交换主寄存器r0和辅助寄存器r1值;

4)重复产生数据传送指令st机器码,将辅助寄存器r1的值存储在指定地址;

5)最后产生交换指令xchg机器码,将主寄存器r0和辅助寄存器r1值恢复。

程序执行结束后,数据反馈子状态机电路将监测结果返回给上位机软件处理,具体步骤为:

首先,程序执行子状态机电路运行过程中,地址监测电路将会实时比较并记录下存储器的起止地址,确定处理器运行过程中数据变化的地址段;

为了便于数据反馈子状态机电路运行时,返回数据段的地址选择,尤其是断点运行时起止地址的判断,程序执行子状态机电路运行时,地址监测电路将配合地址判断电路,实时比较并记录对应地址,具体包括:

bp_addr_pre:上一个断点时,指令存储的flash地址;

bp_addr_now:当前断点时,指令存储的flash地址;

sram_addr_min:返回sram数据的地址最小值;

sram_addr_max:返回sram数据的地址最大值。

地址监测电路在执行断点间的程序时,即flash读指令地址在bp_addr_pre和bp_addr_now之间,通过实时比较记录下sram写数据的地址最大值sram_addr_max和最小值sram_addr_min,由此确定处理器运行过程中变化数据的地址范围。

然后,数据反馈子状态机电路识别命令包中控制字节,选择全数据返回或分段数据返回的方式,将寄存器值和程序执行结果反馈回上位机。

参考图5,数据反馈子状态机电路将首先根据命令包,选择数据返回模式,包括全数据返回和分段数据返回两种模式。全数据返回为固定地址模式,每次固定返回全部数据,返回数据的起始地址为0,终止地址为例化sram的容量;而分段数据返回为浮动地址模式,每次只返回发生变化地址范围内的数据,返回数据的起始地址为sram变化数据的地址最小值,返回数据的终止地址为sram变化数据地址最大值。起止地址确定后,将依次返回主寄存器r0和辅助寄存器r1值、sram地址数据、起始sram地址(sram_addr_min或者初始地址0)及返回结束标志。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1