一种程序调试方法及微控制器与流程

专利2023-07-20  98



1.本技术属于软件测试技术领域,尤其涉及一种程序调试方法及微控制器。


背景技术:

2.断点技术是微控制器的程序调试中不可或缺并有决定性作用的技术。当前的断点技术主要分为两种,软件断点和硬件断点,相比于软件断点,硬件断点具有精确度高、稳定性好(即只要时钟稳定就能确保断点指令不出错)等优点,在一些场合得到更广泛的应用。然而,现有的硬件断点的实现方案,主要通过微控制器执行指令过程中,根据配置不断将所执行指令的指针与断点寄存器中的断点指针进行对比,以在发生匹配时,产生中断并冻结微控制器的流水线跳入特定程序段进行处理,来实现相应的程序断点调试功能,整个实现过程复杂繁琐,且效率不高。


技术实现要素:

3.本技术实施例提供一种程序调试方法及微控制器,旨在解决现有技术中硬件断点实现方案的实现过程复杂繁琐、且效率不高的技术问题。
4.第一方面,本技术实施例提供一种程序调试方法,包括以下步骤:
5.获取待设置断点的第一目标操作指令的第一访存地址;
6.通过所述第一访存地址访问指令存储模块,以将所述指令存储模块中的所述第一目标操作指令替换为断点指令;
7.根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转。
8.可选的,在本技术的一些实施例中,所述获取待设置断点的第一目标操作指令的第一访存地址,包括:
9.接收上位机下发的所述第一目标操作指令的第一程序计数器地址;
10.对所述第一程序计数器地址进行译码,得到所述第一目标操作指令的第一访存地址。
11.可选的,在本技术的一些实施例中,所述通过所述第一访存地址访问指令存储模块,以将所述指令存储模块中的所述第一目标操作指令替换为断点指令,包括:
12.通过所述第一访存地址访问指令存储模块中的第一目标存储单元,并将所述第一目标存储单元中的第一目标操作指令备份到目标寄存器中;
13.将所述第一目标存储单元中的所述第一目标操作指令进行擦除,并写入所述断点指令。
14.可选的,在本技术的一些实施例中,所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的指令的步骤具体包括:
15.根据所述程序计数器的自增或跳转,对自增或跳转后的第二程序计数器地址进行译码,得到第二访存地址;
16.通过所述第二访存地址访问所述指令存储模块中的第二目标存储单元,对所述第二目标存储单元中的第二目标操作指令进行译码;
17.当所述第二目标操作指令不是所述断点指令时,执行所述第二目标操作指令,并继续执行所述程序计数器的自增或跳转。
18.可选的,在本技术的一些实施例中,在所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转之后,所述程序调试方法还包括:
19.将所述指令存储模块中的所述断点指令重新替换为所述第一目标操作指令。
20.可选的,在本技术的一些实施例中,所述将指令存储模块中的所述断点指令重新替换为所述第一目标操作指令的步骤具体包括:
21.对所述断点指令对应的第一程序计数器地址进行译码,得到所述第一访存地址;
22.通过所述第一访存地址访问指令存储模块中的第一目标存储单元,将所述第一目标存储单元中的所述断点指令进行擦除,并写入备份在目标寄存器中的所述第一目标操作指令。
23.可选的,在本技术的一些实施例中,在所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转之后,所述程序调试方法还包括:
24.将所述指令存储模块中的所述断点指令重新替换为所述第一目标操作指令,并获取待设置断点的第三目标操作指令的第三访存地址;
25.通过所述第三访存地址访问所述指令存储模块,以将所述指令存储模块中的所述第三目标操作指令替换为所述断点指令。
26.可选的,在本技术的一些实施例中,所述获取待设置断点的第三目标操作指令的第三访存地址的步骤具体包括:
27.接收上位机下发的所述第三目标操作指令的第三程序计数器地址;
28.对所述第三程序计数器地址进行译码,得到所述第三目标操作指令的第三访存地址;
29.所述通过所述第三访存地址访问所述指令存储模块,以将所述指令存储模块中的所述第三目标操作指令替换为所述断点指令的步骤具体包括:
30.通过所述第三访存地址访问所述指令存储模块的第三目标存储单元,并将所述第三目标存储单元中的所述第三目标操作指令备份到目标寄存器中;
31.将所述第三目标存储单元中的所述第三目标操作指令进行擦除,并写入所述断点指令。
32.可选的,在本技术的一些实施例中,所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转之后,所述程序调试方法还包括:
33.在所述指令存储模块中保留所述断点指令,并继续执行所述程序计数器的自增或跳转。
34.第二方面,本技术实施例提供一种微控制器,包括:指令存储模块,配置为按不同的访存地址存储有待调试程序的所有操作指令;程序计数器,配置为存储有当前待执行的
操作指令的程序计数器地址;指令译码模块,配置为对当前待执行的操作指令进行译码;地址译码模块,配置为对所述程序计数器地址进行译码,得到相应的访存地址;指令自增模块,配置为控制所述程序计数器的自增或跳转;指令暂停模块,配置为暂停所述程序计数器的自增或跳转;调试控制模块,配置为执行上述的程序调试方法的步骤。
35.在本技术中,其进行程序调试时,会先获取待设置断点的第一目标操作指令的第一访存地址。接着,会通过该第一访存地址访问指令存储模块,以将该指令存储模块中的第一目标操作指令替换为断点指令。最后,根据程序计数器的自增或跳转,执行该指令存储模块中对应的操作指令,并在执行到该断点指令时,暂停该程序计数器的自增或跳转,进而实现程序调试中的断点调试功能。这样一来,本技术通过在指令存储模块中设置断点指令的方式,使得微控制器在程序调试执行指令过程中,只需按正常的工作模式工作即可,无需频繁的指针比对过程便可实现相应的断点调试功能。可见,本技术技术方案具有实现结构简单、效率高等优点。
附图说明
36.下面结合附图,通过对本技术的具体实施方式详细描述,将使本技术的技术方案及其有益效果显而易见。
37.图1是本技术实施例提供的程序调试方法的第一种流程示意图。
38.图2是图1所示程序调试方法的步骤s110的流程示意图。
39.图3是图1所示程序调试方法的步骤s120的流程示意图。
40.图4是图1所示程序调试方法的步骤s130的流程示意图。
41.图5是图1所示程序调试方法的第二种流程示意图。
42.图6是图1所示程序调试方法的第三种流程示意图。
43.图7是图1所示程序调试方法的第四种流程示意图。
具体实施方式
44.下面结合附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。在不冲突的情况下,下述各个实施例及其技术特征可以相互组合。
45.断点技术是微控制器的程序调试中不可或缺并有决定性作用的技术。当前的断点技术主要分为两种,软件断点和硬件断点,相比于软件断点,硬件断点具有精确度高、稳定性好(即只要时钟稳定就能确保断点指令不出错)等优点,在一些场合得到更广泛的应用。然而,现有的硬件断点的方案,其通过微控制器执行指令过程中,根据配置不断将所执行指令的指针与断点寄存器中的断点指针进行对比,以在发生匹配时,产生中断并冻结微控制器的流水线跳入特定程序段进行处理,来实现相应的程序断点调试功能,整个实现过程复杂繁琐,且效率不高。
46.基于此,有必要提供一种新的硬件断点的解决方案,以解决现有技术中硬件断点实现方案的实现过程复杂繁琐、且效率不高的技术问题。
47.如图1所示,在一个实施例中,本技术实施例提供一种程序调试方法,该程序调试
方法具体包括以下步骤:
48.步骤s110:获取待设置断点的第一目标操作指令的第一访存地址。
49.具体地,本技术实施例的程序调试方法具体是一种硬件断点调试的方式,其具体可应用在微控制器的程序调试中,该微控制器具体可包括指令存储模块、程序计数器、指令译码模块、地址译码模块、指令自增模块、指令暂停模块以及调试控制模块,其中,调试控制模块为本技术微控制器实现程序断点调试的控制核心,即本技术实施例的程序断点调试的方法的具体执行主体,指令存储模块具体配置为按不同的访存地址存储有待调试程序的所有操作指令。程序计数器具体配置为存储有当前待执行的操作指令的程序计数器地址。指令译码模块具体配置为对当前待执行的操作指令进行译码。地址译码模块具体配置为对程序计数器地址进行译码,得到相应的访存地址。指令自增模块具体配置为控制程序计数器的自增或跳转。指令暂停模块具体配置为暂停程序计数器的自增或跳转。
50.基于上述结构,本技术的微控制器运行待调试程序的具体过程可以是,其调试控制模块根据指令自增模块控制程序计数器的自增或跳转,以依次执行存储在指令存储模块中的待调试程序的所有操作指令。而本技术微控制器的调试控制模块在执行每一操作指令前,需先获取当前操作指令对应的访存地址来访问指令存储模块,以实现对当前操作指令的取指操作。
51.本技术实施例的程序调试方法实现断点调试功能的原理在于将断点指令混入待调试程序的正常的操作指令之中,具体为将待设置断点的第一目标操作指令替换为该断点指令,以使本技术微控制器的调试控制模块根据程序计数器的自增或跳转,执行指令存储模块中对应的每一操作指令时,可在执行到需要断点的第一目标操作指令时,改为执行该断点指令,以暂停程序计数器的自增或跳转,以实现相应的断点调试功能。为此,本技术微控制器的调试控制模块需先获取待设置断点的第一目标操作指令的第一访存地址。
52.步骤s120:通过该第一访存地址访问指令存储模块,以将该指令存储模块中的第一目标操作指令替换为断点指令。
53.具体地,在通过上述方法步骤得到待设置断点的第一目标操作指令的第一访存地址后,便可通过该第一访存地址访问指令存储模块,以将该指令存储模块中的第一目标操作指令替换为断点指令。该断点指令具有固定的机器码,当微控制器的调试控制模块识别到该固定的机器码时,可识别到当前要执行的断点指令,通过指令暂停模块暂停程序计数器的自增或跳转,来实现相应的断点调试功能。
54.步骤s130:根据程序计数器的自增或跳转,执行该指令存储模块中对应的操作指令,并在执行到该断点指令时,暂停该程序计数器的自增或跳转。
55.具体地,当通过上述方法步骤将指令存储模块中的第一目标操作指令替换为断点指令后,便可根据程序计数器的自增或跳转,执行在该指令存储模块中的操作指令,并在执行到该断点指令时,暂停该程序计数器的自增或跳转,实现相应的断点调试功能。即本技术微控制器的调试控制模块执行指令存储模块中的每一操作指令前,均会对当前待执行的操作指令进行是否为断点指令的判断,当当前待执行的操作指令判断为非断点指令时,会正常执行该操作指令对应的操作,同时,通过指令自增模块控制程序计数器的自增(一般为加1操作)或跳转,使得程序计数器存储的程序计数器地址指向下一待执行的操作指令;而当当前待执行的操作指令判断为断点指令时,即通过指令暂停模块暂停程序计数器的自增或
跳转,来实现相应的断点调试功能。另外,通过指令暂停模块暂停程序计数器的自增或跳转后,本技术微控制器的调试控制模块可根据程序调试需求,读写该微控制器中存储器的所有内容,包括读写该微控制器中的所有可操作的寄存器。
56.可以理解的是,本技术通过在指令存储模块中设置断点指令的方式,使得微控制器在程序调试执行指令过程中,只需按正常的工作模式工作即可,无需频繁的指针比对过程便可实现相应的断点调试功能。可见,本技术技术方案具有实现结构简单、效率高等优点。
57.在一些示例中,如图2所示,上述方法步骤中“获取待设置断点的第一目标操作指令的第一访存地址”的具体过程如下:
58.步骤s111:接收上位机下发的第一目标操作指令的第一程序计数器地址。
59.步骤s112:对该第一程序计数器地址进行译码,得到第一目标操作指令的第一访存地址。
60.在调试模式下,当本技术微控制器的调试控制模块需要进行断点设置时,其上位机会将待设置断点的第一目标操作指令的第一程序计数器地址下发给调试控制模块,而调试控制模块并不能直接通过第一程序计数器地址来访问指令存储模块,还需通过地址译码模块对之进行译码得到相应的第一访存地址才能实现对指令存储模块的访问。这样,调试控制模块通过接收上位机下发的该第一目标操作指令的第一程序计数器地址后,通过地址译码模块对该第一程序计数地址进行译码,以得到第一目标操作指令的第一访存地址,进而实现上述第一目标操作指令的第一访存地址的准确获取。
61.在一些示例中,如图3所示,上述方法步骤中“通过该第一访存地址访问指令存储模块,以将该指令存储模块中的第一目标操作指令替换为断点指令”的具体过程如下:
62.步骤s121:通过该第一访存地址访问指令存储模块的第一目标存储单元,并将该第一目标存储单元中的第一目标操作指令备份到目标寄存器中。
63.具体地,通过该第一访存地址访问指令存储模块的第一目标存储单元,可在该第一目标存储单元中准确找出待设置断点的第一目标操作指令(即该第一目标操作指令具体存储在指令存储模块的第一目标存储单元中),以对第一目标操作指令进行相应的操作。而由于第一目标操作指令属于待调试程序本身的正常操作指令,其后续待调试程序正常运行时还需用到,因而,在将第一目标操作指令替换为断点指令前,需对其进行相应的备份,具体可以是,将指令存储模块中的第一目标操作指令备份到目标寄存器中。而该目标寄存器可具体位于本技术微控制器的调试控制模块中,以专门用于进行操作指令的备份操作。
64.步骤s122:将该第一目标存储单元中的该第一目标操作指令进行擦除,并写入该断点指令。
65.具体地,当通过上述方法步骤将第一目标存储单元中的第一目标操作指令备份到目标寄存器中后,便可进一步将该第一目标存储单元中的该第一目标操作指令进行擦除,并写入该断点指令,即在第一目标操作指令原来所在的位置(即第一目标存储单元)写入该断点指令,以有效实现上述方法步骤中的将指令存储模块中的第一目标操作指令替换为断点指令。
66.在一些示例中,如图4所示,上述方法步骤中“根据程序计数器的自增或跳转,执行该指令存储模块中对应的操作指令”的具体过程如下:
67.步骤s131:根据该程序计数器的自增或跳转,对自增或跳转后的第二程序计数器地址进行译码,得到第二访存地址。
68.具体地,程序计数器在指令自增模块的控制下进行自增或跳转后,其存储有当前待执行的第二目标操作指令的第二程序计数器地址,因而,本技术微控制器的调试控制模块具体可通过地址译码模块对自增或跳转后的第二程序计数器地址进行译码,以得到当前待执行的第二目标操作指令的第二访存地址。
69.步骤s132:通过该第二访存地址访问该指令存储模块的第二目标存储单元,对该第二目标操作指令进行译码。
70.具体地,当通过上述方法步骤得到第二访存地址后,便可通过该第二访存地址访问该指令存储模块的第二目标存储单元,从第二目标存储单元中读取当前待执行的第二目标操作指令,并对该第二目标操作指令进行相应的译码,来完成相应的指令取指操作。
71.步骤s133:当该第二目标操作指令不是该断点指令时,执行该第二目标操作指令,并继续执行该程序计数器的自增或跳转。
72.具体地,当通过上述方法步骤对该第二目标操作指令进行相应的译码后,便可获知该第二目标操作指令是否为断点指令,以在该第二目标操作指令不是该断点指令时,执行该第二目标操作指令,并继续执行该程序计数器的自增或跳转。
73.基于上述方法步骤可知,本技术微控制器的调试控制模块执行指令存储模块中的每一操作指令前,均会对当前待执行的第二目标操作指令进行是否为断点指令的判断,具体可以是通过指令译码模块对当前待执行的第二目标操作指令进行相应的指令译码后,判断当前待执行的第二目标操作指令是否为断点指令,当该第二目标操作指令判断为不是断点指令时,会正常执行该第二目标操作指令对应的操作,同时,继续执行该程序计数器的自增或跳转,以使得程序计数器存储的程序计数器地址继续指向下一待执行的第二目标操作指令。
74.在一些示例中,如图5所示,在执行完方法步骤“根据程序计数器的自增或跳转,执行该指令存储模块中对应的操作指令,并在执行到该断点指令时,暂停该程序计数器的自增或跳转”之后,该程序调试方法还包括:
75.步骤s140:将该指令存储模块中的该断点指令重新替换为该第一目标操作指令。
76.具体地,当通过上述方法步骤在执行到该断点指令时,暂停程序计数器的自增或跳转,实现相应的断点调试功能后,如若在后续程序调试过程中不再需要在该位置进行程序计数器暂停操作,可在执行完该断点指令后,执行该断点指令的清除操作,即将该指令存储模块中的该断点指令重新替换为该第一目标操作指令,其具体过程可以如下:首先,对该断点指令对应的第一程序计数器地址进行译码,得到该第一访存地址。接着,通过该第一访存地址访问该指令存储模块的第一目标存储单元,即原来存放该第一目标操作指令的位置,以将该第一目标存储单元中的断点指令进行擦除,并写入备份在目标寄存器中的第一目标操作指令。即在原来存放该第一目标操作指令的位置擦除断点指令后,重新写入原来备份在目标寄存器中的第一目标操作指令,以便后续程序可正常运行第一目标操作指令。
77.在一些示例中,如图6所示,在执行完方法步骤“根据程序计数器的自增或跳转,执行该指令存储模块中对应的操作指令,并在执行到该断点指令时,暂停该程序计数器的自增或跳转”之后,该程序调试方法还包括:
78.步骤s150:将该指令存储模块中的该断点指令重新替换为该第一目标操作指令,并获取待设置断点的第三目标操作指令的第三访存地址。
79.具体地,当通过上述方法步骤在执行到断点指令时,暂停程序计数器的自增或跳转,实现相应的断点调试功能后,如若在后续程序调试过程中不再需要在该位置进行程序计数器暂停操作,同时,又需要在新的位置进行程序计数器暂停操作,可在执行完该断点指令后,执行该断点指令的清除操作(即将该指令存储模块中的该断点指令重新替换为该第一目标操作指令,其具体过程可参考上述方法步骤s140的具体实现过程)的同时,进行新的断点指令设置操作,包括先获取待设置断点的第三目标操作指令的第三访存地址,具体过程可以是:接收上位机下发的第三目标操作指令的第三程序计数器地址,再对该第三程序计数器地址进行译码,得到该第三目标操作指令的第三访存地址。可见,第三目标操作指令的第三访存地址的获取方式与第一目标操作指令的第一访问地址的获取方式基本相同,因而,可具体参考后者的获取方式来实现前者的具体获取过程。
80.步骤s160:通过该第三访存地址访问该指令存储模块,以将该指令存储模块中的第三目标操作指令替换为该断点指令。
81.具体地,当通过上述方法步骤得到该第三目标操作指令的第三访存地址后,便可通过该第三访存地址访问该指令存储模块,以将该指令存储模块中的第三目标操作指令替换为该断点指令,具体过程可以是:先通过该第三访存地址访问该指令存储模块的第三目标存储单元,以从第三目标存储单元中读取第三目标操作指令,并将读取的第三目标操作指令备份到目标寄存器中。然后,再将第三目标存储单元中的第三目标操作指令进行擦除,并写入上述断点指令。可见,通过第三访存地址访问指令存储模块,以将指令存储模块中的第三目标操作指令替换为断点指令的实现方式与通过第一访存地址访问指令存储模块,以将指令存储模块中的第一目标操作指令替换为断点指令的实现方式基本相同,因而,可具体参考后者的实现方式来实现前者的具体实现过程。
82.可以理解的是,当本技术微控制器的调试控制模块继续执行指令存储模块中的后续每一操作指令过程中,再次执行到该断点指令时,会再次暂停程序计数器的自增或跳转,实现相应的断点调试功能。如此,便可在程序调试过程中,通过不断在新的位置写入断点指令,实现程序调试的多点断点调试功能。
83.在一些示例中,如图7所示,在执行完方法步骤“根据程序计数器的自增或跳转,执行该指令存储模块中对应的操作指令,并在执行到该断点指令时,暂停该程序计数器的自增或跳转”之后,还包括:
84.步骤s170:在该指令存储模块中保留该断点指令,并继续执行该程序计数器的自增或跳转。
85.具体地,当通过上述方法步骤在执行到断点指令时,暂停程序计数器的自增或跳转,实现相应的断点调试功能后,如若在后续程序调试过程中还需在该位置进行同样的程序计数器暂停操作,可在执行完该断点指令后,执行该断点指令的保留操作,即在指令存储模块中保留该断点指令,并继续执行程序计数器的自增或跳转。具体地,继续通过指令自增模块控制程序计数器的自增(一般为加1操作)或跳转,使得程序计数器存储的程序计数器地址指向该断点指令后的下一操作指令,以继续执行程序后续的调试。这样,后续再次对待调试程序进行断点调试时,即可在再次访问到该断点指令时,再次暂停程序计数器的自增
或跳转,以实现相应的断点调试功能。
86.本技术实施例还提供一种微控制器(未图示),包括指令存储模块、程序计数器、指令译码模块、地址译码模块、指令自增模块、指令暂停模块以及调试控制模块。其中,指令存储模块具体配置为按不同的访存地址存储有待调试程序的所有操作指令,即每一访存地址对应指令存储模块的一存储单元,每一存储单元可对应存储一操作指令。程序计数器具体配置为存储有当前待执行的操作指令的程序计数器地址,该程序计数器地址指的是程序计数器存储的地址,该地址可以是物理地址或偏移地址。指令译码模块具体配置为对当前待执行的操作指令进行译码。地址译码模块具体配置为对该程序计数器地址进行译码,得到相应的访存地址。
87.具体地,当程序计数器中存储的是物理地址时,经过地址译码模块进行译码后还是原来的物理地址,当程序计数器中存储的是偏移地址时,经过地址译码模块后得到后的是基地址+偏移地址后的值,即物理地址。指令自增模块具体配置为控制程序计数器的自增或跳转。指令暂停模块具体配置为暂停程序计数器的自增或跳转。调试控制模块具体配置为执行上述的方法的步骤,具体如上所述,此处不再赘述。
88.需要说明的是,本发明实施例的微控制器实施例与上述程序断点调试的方法实施例属于同一构思,其具体实现过程详细见上述程序断点调试的方法实施例,且上述程序断点调试的方法实施例中的技术特征在微控制器实施例中均对应适用,这里不再赘述。
89.尽管已经相对于一个或多个实现方式示出并描述了本技术,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本技术包括所有这样的变型和修改,并且仅由所附权利要求的范围限制。特别地关于由上述组件执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本说明书的示范性实现方式中的功能的公开结构不等同。
90.即,以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,例如各实施例之间技术特征的相互结合,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
91.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
92.在本技术中,“示例性”一词是用来表示“用作例子、例证或说明”。本技术中被描述为“示例性”的任何一个实施例不一定被解释为比其它实施例更加优选或更加具优势。为了使本领域任何技术人员能够实现和使用本技术,本技术给出了以上描述。在以上描述中,为了解释的目的而列出了各个细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本技术。在其它实施例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本技术的描述变得晦涩。因此,本技术并非旨在限于所示的实施例,而是与符合本技术所公开的原理和特征的最广范围相一致。

