带有软件断点的仿真器的制作方法

文档序号:6363140阅读:193来源:国知局
专利名称:带有软件断点的仿真器的制作方法
技术领域
本发明涉及一种处理器芯片仿真器,特别是涉及一种带有软件断点的仿真器。
背景技术
处理器芯片内有用户开发的用户程序,在用户程序的编写和调试中,所使用的工具一般是处理器芯片仿真器。仿真器内使用包含产品处理器芯片各项功能的仿真芯片和存放用户程序的存储器,模拟产品处理器芯片的读取和执行用户程序的工作行为。仿真器的其他部件与仿真芯片、存储器相互配合实现各项调试功能,包括设置/清除断点、单步运行程序等。
断点功能是仿真器必须具备的基本功能,也是程序调试中使用最多的调试手段之一。采用扫描链技术实现的仿真器中包含硬件断点和软件断点这两种断点。硬件断点是在仿真芯片内以寄存器资源实现的,硬件断点寄存器内存放用户设置了断点的用户程序语句地址,在用户在程序中设置硬件断点时写入仿真芯片内的硬件断点寄存器,在仿真芯片全速读取和执行用户程序时,仿真芯片一旦发现通过数据/地址总线读取到的用户程序语句地址与硬件断点寄存器内存放的用户程序语句地址相同,就会停止执行该地址上的用户程序语句,进入停止状态。用户通过集成开发环境清除硬件断点,仅需由仿真器清除仿真芯片中对应硬件断点寄存器中存放的该断点所在用户程序语句地址即可。但是,因为硬件断点是需要占用仿真芯片寄存器资源实现的,所以现有仿真器中一般都只支持2-4个硬件断点,这在数量上是远远无法满足程序调试需求的。因此,采用扫描链技术实现的仿真器中通常还带有软件断点。软件断点实现方式是用户在程序中设置软件断点时,由集成开发环境模块(个人电脑上)记录设置了软件断点的用户程序语句地址和用户程序语句数据,通过仿真器以仅仿真芯片能识别的非标程序语句(例如8051中的A5机器码指令可以用来做软件断点)来替换存储器内用户程序中设置了软件断点的用户程序语句地址处的用户程序语句数据。仿真芯片开始读取和执行用户程序后,一旦发现通过数据/地址总线读取到的用户程序语句数据是预定的仅仿真芯片能识别的非标程序语句,就会停止执行数据/地址总线上的程序语句,进入停止状态;然后由仿真器把该软件断点程序地址处的用户程序语句数据(预定的仅仿真芯片能识别的非标程序语句)按照集成开发环境模块中的记录替换回对应的原始用户程序语句数据,以便继续从该断点处执行用户程序。用户通过集成开发环境模块清除软件断点,亦需由仿真器把存储器内该软件断点程序地址处的用户程序语句数据(预定的仅仿真芯片能识别的非标程序语句)按照集成开发环境模块中的记录替换回对应的原始用户程序语句数据。
从上述实现原理可以看出,相比于硬件断点,软件断点设置的个数可以不受限制,但是在设置和清除软件断点时,都有一次修改存储器内用户程序语句的过程。如果存储器是易失性存储器,例如SRAM (Static Random Access Memory,静态随机存取存储器)等则不存在什么问题。但如果产品芯片中存放用户程序的是非易失性存储器,例如EEPROM(ElectricalIy Erasable Programmable Read-Only Memory,电可擦可编程只读存储器),FLASH(闪速存储器)等非易失性存储器,且为了真实仿真存储器性能,仿真器内存储器使用与产品处理器芯片中一致的非易失性存储器;由于非易失性存储器都具有按页(128字节或512字节一页等)且按流程(先擦除整页后写入等)写入的特点,设置/清除软件断点也就是修改部分用户程序语句时,需要对目标程序语句所在的存储器页重新按流程整页写入;这样就会表现为设置/清除软件断点操作非常慢,与硬件断点的设置/清除速度差距极大,影响用户的调试感受和效率。因此,仿真器中在用户设置断点时一般都是优先使用硬件断点,硬件断点资源用完后才自动开始使用软件断点。此外,开始运行用户程序前,断点设置/清除的动作一般较为频繁,硬件断点用完后,使用的软件断点个数比较多的话,反复替换存储器中用户程序语句也会加大存储器内程序修改出错的风险。遇到软件断点恢复原始用户程序语句的过程,由于程序已经停止运行,该过程用户基本感受不到,所以基本没有影响。发明内容
本发明要解决的技术问题提供一种带有软件断点的仿真器,能够整体上提高软件断点的设置/清除效率,改善用户的调试感受和效率,降低存储器内程序修改出错的风险。
为解决上述技术问题,本发明的带有软件断点的仿真器,包括:仿真芯片,仿真模块,存储器,以及用户电脑上的集成开发环境模块;
所述仿真芯片和仿真模块之间通过第一标准数据/地址总线连接,所述仿真模块和存储器之间通过第二标准数据/地址总线连接,所述仿真芯片与仿真模块之间还连接有一根停止标志信号线;所述仿真模块与所述集成开发环境模块之间通过仿真通信通道连接;
所述集成开发环境模块记录所有设置了软件断点的用户程序语句地址和对应的原始用户程序语句数据,构成软件断点信息表存放在所述集成开发环境模块中,由该集成开发环境模块对其进行修改;
启动用户程序执行后,所述仿真模块从集成开发环境模块中获取软件断点信息表,并由软件断点信息表获取各软件断点所对应的用户程序语句地址和用户程序语句数据;所述仿真模块从存储器中顺序读取包含软件断点对应用户程序语句地址的各页数据,暂存在仿真模块内;所述仿真模块以仅仿真芯片能识别的非标准程序语句,按照软件断点信息表替换掉该页数据内设置了软件断点的各用户程序语句地址处的用户程序语句数据,替换后由仿真模块把该页数据按存储器的写入流程重新写入存储器中;所有存储器内必要页改写和替换完成后,所述仿真芯片才开始读取和执行用户程序。
用户程序执行过程中,一旦所述仿真芯片发现读取到的用户程序语句数据是所述非标准程序语句,则停止执行用户程序语句,进入停止状态,并通知仿真模块已遇到软件断点,停止执行用户程序;仿真模块按照软件断点信息表把存储器内用户程序中当前软件断点对应用户程序语句地址处的用户程序语句数据替换回对应的原始用户程序语句数据。
设置软件断点时只修改所述软件断点信息表;清除已设置的软件断点时,只清除所述软件断点信息表中相应软件断点所对应的用户程序语句地址和原始用户程序语句数据。
所述存储器为非易失性存储器,用于存放用户程序;所述仿真模块通过第二标准数据/地址总线从存储器读取用户程序并通过第一标准数据/地址总线传送给仿真芯片,供仿真芯片读取。
所述仿真模块通过第二标准数据/地址总线对存储器执行页数据读取、擦除页数据和写入页数据操作,读取到的页数据暂存在仿真模块内,并能对暂存的页数据进行修改。
采用本发明的带有软件断点的仿真器,能整体上提高软件断点的设置/清除效率,改善用户的调试效率,降低存储器内程序修改出错的风险;有助于提高仿真器系统的工作稳定性、提高用户感受。


