一种支持nvm软断点调试的仿真器和方法

文档序号:6624874阅读:240来源:国知局
一种支持nvm软断点调试的仿真器和方法
【专利摘要】本发明介绍一种支持NVM软断点调试的仿真器和方法,涉及芯片仿真【技术领域】。仿真器包括仿真器调试模块和仿真器硬件,仿真器硬件主要包括芯片功能调试模块、CPU、芯片MMU、芯片NVM、芯片RAM、调试RAM等模块。仿真器调试模块将擦写程序和断点数据分别写入调试RAM的擦写程序RAM和断点存储RAM中,并依据断点数据将芯片NVM中断点地址的代码备份到断点存储RAM,控制CPU执行擦写程序将NVM中断点地址的代码写为断点指令,实现断点设置功能;将芯片NVM中断点指令改回断点存储RAM备份的代码,实现断点清除功能。
【专利说明】一种支持NVM软断点调试的仿真器和方法

【技术领域】
[0001]本发明涉及一种芯片仿真器,特别涉及一种支持NVM软断点调试的仿真器和方法。

【背景技术】
[0002]断点调试是智能卡芯片仿真器主要调试手段,仿真器通常都会支持硬断点调试,由于CPU调试模块硬断点寄存器个数的限制,仿真器支持的硬断点个数较少,例如ARM7内核最多支持两个硬断点。
[0003]软断点则是通过在代码中设置特征值的方式来实现,特征值通常称为断点指令。当需要在某地址代码处设置软断点的时候,仿真器会先将此处代码进行备份保护,然后将预先设定好的断点指令写入此地址,覆盖原来的代码数据。当程序运行到断点指令处时,便会产生中断,或是程序停止运行。当取消断点时,之前受保护的代码信息会被自动恢复。
[0004]硬断点可以设置在任何存储器的代码上,例如RAM和NVM(NVM包括ROM、EEPR0M、FLASH等);而软断点由于需要修改相应地址的值,所以一般只能设在RAM上,断点数量可以不受限制。由于芯片程序存储器通常为NVM,少数的硬断点很难满足工程师进行深入调试的需要,希望仿真器支持NVM的软断点调试。为解决NVM无法设置软断点的问题,有些仿真器实现了在FLASH上设置软断点的功能,实现原理是设置软断点对Flash进行擦写操作,需要仿真器能够有Flash编程功能,并且能够在尽可能短的时间内完成断点指令的写入。由于对Flash进行擦写需要一定的时间,在执行到Flash断点的时候会感觉到停顿,用户体验不好。另外由于FLASH擦写程序及下载数据缓存在芯片RAM中,每次断点操作时都需下载擦写程序,进行用户RAM数据保护,使得仿真器设计变得复杂。
[0005]为解决上述方案中断点调试速度慢,芯片RAM数据需要保护的问题,本发明提出一种利用硬件电路支持NVM芯片软断点调试的仿真器。
[0006]本发明的仿真器在仿真器硬件的调试RAM中存放NVM擦写程序及断点数据,不占用芯片RAM,因此不需要考虑用户芯片RAM的数据保护。NVM擦写程序只需下载一次,断点的设置和清除操作主要是由硬件自动完成,断点调试速度得以明显提升。只要增加调试RAM容量,可以实现更多的软断点,从而大大提高开发效率。


【发明内容】

