微处理器芯片仿真器及断点设置的方法 【技术领域】
本发明涉及一种微处理器芯片仿真器。本发明还涉及一种全速运行用户程序时设置断点的方法。
背景技术
在开发、调试微处理器芯片中用户程序时,程序开发人员所使用的工具是与微处理器芯片配套的仿真器。与产品芯片不同,在仿真器中使用的是仿真芯片,仿真芯片工作在用户模式或者监控模式,并始终在这两种模式间切换。当仿真芯片工作在用户模式时,执行用户程序模拟产品芯片的实际工作状态;当仿真芯片工作在监控模式时,执行仿真器独有的监控程序,通过仿真器与仿真芯片间的仿真通道观察、设置、修改芯片的状态和参数。
使用仿真器调试用户程序时,往往需要用到断点这一十分常用的调试手段,断点的主要作用是用于观察程序在全速执行的过程中是否能执行到设置了断点的程序位置,同时在断点设置位置处程序停下后,可以观察此时存储器、SFR等的芯片状态。现有的仿真器都只能在仿真芯片处于监控模式下,才能设置断点,在全速执行用户程序时是不能设置断点的。使用现有的仿真器,用户如果启动仿真器全速执行用户程序后,就不能再直接设置断点,必须先使仿真器停止执行用户程序,使仿真器和仿真芯片进入监控模式,再设置断点。如果需要继续运行的话,再控制仿真芯片从停止处继续运行。这样处理使用起来不是很方便。
另外,很多微处理器芯片的仿真过程中需要与其他目标系统配合调试。例如接触式智能卡芯片就需要配合接触式智能卡读卡机(目标系统)调试。在接触式智能卡中,如果目标系统一定时间内没有收到接触式智能卡芯片的响应信息,就会认为用户程序或芯片工作出错;目标系统就会拉低复位信号,强制停止与接触式智能卡芯片和用户程序的交互的通信过程,使其退回到复位状态。采用现有的仿真器配合目标系统调试用户程序,在全速执行用户程序并与目标系统交互通信后,如果需要设置断点,就必须停止执行用户程序,设置断点,再重新启动仿真芯片继续执行用户程序;这一过程所需的时间必然超过目标系统的响应时间要求,使用户程序无法从停止处继续运行,必须从头再来执行一遍之前的通信过程。这对调试工作是非常不方便的,极大地降低了程序调试的效率。
【发明内容】
本发明要解决的技术问题是提供一种微处理器芯片仿真器,在全速运行用户程序时仍旧可以设置断点;为此本发明还要提供一种全速运行用户程序时设置断点的方法。
为解决上述技术问题,本发明的微处理器芯片仿真器,包括:仿真芯片和仿真管理模块;所述仿真芯片通过仿真管理接口与仿真管理模块相连接,仿真管理模块控制仿真芯片工作在监控模式或者用户模式;
当仿真芯片工作在监控模式时,仿真管理模块向仿真芯片提供断点信息,仿真芯片执行监控程序完成断点的设置;
当仿真芯片从用户模式切换到监控模式时,仿真管理模块记录用户程序执行停止的位置;当仿真芯片从监控模式切换回用户模式时,仿真管理模块控制仿真芯片从所述停止的位置处继续执行用户程序。
仿真芯片从用户模式切换到监控模式后,始终从监控程序的“0”地址处开始执行。
本发明的全速运行用户程序时设置断点的方法是,仿真管理模块通过仿真管理接口控制仿真芯片工作在用户模式或监控模式;
仿真芯片工作在用户模式时,仿真芯片通过数据/地址总线全速执行用户程序存储器中的用户程序;如果用户设置了断点,仿真管理模块通过仿真管理接口控制仿真芯片切换到监控模式,并把断点信息提供给仿真芯片;仿真芯片通过数据/地址总线执行监控程序存储器中的监控程序完成断点的设置;然后,仿真管理模块通过仿真管理接口控制仿真芯片重新工作到用户模式,仿真芯片通过数据/地址总线继续执行用户程序存储器的用户程序。
用本发明的微处理器芯片仿真器及方法,全速运行用户程序时也可以设置断点,提高了程序的调试工作效率,特别是可以极大地提高需要配合目标系统交互通信调试,且目标系统对响应时间有要求情况下的程序调试效率。
【附图说明】
下面结合附图和具体实施方式对本发明作进一步详细的说明:
附图是本发明的微处理器芯片仿真器结构示意图。
【具体实施方式】
如图所示,本发明的微处理器芯片仿真器1包括仿真芯片2、仿真管理模块3、用户程序存储器4和监控程序存储器5。仿真芯片2与仿真管理模块3之间有仿真管理接口8,仿真管理模块3通过仿真管理接口8控制仿真芯片2工作在监控模式或者用户模式。当仿真芯片2工作在监控模式时,仿真管理模块3可通过仿真管理接口8提供断点信息给仿真芯片2,仿真芯片2执行监控程序完成断点的设置。仿真芯片2从用户模式切换到监控模式时,仿真管理模块3会记录用户程序执行停止的位置;仿真芯片2再切换回用户模式时,仿真管理模块3控制仿真芯片2从所述停止的位置处继续执行用户程序。仿真芯片2从用户模式切换到监控模式后,始终从监控程序的“0”地址处开始执行。
仿真芯片2与用户程序存储器4间有标准的数据/地址总线6,当仿真芯片2工作在用户模式时,仿真芯片2执行用户程序存储器4中的用户程序,模拟产品芯片的工作情况。仿真芯片2与监控程序存储器5间也有标准的数据/地址总线7,当仿真芯片2工作在监控模式时,仿真芯片2执行监控程序存储器7中的监控程序,可以在仿真管理模块3的控制下设置断点。
用户要求微处理器芯片仿真器1全速运行后,仿真管理模块3通过仿真管理接口8控制仿真芯片2工作在用户模式,仿真芯片2通过数据/地址总线6执行用户程序存储器4中的用户程序。此时,仿真芯片2全速执行用户程序,如果用户设置了断点,仿真管理模块3通过仿真管理接口8控制仿真芯片2切换到监控模式,并把断点信息提供给仿真芯片2。仿真芯片2通过数据/地址总线7执行监控程序存储器5中的监控程序完成断点地设置。然后,仿真管理模块3通过仿真管理接口8控制仿真芯片2重新工作到用户模式,仿真芯片2通过数据/地址总线6继续执行用户程序存储器4中的用户程序。
在上述过程中,仿真芯片2工作模式的切换对用户而言是不可见的,这样就实现了用户程序全速运行时设置断点的功能。
对于需要配合目标系统调试的微处理器芯片仿真器1,完成工作模式的切换、断点的设置都是由微处理器芯片仿真器1在后台完成的,这一过程所需的时间非常的短。由于没有手动停止程序执行,设置断点,再启用程序运行的过程,不会出现因这一手动控制过程所导致的目标系统判断交互通信超时的错误,保证了需要交互通信的程序可以连续地调试下去。
以上通过具体实施方式对本发明进行了详细的说明,对于本领域的技术人员来说,在不脱离本发明原理的情况下,还可做出若干变形和改进,这些也应视为属于本发明的保护范围。