可设置程序指针值的仿真器的制造方法
【专利摘要】本发明公开了一种可设置程序指针值的仿真器,包括:仿真芯片,调试模块,存储器;存储器内具有用户程序和数据存储器区和监控程序存储器区;调试模块控制仿真芯片处于监控模式或者用户模式,在监控模式下控制仿真芯片执行监控程序存储器区内相应地址处的程序;其中,在监控程序存储器区内存储有修改PC值监控程序,当执行该修改PC值监控程序的返回语句后,当前PC值自动变成堆栈内存放的地址值。本发明在仿真芯片的处理器核不支持写PC值指令的情况下,仿真器也可以提供修改PC值的调试功能;在提高调试用户程序效率的同时,降低仿真调试功能实现对处理器核功能的依赖,降低仿真芯片开发复杂性和成本,提高仿真器设计的通用性。
【专利说明】可设置程序指针值的仿真器
【技术领域】
[0001]本发明涉及一种处理器芯片仿真器,具体而言是涉及一种可设置程序指针值的仿真器。
【背景技术】
[0002]处理器芯片内有用户开发的用户程序,在用户程序的编写和调试中,所使用的工具一般是处理器芯片仿真器。仿真器内使用包含产品处理器芯片各项功能的仿真芯片,用于模拟产品处理器芯片的工作行为,在功能和性能上均十分接近产品处理器芯片;仿真芯片与仿真器主机配合实现用户程序的仿真运行和各项调试功能。因此,仿真芯片一般都是在产品芯片基础上设计的,在沿用产品芯片几乎所有功能模块、处理器核的同时,去除一些与用户程序调试无关的模块,例如安检模块等,去除存储器(存储器在仿真器上外挂,包括程序和数据存储器)引出读写存储器的标准数据/地址总线,增加一个仿真芯片与仿真器通信和导出仿真芯片内数据用的仿真通信通道,以及一些实现仿真调试功能的模块(仿真模块)。在停止执行用户程序时,仿真器处于监控模式,仿真芯片上的仿真模块、仿真通信通道才工作,配合仿真器实现各种仿真调试功能。在执行用户程序时,仿真器处于运行模式,仿真芯片上的仿真模块、仿真通信通道都对用户程序不可见,用户程序与在产品芯片上运行时功能基本一致。为避免与产品芯片发生功能不一致,仿真芯片的处理器核设计完全沿用产品芯片处理器核设计,不会去做修改,因此不能支持产品芯片处理器核不支持的指令。
[0003]程序指针(Program Counter,简称PC)值是用户程序执行以及在仿真器上仿真调试时非常重要的一个参数,它表示下一条将要执行的用户程序语句的位置,即PC值指示的用户程序地址就是下一条将被执行的用户程序语句。修改PC值是仿真器一项非常实用的调试功能,使用户可以通过设置当前PC值,控制仿真芯片下一条执行哪个程序地址处的程序语句。在现有仿真器和仿真芯片中,这一功能需要处理器核支持,处理器核需要支持写PC值的指令,即处理器核可以通过执行程序语句修改PC值,仿真器可以在监控模式下,由仿真芯片执行写PC值的指令把PC值修改为用户设定值。产品芯片处理器核不支持写PC值的指令的话,那么如果在设计仿真芯片时不修改处理器核设计,则仿真器就不能支持修改PC值的调试功能了 ;如果在设计仿真芯片时修改处理器核设计,增加写PC值的指令,由于修改了处理器核设计为保证修改后的正确性,以及仿真芯片在功能上与产品芯片的一致性,则需要重新对仿真芯片的处理器核部分做验证和测试。这一工作十分耗时耗力,而且如果产品处理器核部分是硬核(即芯片厂商无法修改),那么也就无法通过修改处理器核设计增加写PC值的指令,来使对应仿真器和仿真芯片支持修改PC值的调试功能了。
【发明内容】
[0004]本发明要解决的技术问题是提供一种可设置程序指针值的仿真器,即使仿真芯片的处理器核不支持写PC值指令,也可以修改PC值。
[0005]为解决上述技术问题,本发明的可设置程序指针值的仿真器,包括:仿真芯片,调试模块,存储器;
[0006]所述仿真芯片通过调试通道与调试模块相连接;所述仿真芯片内具有与产品芯片一致的处理器核;该处理器核与存储器和调试模块之间通过数据/地址总线相连接;
[0007]所述存储器内具有用户程序和数据存储器区和监控程序存储器区;
[0008]所述调试模块控制仿真芯片处于监控模式或者用户模式,在监控模式下控制仿真芯片执行所述监控程序存储器区内相应地址处的程序;
[0009]其中:在所述监控程序存储器区内存储有修改程序指针PC值监控程序,当执行该修改程序指针PC值监控程序的返回语句后,当前程序指针PC值自动变成堆栈内存放的地址值。
[0010]所述调试模块通过所述标准数据/地址总线修改存储器内监控程序存储器区的监控程序语句。
[0011]所述仿真芯片的处理器核在用户模式下,通过所述标准数据/地址总线从存储器的用户程序和数据存储器区读取并执行用户程序及读写用户数据;在用户模式下该处理器核不能访问存储器的监控程序存储器区。
[0012]所述仿真芯片的处理器核在监控模式下,通过所述标准数据/地址总线从存储器的监控程序存储器区读取并执行监控程序;在监控模式下该处理器核不能访问存储器的用户程序和数据存储器区。
[0013]还包括位于用户电脑上的集成开发环境模块,所述调试模块通过通信通道与集成开发环境模块相连接,该调试模块通过所述通信通道从集成开发环境模块接收指令和参数。
[0014]采用本发明的仿真器,即使仿真芯片的处理器核不支持写PC值指令,所实现的仿真器中仿真芯片也不需要修改处理器核,增加对写PC值指令的支持,仿真器也可以提供修改PC值的调试功能。在提供了实用调试功能提高调试用户程序效率的同时,有助于降低仿真调试功能实现对处理器核功能(写PC值)的依赖,避免修改处理器核设计,降低仿真芯片开发复杂性和成本,提高仿真器设计的通用性。
【专利附图】
【附图说明】
[0015]下面结合附图和【具体实施方式】对本发明作进一步详细的说明:
[0016]附图是所述可设置程序指针值的仿真器一实施例结构示意图。
【具体实施方式】
[0017]参见附图所示,所述可设置程序指针值的仿真器I在本实施例中,包括仿真芯片3,调试模块5,存储器6,以及用户电脑上的集成开发环境2。仿真芯片3通过调试通道9与调试模块5连接。仿真芯片3内有与产品芯片一致的处理器核4。存储器6内有两个地址区域,分别是用户程序和数据存储器区7,监控程序存储器区8。调试模块5通过所述调试通道9控制仿真芯片3处于监控模式或者用户模式。在监控模式下调试模块5控制仿真芯片3执行存储器6内监控程序存储器区8某一地址处的程序。
[0018]监控程序存储器区8内有用于实现修改PC值的一段修改PC值监控程序,这段修改PC值监控程序包括压栈(I3USH地址A),返回(RETURN)两条程序语句。返回语句具有这样的特性,在执行后,当前程序PC值就自动变成堆栈内存放的地址值。
[0019]仿真器I上有一个标准数据/地址总线10连接仿真芯片3的处理器核4、存储器6和调试模块5。调试模块5通过所述标准数据/地址总线10修改存储器6内监控程序存储器区8的监控程序语句。
[0020]仿真芯片3的处理器核4在用户模式下,通过所述标准数据/地址总线10从存储器6的用户程序和数据存储器区7读取、执行用户程序及读写用户数据。在用户模式下,仿真芯片3不能访问存储器6的监控程序存储器区8。
[0021]仿真芯片3的处理器核4在监控模式下,通过所述标准数据/地址总线10从存储器6的监控程序存储器区8读取、执行监控程序。在监控模式下仿真芯片3不能访问存储器6的用户程序和数据存储器区7。
[0022]调试模块5通过通信通道11与集成开发环境模块2连接,调试模块5通过所述通信通道11从集成开发环境模块2接收指令和参数。
[0023]这样,用户在集成开发环境模块2上设置PC值时,集成开发环境模块2把写PC值指令和目标PC值(用户程序中的地址B)通过通信通道11传给调试模块5。调试模块5通过标准数据/地址总线10修改监控程序存储器区8内修改PC值监控程序中压栈语句,把压栈语句的参数一地址值A改成地址B。调试模块5通过调试通道9控制仿真芯片3进入监控模式,仿真芯片3的处理器核4通过标准数据/地址总线10执行监控程序存储器区8内修改PC值监控程序,然后,调试模块5再控制仿真芯片3切换到用户模式。由于仿真芯片3的处理器核4在监控模式下执行修改PC值监控程序,执行压栈语句把处理器核4堆栈内的地址值改成了目标地址B,执行返回语句后,当前PC值就变成了地址B。这样,就完成了用户程序PC值的修改。
[0024]所述可设置程序指针值的仿真器1,即使仿真芯片的处理器核不支持写PC值指令,也可以提供修改PC值的调试功能,能设置程序指针值。
[0025]以上通过【具体实施方式】和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
【权利要求】
1.一种可设置程序指针值的仿真器,包括:仿真芯片,调试模块,存储器;所述仿真芯片通过调试通道与调试模块相连接;所述仿真芯片内具有与产品芯片一致的处理器核;该处理器核与存储器和调试模块之间通过数据/地址总线相连接; 所述存储器内具有用户程序和数据存储器区和监控程序存储器区; 所述调试模块控制仿真芯片处于监控模式或者用户模式,在监控模式下控制仿真芯片执行所述监控程序存储器区内相应地址处的程序; 其特征在于:在所述监控程序存储器区内存储有修改程序指针PC值监控程序,当执行该修改程序指针PC值监控程序的返回语句后,当前程序指针PC值自动变成堆栈内存放的地址值。
2.如权利要求1所述的仿真器,其特征在于:所述调试模块通过所述数据/地址总线修改存储器内监控程序存储器区的监控程序语句。
3.如权利要求1所述的仿真器,其特征在于:所述仿真芯片的处理器核在用户模式下,通过所述数据/地址总线从存储器的用户程序和数据存储器区读取并执行用户程序及读写用户数据;在用户模式下该处理器核不能访问存储器的监控程序存储器区。
4.如权利要求1所述的仿真器,其特征在于:所述仿真芯片的处理器核在监控模式下,通过所述数据/地址总线从存储器的监控程序存储器区读取并执行监控程序;在监控模式下该处理器核不能访问存储器的用户程序和数据存储器区。
5.如权利要求1所述的仿真器,其特征在于:所述修改程序指针PC值监控程序包括压栈,返回两条程序语句。
6.如权利要求1-5任一所述的仿真器,其特征在于:还包括位于用户电脑上的集成开发环境模块,所述调试模块通过通信通道与集成开发环境模块相连接,该调试模块通过所述通信通道从集成开发环境模块接收指令和和参数。
【文档编号】G06F9/455GK103677953SQ201210362728
【公开日】2014年3月26日 申请日期:2012年9月25日 优先权日:2012年9月25日
【发明者】许国泰 申请人:上海华虹集成电路有限责任公司