下面结合附图和具体实施方式
对本发明作进一步详细的说明:
附图是所述带有软件断点的仿真器一实施例结构示意图。
具体实施方式
参见附图所示,所述带有软件断点的仿真器1,包括:仿真芯片2、仿真模块3、存储器4,以及用户电脑上的集成开发环境模块6和集成开发环境6中记录的软件断点信息表5。仿真芯片2和仿真模块3之间通过第一标准数据/地址总线7连接,仿真模块3和存储器间4通过第二标准数据/地址总线9连接。仿真芯片2与仿真模块3之间还设有一根停止标志信号线10。仿真模块3与用户电脑上的集成开发环境模块6之间通过仿真通信通道8连接。软件断点信息表5存放在集成开发环境模块6中,由集成开发环境模块6对其进行修改。
开始执行用户程序前,用户通过集成开发环境模块6在程序中设置软件断点时,由集成开发环境模块6记录所有设置了软件断点的用户程序语句地址和对应的原始用户程序语句数据,构成软件断点信息表5,即该软件断点信息表5包括了设置了软件断点的用户程序语句地址和对应的原始用户程序语句数据。此时设置软件断点只修改集成开发环境模块6中的软件断点信息表5,同样的清除已设置的软件断点,也只修改(清除)软件断点信息表5中对应的软件断点用户程序语句地址和原始用户程序语句数据。
在用户启动程序执行后,先由仿真模块3通过仿真通信通道8从集成开发环境模块6中获取软件断点信息表5。仿真模块3通过第二标准数据/地址总线9从存储器4中顺序读取各页数据(仅读取其中包含软件断点对应程序地址的页,不包含软件断点对应程序地址的那些页不需要读取出来),暂存在仿真模块3内。仿真模块3以仅仿真芯片2能识别的非标程序语句(例如8051中的A5机器码指令可以用来做软件断点),按照集成开发环境模块6中记录的软件断点信息表5替换掉该页数据内设置了软件断点的各用户程序语句地址处的用户程序语句数据,替换后由仿真模块3把该页数据按存储器4的写入流程(先擦除后写入等)重新写入存储器4中。所有存储器4内必要页改写、替换完成后,仿真芯片2才开始经由仿真模块3读取和执行用户程序,一旦仿真芯片2发现通过第一数据/地址总线7读取到的用户程序语句数据是预定的仅仿真芯片2能识别的非标程序语句,就停止执行第一标准数据/地址总线上的用户程序语句,进入停止状态;并通过停止标志信号10通知仿真模块3已遇到软件断点停止执行用户程序。然后,仿真模块3按照集成开发环境模块6中记录的软件断点信息表5把存储器4内用户程序中当前软件断点对应用户程序语句地址处的用户程序语句数据替换回对应的原始用户程序语句数据。
这样,即使运行用户程序前软件断点设置/清除的动作比较多,也因为在设置/清除软件断点时不直接对存储器4做用户程序语句替换操作,且写电脑端的集成开发环境模块6中软件断点信息表5的速度相对替换存储器4中用户程序语句的速要快很多,因此,提高了软件断点的设置/清除效率,改进了用户感受,同时也降低了反复替换存储器4中程序语句导致出错的风险。
从上述实施过程的描述可以看出,软件断点设置的个数仍可以不受限制,且仅在开始执行用户程序时才有一次按照软件断点信息表5修改存储器4内部分页内用户程序语句的过程。特别是如果存储器4某页内有多个软件断点对应的用户程序语句地址,在仿真模块3从存储器4读取出该页后,一次性地完成该页内所有软件断点对应用户程序语句地址的用户程序语句替换,并一次性地按存储器4写入流程写入到存储器4中。相比于现有仿真器中每设置一个软件断点都需要从存储器4内读取出一页数据,替换后重新按流程写入存储器,明显地从整体上提升了设置效率和速度,同时该页读取、擦除、写入次数的减少也降低了存储器4中因反复操作导致出错的风险,亦延长了存储器4的寿命。
以上通过具体实施方式
和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
权利要求
1.一种带有软件断点的仿真器,其特征在于,包括:仿真芯片,仿真模块,存储器,以及用户电脑上的集成开发环境模块; 所述仿真芯片和仿真模块之间通过第一标准数据/地址总线连接,所述仿真模块和存储器之间通过第二标准数据/地址总线连接,所述仿真芯片与仿真模块之间还连接有一根停止标志信号线;所述仿真模块与所述集成开发环境模块之间通过仿真通信通道连接; 所述集成开发环境模块记录所有设置了软件断点的用户程序语句地址和对应的原始用户程序语句数据,构成软件断点信息表存放在所述集成开发环境模块中,由该集成开发环境模块对其进行修改; 启动用户程序执行后,所述仿真模块从集成开发环境模块中获取软件断点信息表,并由软件断点信息表获取各软件断点所对应的用户程序语句地址和用户程序语句数据;所述仿真模块从存储器中顺序读取包含软件断点对应用户程序语句地址的各页数据,暂存在仿真模块内;所述仿真模块以仅仿真芯片能识别的非标准程序语句,按照软件断点信息表替换掉该页数据内设置了软件断点的各用户程序语句地址处的用户程序语句数据,替换后由仿真模块把该页数据按存储器的写入流程重新写入存储器中;所有存储器内必要页改写和替换完成后,所述仿真芯片才开始读取和执行用户程序。
2.如权利要求1所述的仿真器,其特征在于:在用户程序执行过程中,一旦所述仿真芯片发现读取到的用户程序语句数据是所述非标准程序语句,则停止执行用户程序语句,进入停止状态,并通知仿真模块已遇到软件断点,停止执行用户程序;仿真模块按照软件断点信息表把存储器内用户程序中当前软件断点对应用户程序语句地址处的用户程序语句数据替换回对应的原始用户程序语句数据。
3.如权利要求1所述的仿真器,其特征在于:设置软件断点时只修改所述软件断点信息表;清除已设置的软件断点时,只清除所述软件断点信息表中相应软件断点所对应的用户程序语句地址和原始用户程序语句数据。
4.如权利要求1所述的仿真器,其特征在于:所述存储器为非易失性存储器,用于存放用户程序;所述仿真模块通过第二标准数据/地址总线从存储器读取用户程序并通过第一标准数据/地址总线传送给仿真芯片,供仿真芯片读取。
5.如权利要求1或4所述的仿真器,其特征在于:所述仿真模块通过第二标准数据/地址总线对存储器执行页数据读取、擦除页数据和写入页数据操作,读取到的页数据暂存在仿真模块内,并能对暂存的页数据进行修改。
全文摘要
本发明公开了一种带有软件断点的仿真器,包括仿真芯片,仿真模块,存储器,以及用户电脑上的集成开发环境模块;所述仿真芯片和仿真模块之间通过第一标准数据/地址总线连接,所述仿真模块和存储器之间通过第二标准数据/地址总线连接,所述仿真芯片与仿真模块之间还连接有一根停止标志信号线;所述仿真模块与用户电脑上的集成开发环境模块之间通过仿真通信通道连接,软件断点信息表存放在所述集成开发环境模块中,由该集成开发环境模块对其进行修改。本发明能够整体上提高软件断点的设置/清除效率,改善用户的调试感受和效率,降低存储器内程序修改出错的风险。
文档编号G06F11/36GK103207830SQ20121000970
公开日2013年7月17日 申请日期2012年1月13日 优先权日2012年1月13日
发明者许国泰 申请人:上海华虹集成电路有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1