技术特征:
1.一种程序调试方法,其特征在于,包括以下步骤:获取待设置断点的第一目标操作指令的第一访存地址;通过所述第一访存地址访问指令存储模块,以将所述指令存储模块中的所述第一目标操作指令替换为断点指令;根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转。2.根据权利要求1所述的程序调试方法,其特征在于,所述获取待设置断点的第一目标操作指令的第一访存地址,包括:接收上位机下发的所述第一目标操作指令的第一程序计数器地址;对所述第一程序计数器地址进行译码,得到所述第一目标操作指令的第一访存地址。3.根据权利要求1所述的程序调试方法,其特征在于,所述通过所述第一访存地址访问指令存储模块,以将所述指令存储模块中的所述第一目标操作指令替换为断点指令,包括:通过所述第一访存地址访问指令存储模块中的第一目标存储单元,并将所述第一目标存储单元中的第一目标操作指令备份到目标寄存器中;将所述第一目标存储单元中的所述第一目标操作指令进行擦除,并写入所述断点指令。4.根据权利要求1所述的程序调试方法,其特征在于,所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,包括:根据所述程序计数器的自增或跳转,对自增或跳转后的第二程序计数器地址进行译码,得到第二访存地址;通过所述第二访存地址访问所述指令存储模块中的第二目标存储单元,对所述第二目标存储单元中的第二目标操作指令进行译码;当所述第二目标操作指令不是所述断点指令时,执行所述第二目标操作指令,并继续执行所述程序计数器的自增或跳转。5.根据权利要求1所述的程序调试方法,其特征在于,在所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转之后,所述程序调试方法还包括:将所述指令存储模块中的所述断点指令重新替换为所述第一目标操作指令。6.根据权利要求5所述的程序调试方法,其特征在于,所述将所述指令存储模块中的所述断点指令重新替换为所述第一目标操作指令,包括:对所述断点指令对应的第一程序计数器地址进行译码,得到所述第一访存地址;通过所述第一访存地址访问指令存储模块中的第一目标存储单元,将所述第一目标存储单元中的所述断点指令进行擦除,并写入备份在目标寄存器中的所述第一目标操作指令。7.根据权利要求1所述的程序调试方法,其特征在于,在所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转之后,所述程序调试方法还包括:将所述指令存储模块中的所述断点指令重新替换为所述第一目标操作指令,并获取待设置断点的第三目标操作指令的第三访存地址;
通过所述第三访存地址访问所述指令存储模块,以将所述指令存储模块中的所述第三目标操作指令替换为所述断点指令。8.根据权利要求7所述的程序调试方法,其特征在于,所述获取待设置断点的第三目标操作指令的第三访存地址,包括:接收上位机下发的所述第三目标操作指令的第三程序计数器地址;对所述第三程序计数器地址进行译码,得到所述第三目标操作指令的第三访存地址;所述通过所述第三访存地址访问所述指令存储模块,以将所述指令存储模块中的所述第三目标操作指令替换为所述断点指令,包括:通过所述第三访存地址访问所述指令存储模块的第三目标存储单元,并将所述第三目标存储单元中的所述第三目标操作指令备份到目标寄存器中;将所述第三目标存储单元中的所述第三目标操作指令进行擦除,并写入所述断点指令。9.根据权利要求1所述的程序调试方法,其特征在于,在所述根据程序计数器的自增或跳转,执行所述指令存储模块中对应的操作指令,并在执行到所述断点指令时,暂停所述程序计数器的自增或跳转之后,所述程序调试方法还包括:在所述指令存储模块中保留所述断点指令,并继续执行所述程序计数器的自增或跳转。10.一种微控制器,其特征在于,包括:指令存储模块,配置为按不同的访存地址存储有待调试程序的所有操作指令;程序计数器,配置为存储有当前待执行的操作指令的程序计数器地址;指令译码模块,配置为对当前待执行的操作指令进行译码;地址译码模块,配置为对所述程序计数器地址进行译码,得到相应的访存地址;指令自增模块,配置为控制所述程序计数器的自增或跳转;指令暂停模块,配置为暂停所述程序计数器的自增或跳转;调试控制模块,配置为执行如权利要求1-9中任一项所述的程序调试方法的步骤。

技术总结
本申请公开了一种程序调试的方法及微控制器。该方法包括以下步骤:获取待设置断点的第一目标操作指令的第一访存地址;通过第一访存地址访问指令存储模块,以将指令存储模块中的第一目标操作指令替换为断点指令;根据程序计数器的自增或跳转,执行指令存储模块中对应的操作指令,并在执行到断点指令时,暂停程序计数器的自增或跳转。本申请通过在指令存储模块中设置断点指令的方式,实现硬件断点,具有实现结构简单、效率高等优点。效率高等优点。效率高等优点。


技术研发人员:焦继业 徐华昊
受保护的技术使用者:西安恩狄集成电路有限公司
技术研发日:2022.07.22
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-4038.html

最新回复(0)