本发明涉及处理器芯片调试领域,特别是涉及一种仿真器。本发明还涉及一种仿真器断点实现方法。
背景技术:
处理器芯片内有用户开发的用户程序,在用户程序的编写和调试中,所使用的工具一般是仿真器。仿真器内使用包含产品处理器芯片各项功能的仿真芯片,用于模拟产品处理器芯片的工作行为,仿真芯片与仿真器其他部件(存放用户程序的程序存储器、存放数据的数据存储器,以及用户电脑上的集成开发环境等)配合实现用户程序的仿真运行和各项调试功能。
用户程序调试过程中经常会遇到代码执行过程中出现数据存储器非预期的异常写入情况,非常希望能有调试手段准确地寻找到执行哪一段或哪一句代码时,触发了非预期的异常数据存储器写入,以便进一步分析和调试。
使用现有的仿真器设计,调试上述问题时,只能采用不断设置代码断点,触发断点后不断查看数据存储器是否有异常写入,来逐步逼近造成问题的代码段或代码语句,非常麻烦、调试效率低下。同时,如果数据存储器异常写入不是每次执行代码时都稳定发生的,采用上述调试方法将更加困难。
技术实现要素:
本发明要解决的技术问题是提供一种仿真器,能够在用户程序执行到指定地址前,如果发生数据存储器非预期异常写入,则会立即触发断点功能;为此,本发明还要提供一种仿真器断点实现方法。
为解决上述技术问题,本发明的仿真器,包括:信号检测模块、断点地址寄存器、调试模块和安装在用户电脑上的集成开发环境模块;所述信号检测模块通过写信号线接收来自处理器核的数据存储器写信号,通过断点触发信号线与调试模块相连接,所述断点地址寄存器通过所述断点触发信号线与调试模块相连接;所述调试模块通过调试通道与用户电脑上的集成开发环境模块相连接;
所述断点地址寄存器中存放用户设置的用户程序断点地址数据,如果用户程序全速执行到了断点地址寄存器中存放的用户程序断点地址处,断点地址寄存器则通过断点触发信号线向调试模块发出触发断点信号;仿真器上用户代码开始全速执行后,所述信号检测模块通过写信号线实时监测输入的数据存储器写信号,如果是无效的写信号,则不通过断点触发信号线向调试模块发出触发断点信号;如果出现了有效的写信号,则通过断点触发信号线向调试模块发出触发断点信号;所述调试模块接收到触发断点信号后,停止执行用户程序,并把停止执行时的用户程序地址通过调试通道发送给集成开发环境模块显示出来。
仿真器所述仿真器采用的另一种技术方案是,包括:信号检测模块、断点地址寄存器、调试模块和用户电脑;所述信号检测模块的输入端与写信号线相连接,通过断点触发信号线与调试模块相连接,所述断点地址寄存器通过所述断点触发信号线与调试模块相连接;所述调试模块通过调试通道与用户电脑相连接。
所述用户电脑上安装有集成开发环境模块,所述调试模块通过调试通道与安装在用户电脑上的集成开发环境模块相连接。
所述仿真器断点实现方法是通过以下技术方案实现的:
采用断点地址寄存器存放用户设置的用户程序断点地址数据,如果用户程序全速执行到了断点地址寄存器中存放的用户程序断点地址处,断点地址寄存器通过断点触发信号线向调试模块发出触发断点信号;仿真器上用户代码开始全速执行后,采用信号检测模块实时监测输入的数据存储器写信号,如果是无效的写信号,则不通过所述断点触发信号线向调试模块发出触发断点信号;如果出现了有效的写信号,则通过断点触发信号线向调试模块发出触发断点信号;所述调试模块接收到触发断点信号后,停止执行用户程序,并把停止执行时的用户程序地址通过调试通道发送给用户电脑上的集成开发环境模块显示出来。
由于采用本发明的仿真器和方法,能够提供一种断点调试功能,在用户程序执行到指定地址前,如果发生数据存储器非预期异常写入,则会立即触发断点功能,用户程序立即停止执行,且程序执行地址指针停止在发生数据存储器异常写入时所执行的用户程序语句地址上,并通过调试界面显示给用户查看。这样,极大地方便了用户调试、定位数据存储器非预期异常写入的错误,提高了代码开发和调试的效率。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明:
图1是所述仿真器一实施例的结构示意图。
具体实施方式
如图1所示,所述仿真器1在下面的实施例中,包括:信号检测模块2、断点地址寄存器3、调试模块4和集成开发环境模块5。所述信号检测模块2通过写信号线6接收来自处理器核的数据存储器写信号,通过断点触发信号线7与调试模块4相连接,所述断点触发信号线7同时与断点地址寄存器3相连接。调试模块4通过调试通道8与用户电脑上的集成开发环境模块5相连接。
所述断点地址寄存器3中存放用户设置的用户程序断点地址数据,全速开始执行用户程序后,如果用户程序执行到了断点地址寄存器3中存放的用户程序断点地址处,断点地址寄存器3马上通过断点触发信号线7向调试模块4发出触发断点信号。仿真器1上用户代码开始全速执行后,所述信号检测模块2通过写信号线6实时监测输入的数据存储器写信号,如果是无效的写信号,则不通过断点触发信号线7向调试模块4发出触发断点信号;如果出现了有效的写信号,则马上通过断点触发信号线7向调试模块4发出触发断点信号。所述调试模块4接收到触发断点信号后,马上停止执行用户程序,并把停止执行时的用户程序地址通过调试通道8发送给集成开发环境模块5显示出来。
这样,用户程序执行到指定地址前,如果发生数据存储器非预期异常写入,则会立即触发断点功能,用户程序立即停止执行,且程序执行地址指针停止在发生数据存储器异常写入时所执行的用户程序语句地址上,并通过调试界面显示给用户查看,用户可以方便、高效地查找出引起异常写入的程序语句位置;如果没有发生异常写入,则用户程序也会执行到设置的断点地址处后停止执行,与正常断点功能一样,方便用户了解本次执行中未触发数据存储器异常写入,如果多次重复都未触发,则用户可以据此判断执行到设置断点的地址处的用户程序程序段不会触发异常写入,可以把怀疑点放到其他程序段上去。这就极大地方便了用户调试、定位数据存储器非预期异常写入的错误,提高了代码开发和调试的效率。
所述信号检测模块3、断点地址寄存器3和调试模块4都可使用fpga(field-programmablegatearray,即现场可编程门阵列)中的逻辑资源和寄存器资源配合逻辑设计实现。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。