[0007]本发明所解决的技术问题是,如何设计一种支持NVM芯片软断点调试的仿真器。
[0008]本发明的仿真器包括仿真器调试模块和仿真器硬件两部分:仿真器控制模块与仿真器硬件相连,用于控制仿真器硬件运行,实现对芯片功能模块中的用户程序调试功能。对于断点功能,仿真器调试模块实现生成断点数据,下载NVM擦写程序、设置断点、清除断点的功能。仿真器硬件包括芯片功能调试模块、CPU、功能模块、MMU选择模块、芯片MMU、芯片NVM, RAM选择模块、芯片RAM和调试RAM。
[0009]芯片功能调试模块,连接到仿真器调试模块,用于接收调试命令;芯片功能调试模块连接到MMU选择模块,用于选择芯片功能调试模块或者CPU连接芯片MMU ;芯片功能调试模块连接到芯片MMU,实现调试模式下MMU权限设置;芯片功能调试模块连接到CPU,实现对CPU的调试控制;芯片功能调试模块连接到RAM选择模块,用于选择芯片MMU连接的是芯片RAM还是调试RAM ;
[0010]CPU,仿真芯片使用的CPU处理器,经过MMU选择模块连接到芯片MMU ;
[0011]功能模块,与CPU相连,仿真芯片使用的各种功能模块的功能。
[0012]MMU选择模块,将芯片功能调试模块或者CPU连接到芯片MMU ;
[0013]芯片MMU,仿真芯片使用MMU保护功能,增加了 MMU选择控制信号,当芯片功能调试模块连接到芯片MMU时,改变芯片MMU权限控制,实现芯片功能调试模块对芯片RAM和调试RAM的读写操作权限,对芯片NVM的读操作权限的功能设置。
[0014]芯片NVM,仿真芯片使用的NVM存储器;
[0015]RAM选择模块,将芯片MMU连接到芯片RAM或者调试RAM ;
[0016]芯片RAM,仿真芯片使用的RAM存储器;
[0017]调试RAM,包括擦写程序RAM和断点存储RAM,擦写程序RAM存储芯片NVM执行擦写操作的程序,CPU执行擦写程序RAM中的程序,实现对芯片NVM的擦写操作,要写入芯片NVM的数据暂存在擦写程序RAM中,断点存储RAM用于存储断点数据,断点数据包括断点总个数、断点所在页首地址、断点地址、断点代码,断点代码是指芯片NVM中断点地址对应的程序代码。
[0018]本发明的仿真器实现了软断点相关的三个基本操作:下载NVM擦写程序、设置断点、清除断点。
[0019]下载NVM擦写程序的方法如下:
[0020]仿真器调试模块发送下载NVM擦写程序命令,芯片功能调试模块接收到命令后,设置MMU选择控制信号和RAM选择控制信号同时有效,将控制芯片功能调试模块连接至芯片MMU,将芯片MMU连接到调试RAM,控制芯片功能调试模块经过MMU选择模块、芯片MMU、RAM选择模块访问调试RAM,芯片功能调试模块将NVM擦写程序写入擦写程序RAM中,最后芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时无效,将CPU连接至芯片MMU,芯片MMU连接到芯片RAM。
[0021]下载NVM擦写程序只在仿真器在初始化时进行一次下载,只要仿真器没有断电,调试RAM中擦写程序就一直存在,软断点操作就可以随时调用此程序进行NVM数据擦写操作。
[0022]设置断点的方法如下:
[0023]仿真器调试模块发送设置断点命令,并将断点数据发送给芯片功能调试模块,芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时有效,不经过CPU直接访问调试RAM,芯片功能调试模块将断点数据写入断点存储RAM,并根据断点存储RAM中的断点地址信息,将断点代码保存到断点存储RAM中,之后芯片功能调试模块控制CPU执行擦写程序RAM中的NVM擦写程序,将芯片NVM中的断点代码改写为断点指令,最后芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时无效,将CPU连接至芯片MMU,将芯片MMU连接到芯片RAM ;
[0024]清除断点的方法如下:
[0025]仿真器调试模块发送清除断点命令,芯片功能调试模块接收到命令后,设置MMU选择控制信号和RAM选择控制信号同时有效,不经过CPU直接访问调试RAM,芯片功能调试模块控制CPU执行擦写程序RAM中的NVM擦写程序,并根据断点存储RAM中的断点数据,将芯片NVM中断点地址位置处的断点指令改写为断点代码,最后芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时无效,将CPU连接至芯片MMU,将芯片MMU连接到芯片 RAM。
[0026]本发明的仿真器实现专用的调试RAM用于存储擦写程序及断点数据,程序运行时使用芯片RAM,程序断点操作时使用调试RAM,断点操作信息都保存在调试RAM中,断点操作不会改变芯片RAM数据,不会影响用户程序执行。由于断点操作不占用芯片RAM,断点操作期间无需实现对芯片RAM数据的保护,并且断点的设置和清除操作在芯片调试模块控制下由硬件自动完成,从而提升了断点的操作速度。
[0027]芯片功能调试模块实现了芯片MMU的访问接口,不经过CPU直接访问存储器,调试操作时提高存储器访问速度,相比经过CPU访问存储器获得调试数据,芯片功能调试模块直接访问存储器速度更快。芯片功能调试模块不仅实现对芯片MMU权限管理功能,同时对访问的存储器进行调试功能的权限管理,程序调试过程中无法通过CPU访问的数据,通过此通路得以显示,或者禁止部分数据访问,达到对芯片代码保护的功能。
[0028]本发明实现NVM数据快速改写的功能,用于实现NVM中程序下载,调试过程数据修改功能,可以实现调试界面NVM数据的实时修改,方便用户对NVM程序的调试。
[0029]本发明中的软断点是指能够CPU识别的断点指令,CPU执行到断点指令时自动停止,或是产生中断进行调试数据的存储和显示。
[0030]本发明中的芯片NVM是指芯片使用的ROM或FLASH或EEPROM存储器,在仿真器硬件中使用RAM增加接口电路的方式实现。

【专利附图】

【附图说明】
[0031]图1是芯片功能模块结构图。
[0032]图2是支持软断点调试仿真器结构图。
[0033]图3是擦写程序RAM的结构图。
[0034]图4是断点存储RAM的结构图。
[0035]图5是下载NVM程序的流程图。
[0036]图6是设置软断点的流程图。
[0037]图7是清除软断点的流程图。

【具体实施方式】
[0038]下面结合附图对本发明仿真器进行详细说明。
[0039]1、如图1所示,是支持MMU功能的芯片功能模块,包括CPU 5、功能模块6、芯片MMU8、芯片NVM 10、芯片RAM 11,用于仿真真实芯片的功能。CPU 5通过芯片MMU 8实现存储器芯片NVM 10和芯片RAM 11的访问和权限管理。
[0040]2、如图2所示,基于支持MMU功能的芯片功能模块,增加调试电路,实现了支持NVM软断点调试的仿真器。增加调试电路包括:仿真器调试模块2、芯片功能调试模块4、MMU选择模块7、RAM选择模块9、调试RAM 12。其中调试RAM 12由擦写程序RAM 13和断点存储RAM14组成。图5、图6、图7详细介绍各模块如何实现软断点调试功能。
[0041]3、如图3所示,规定了擦写程序RAM的数据结构,包括NVM擦写程序区和擦写数据Buffer区。NVM擦写程序区在仿真器初始化时下载NVM擦写程序,擦写数据Buffer区用于芯片NVM 10数据改写时存放的临时数据。
[0042]4、如图4所示,规定了断点存储RAM的数据结构,包括断点总个数、页地址标志、断点所在页首地址、断点地址及断点代码。图中举例的断点I地址、断点2地址、断点a地址、断点a+Ι地址、断点a+2地址、断点b地址统称为断点地址,断点I代码、断点2代码、断点a代码、断点a+Ι代码、断点a+2代码、断点b代码统称为断点代码。断点总个数、页地址标志、断点所在页首地址、所有断点地址是由仿真器调试模块2产生,并发送命令写入断点存储RAM 14,断点代码是指芯片NVM 10中断点地址对应的程序代码,是由芯片功能调试模块4从芯片NVM 10读出并写入断点存储RAM 14进行数据备份。根据断点总个数确定设置操作的断点数量。页地址标志表示后面的数据为另一页的断点,前一页的断点可以进行一次断点写入操作。断点所在页首地址确定操作NVM的页号。数据结构中每一页中断点个数不固定,由用户设置断点位置来确定。断点存储RAM的数据结构保证了以较少的RAM容量可以存储较多的断点信息,从而设置更多的软断点。
[0043]5、如图5所示,仿真器调试模块2发送下载NVM擦写程序命令,并将NVM擦除程序发送给芯片功能调试模块4,芯片功能调试模块4负责将NVM擦写程序写入擦写程序RAM13,实现过程如下:
[0044]I)芯片功能调试模块4直接访问芯片MMU 8,选择调试RAM 12。实现方法:芯片功能调试模块4设置MMU选择控制信号15和RAM选择控制信号16同时有效,芯片功能调试模块4可以直接访问调试RAM 12中的擦写程序RAM 13 ;
[0045]2)芯片功能调试模块4将NVM擦除程序写入擦写程序RAM 13 ;
[0046]3)芯片功能调试模块4判断所有程序是否下载完成,如果下载完成执行4),否则执行2);
[0047]4) CPU 5直接访问芯片MMU 8,选择芯片RAM 11。实现方法:芯片功能调试模块4设置MMU选择控制信号15和RAM选择控制信号16同时无效,CPU 5访问芯片NVM 10和芯片RAM11,可以正常执行程序。
[0048]6、如图6所示,仿真器调试模块2发送设置断点命令,并将断点列表数据(包括断点总个数、断点所在页首地址、断点地址)发送给芯片功能调试模块4,断点列表数据由仿真器调试模块2根据用户设置的断点位置和数量,按断点存储RAM的数据结构生成,数据大小在断点存储RAM 14容量范围内。芯片功能调试模块4控制各个模块完成软断点设置功能,具体流程如下:
[0049]I)芯片功能调试模块4直接访问芯片MMU 8,选择调试RAM 12 ;
[0050]2)芯片功能调试模块4将断点列表数据写入断点存储RAM 14 ;
[0051]3)芯片功能调试模块4根据已设置的断点数和断点存储RAM 14中“断点总个数”,判断是否继续设置断点,如果完成所用断点的设置执行11),否则执行4);
[0052]4)芯片功能调试模块4根据断点存储RAM 14中“断点所在页首地址”,读芯片NVM10中断点所在页的数据到擦写程序RAM 13中“擦写数据Buffer区”;
[0053]5)芯片功能调试模块4将断点存储RAM 14中每个“断点地址”对应“断点代码”写入断点存储RAM 14 ;
[0054]6)芯片功能调试模块4将“擦写数据Buffer区”对应的“断点地址”改为断点指令;
[0055]7)芯片功能调试模块4设置MMU选择控制信号15无效,选择CPU 5直接访问芯片MMU 8 ;
[0056]8)芯片功能调试模块4控制CPU 5执行擦写程序RAM 13中的程序,擦除芯片NVM10中断点所在页;
[0057]9)芯片功能调试模块4控制CPU 5将“擦写数据Buffer区”数据写入芯片NVM 10中断点所在页;
[0058]10)芯片功能调试模块4设置MMU选择控制信号15有效,选择芯片功能调试模块4直接访问芯片MMU 8,执行3);
[0059]11) CPU 5直接访问芯片MMU 8,选择芯片RAM 11。回到默认状态,使CPU 5访问芯片NVM 10和芯片RAM 11,可以正常执行程序。
[0060]7、如图7所示,仿真器调试模块2发送清除断点命令,芯片功能调试模块4收到命令后,控制各个模块完成软断点清除功能,具体流程如下:
[0061]I)芯片功能调试模块4直接访问芯片MMU 8,选择调试RAM 12 ;
[0062]2)芯片功能调试模块4读取断点存储RAM 14中的断点数据;
[0063]3)芯片功能调试模块4根据已清除的断点数和断点存储RAM 14中“断点总个数”,判断是否继续清除断点,如果清除了所有断点执行10),否则执行4);
[0064]4)芯片功能调试模块4根据断点存储RAM 14中“断点所在页首地址”,读芯片NVM10中断点所在页的数据到擦写程序RAM 13中“擦写数据Buffer区”;
[0065]5)芯片功能调试模块4将断点存储RAM 14中每个“断点地址”对应“断点代码”写入“擦写数据Buffer区”;
[0066]6)芯片功能调试模块4设置MMU选择控制信号15无效,选择CPU 5直接访问芯片MMU 8 ;
[0067]7)芯片功能调试模块4控制CPU 5擦除芯片NVM 10中断点所在页;
[0068]8)芯片功能调试模块4控制CPU 5将“擦写数据Buffer区”数据写入芯片NVM 10中断点所在页;
[0069]9)芯片功能调试模块4设置MMU选择控制信号15有效,选择芯片功能调试模块4直接访问芯片MMU 8,执行3);
[0070]10) CPU 5直接访问芯片MMU 8,选择芯片RAM 11。CPU 5访问芯片NVM 10和芯片RAM 11,可以正常执行程序。
【权利要求】
1.一种支持NVM软断点调试的仿真器,其特征在于程序运行时使用芯片RAM,程序断点操作时使用调试RAM,断点操作信息全部保存在调试RAM中,断点操作不会改变芯片RAM数据,不会影响用户程序执行;仿真器包括仿真器调试模块和仿真器模块,其中: 仿真器调试模块,与仿真器硬件相连,实现对芯片功能模块中程序的调试功能,对于断点功能,实现生成断点数据,下载NVM擦写程序、设置断点、清除断点的功能; 仿真器模块,包括芯片功能调试模块、CPU、功能模块、MMU选择模块、芯片MMU、芯片NVM, RAM选择模块、芯片RAM和调试RAM ; 芯片功能调试模块,连接到仿真器调试模块,用于接收调试命令;芯片功能调试模块连接到MMU选择模块,用于选择芯片功能调试模块或者CPU连接芯片MMU ;芯片功能调试模块连接到芯片MMU,实现调试模式下MMU权限设置;芯片功能调试模块连接到CPU,实现对CPU的调试控制;芯片功能调试模块连接到RAM选择模块,用于选择芯片MMU连接的是芯片RAM还是调试RAM ; CPU,仿真芯片使用的CPU处理器,经过MMU选择模块连接到芯片MMU ; 功能模块,与CPU相连,仿真芯片使用的各种功能模块的功能; MMU选择模块,将芯片功能调试模块或者CPU连接到芯片MMU ; 芯片MMU,仿真芯片使用MMU保护功能,增加了 MMU选择控制信号,当芯片功能调试模块连接到芯片MMU时,改变芯片MMU权限控制,实现芯片功能调试模块对芯片RAM和调试RAM的读写操作权限,对芯片NVM的读操作权限的功能设置; 芯片NVM,仿真芯片使用的NVM存储器; RAM选择模块,将芯片MMU连接到芯片RAM或者调试RAM ; 芯片RAM,仿真芯片使用的RAM存储器; 调试RAM,包括擦写程序RAM和断点存储RAM,擦写程序RAM存储芯片NVM执行擦写操作的程序,CPU执行擦写程序RAM中的程序,实现对芯片NVM的擦写操作。
2.一种支持NVM软断点调试的方法,应用于如权利要求1所述的仿真器中,其特征在于步骤如下: 1)仿真器调试模块发送下载NVM擦写程序命令,芯片功能调试模块接收到命令后,设置MMU选择控制信号和RAM选择控制信号同时有效,控制芯片功能调试模块经过MMU选择模块、芯片MMU、RAM选择模块访问调试RAM,芯片功能调试模块将NVM擦写程序写入擦写程序RAM中,最后芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时无效,将CPU连接至芯片MMU,芯片MMU连接到芯片RAM ; 2)仿真器调试模块发送设置断点命令,并将断点数据发送给芯片功能调试模块,芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时有效,不经过CPU直接访问调试RAM,芯片功能调试模块将断点数据写入断点存储RAM,并根据断点存储RAM中的断点地址信息,将断点代码保存到断点存储RAM中,之后芯片功能调试模块控制CPU执行擦写程序RAM中的NVM擦写程序,将芯片NVM中的断点代码改写为断点指令,最后芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时无效,将CPU连接至芯片MMU,将芯片MMU连接到芯片RAM ; 3)仿真器调试模块发送清除断点命令,芯片功能调试模块接收到命令后,设置MMU选择控制信号和RAM选择控制信号同时有效,不经过CPU直接访问调试RAM,芯片功能调试模块控制CPU执行擦写程序RAM中的NVM擦写程序,并根据断点存储RAM中的断点数据,将芯片NVM中断点地址位置处的断点指令改写为断点代码,最后芯片功能调试模块设置MMU选择控制信号和RAM选择控制信号同时无效,将CPU连接至芯片MMU,将芯片MMU连接到芯片RAM0
3.根据权利要求2所述的方法,其特征在于断点操作不占用芯片RAM,断点操作期间无需实现对芯片RAM数据的保护,并且断点的设置和清除操作在芯片调试模块控制下由硬件自动完成,提升了断点的操作速度。
4.根据权利要求1所述的方法,其特征在于芯片功能调试模块实现了芯片MMU的访问接口,不经过CPU直接访问存储器,提高存储器调试操作的访问速度,不仅实现了芯片MMU的存储器权限管理功能,还对访问的存储器进行调试功能的权限管理,实现对芯片代码保护、调试数据显示的功能。
【文档编号】G06F11/36GK104461859SQ201410427112
【公开日】2015年3月25日 申请日期:2014年8月27日 优先权日:2014年8月27日
【发明者】张洪波, 赵满怀, 陈 峰 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1