CN102662847B - 基于闪存应用的嵌入式系统的程序调试系统及方法 - Google Patents

基于闪存应用的嵌入式系统的程序调试系统及方法 Download PDF

Info

Publication number
CN102662847B
CN102662847B CN201210121035.1A CN201210121035A CN102662847B CN 102662847 B CN102662847 B CN 102662847B CN 201210121035 A CN201210121035 A CN 201210121035A CN 102662847 B CN102662847 B CN 102662847B
Authority
CN
China
Prior art keywords
breakpoint
program
code
code segment
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210121035.1A
Other languages
English (en)
Other versions
CN102662847A (zh
Inventor
龚静
张钦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SINO WEALTH ELECTRONIC CO Ltd
Original Assignee
SINO WEALTH ELECTRONIC CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SINO WEALTH ELECTRONIC CO Ltd filed Critical SINO WEALTH ELECTRONIC CO Ltd
Priority to CN201210121035.1A priority Critical patent/CN102662847B/zh
Publication of CN102662847A publication Critical patent/CN102662847A/zh
Application granted granted Critical
Publication of CN102662847B publication Critical patent/CN102662847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于闪存应用的嵌入式系统的程序调试系统及方法,该系统包括:主机终端,其上具有程序调试工具;主控芯片,与主机终端相连接;闪存,与主控芯片相连接,其上存储有待调试程序的多段代码,分别位于不同段编号的代码段内;主控芯片包括:随机存储器,暂存从闪存中加载进主控芯片的代码;中央处理器,与随机存储器相连接,从随机存储器中取出代码执行;程序计数器,记录中央处理器从随机存储器中取代码的地址;代码段寄存器,记录当前从内存中加载到随机存储器中的代码所在的代码段的段编号。本发明能定位切分为多个代码段的程序执行的准确位置,实现完整的源代码调试,还能定位出断点的位置,方便断点调试,极大地提高程序开发效率。

Description

基于闪存应用的嵌入式系统的程序调试系统及方法
技术领域
本发明涉及嵌入式系统技术领域,具体来说,本发明涉及一种基于闪存应用的嵌入式系统的程序调试系统及方法。
背景技术
对于嵌入式系统的设计,程序的大小、程序存储的方式是设计者非常关心的问题。
当系统比较简单,程序代码比较小的时候,比如只有数十K字节甚至更小,通常选择内置程序存储器的主控芯片,程序代码直接存储在内置的存储器中,整个系统成本比较经济;而当系统比较复杂,程序代码比较大,比如达到数百K字节甚至以兆(M)为单位时,主控芯片已经无法内置这么大的存储器,此时整个系统则采用外挂存储器来存储程序代码的方式。
后来,随着Nand Flash(以下简称闪存)的发明,出现了一系列的应用比如SD卡,U盘,MP3播放器等。在这些应用中,程序代码量比较大,考虑到已经使用闪存来存储歌曲或其它用户资料,设计者可以将程序代码也存储在闪存中,这样系统就不需要外挂另外的程序存储器来存储程序。
但是由于闪存是页模式读取数据,主控芯片无法对内存中的程序代码直接寻址访问,因此在系统的实际设计中,会在主控芯片内部设计一块RAM(随机存储器)作为程序暂存空间。系统在工作时,先将程序从闪存中读入主控芯片内部的RAM中,再执行即可。考虑到主控芯片内部无法设计太大的RAM,因此往往采用分段加载程序代码段1~N的方式实现,如图1所示。
上述系统架构的特点包括:
1)主控芯片内不用设计很大的内部存储器来存储程序代码。
2)程序代码被分割为很多个小的代码段(代码段0,代码段1,...),存放在外部的闪存(Nand Flash Memory)中。
3)主控芯片内部设计一个较小的RAM,缓存程序。
4)分段加载程序到RAM,CPU从RAM中取指令执行;如图2所示为上述系统架构的一个示例性的程序执行流程图。
不可否认,该系统架构有非常明显的优势:
1)程序代码存储在闪存中,在主控芯片中不用设计很大的内部RAM来存储程序代码,因此整个主控芯片成本可以控制得较小。
2)程序代码分段存储,分段加载到RAM中执行,这种分段加载、分段执行的方法,可以使RAM设计得很小,因为某时刻,只需要加载某一小段程序代码进RAM执行,而不是加载所有的程序。
例如,程序代码总长度为200K字节,可以将程序代码切分为25小段,每段长度8K字节。
1)200K字节程序代码存储在闪存中,不用在主控芯片内部设计一个200K字节大规模存储器。
2)芯片内部只用设计8K字节的RAM,任何时刻只用将某一小段程序加载进RAM来执行,这样RAM可以设计得很小。
虽然这种程序代码存储在外部闪存中、程序分段加载到RAM执行的系统设计具有很好的成本优势,但是也存在一些问题。例如,因为程序不是一次性地加载到RAM中执行,而是分段加载,所以在调试程序时,如何定位程序执行的位置,以及如何定位断点的位置都会很麻烦,无法实现完整的源代码调试,导致程序调试极其不便。
发明内容
本发明所要解决的技术问题是提供一种基于闪存应用的嵌入式系统的程序调试的系统及方法,能够定位出程序执行的准确位置和断点的准确位置,实现完整的源代码调试,方便程序调试,极大地提高程序开发的效率。
为解决上述技术问题,本发明提供一种基于闪存应用的嵌入式系统的程序调试系统,包括:
主机终端,其上具有程序调试工具;
主控芯片,与所述主机终端相连接;以及
闪存,与所述主控芯片相连接,其上存储有待调试程序的多段代码,分别位于不同段编号的代码段内;
其中,所述主控芯片包括:
随机存储器,用于暂存从所述闪存中加载进所述主控芯片的代码;
中央处理器,与所述随机存储器相连接,用于从所述随机存储器中取出代码执行;
程序计数器,用于记录所述中央处理器从所述随机存储器中取代码的地址;以及
代码段寄存器,用于记录当前从所述闪存中加载到所述随机存储器中的代码所在的代码段的段编号。
可选地,所述主控芯片还包括断点列表和断点比较器,其中:
断点列表用于记录所述程序调试系统执行的所有断点信息,其包括:
断点代码段寄存器,用于记录各个断点所在的代码段的段编号;
断点程序计数器,用于记录各个断点在其代码段内的段内偏移地址;以及
断点比较器用于将所述断点列表中所有的断点信息依次取出,分别与所述代码段寄存器以及所述程序计数器中的信息进行比较,其包括:
第二比较模块,用于比较所述代码段寄存器与所述断点代码段寄存器记录的信息;
第一比较模块,用于比较所述程序计数器与所述断点程序计数器记录的信息。
可选地,所述主机终端为个人计算机。
可选地,所述闪存为NAND闪存。
可选地,所述NAND闪存包括SD卡、U盘和MP3播放器。
为解决上述技术问题,本发明还提供一种采用上述任一项所述的基于闪存应用的嵌入式系统的程序调试系统进行程序调试的方法,包括程序定位步骤:
I.从闪存中加载一代码段的代码到随机存储器;
II.代码段寄存器记录所述代码段所在的段编号;
III.程序计数器记录所述中央处理器从所述随机存储器中取代码的地址;
V.中央处理器根据所述程序计数器记录的所述地址,从所述随机存储器中取出所述代码并执行;
IV.在所述代码执行的过程中,所述程序计数器更新为下一次取代码的地址;
VI.在所述代码执行的过程中,当从所述闪存中加载另外段编号的代码段的代码到所述随机存储器时,所述代码段寄存器更新为所述代码段所在的段编号;以及
VII.循环执行上述步骤I~VI,直至待调试程序的所有代码均执行调试完毕。
可选地,所述程序调试的方法还包括断点调试步骤:
A.主机终端在所述待调试程序的一个或多个位置设置断点,将所述断点所在的代码段的段编号以及代码段内偏移地址通知主控芯片;
B.主控芯片内的断点代码段寄存器和断点程序计数器分别记录所述断点所在的代码段的段编号和段内偏移地址;
C.在代码执行过程中,断点比较器将断点列表中所有的断点信息依次取出,分别与所述代码段寄存器以及所述程序计数器中的信息进行比较,若所述断点列表中存在着某个断点,其对应的断点代码段寄存器中的信息与所述代码段寄存器中的信息一致,并且该断点对应的所述断点程序计数器中的信息与所述程序计数器中的信息一致,则表示程序运行到了某个断点的位置,则暂停程序执行,否则表示程序未执行到断点位置,程序持续执行。
与现有技术相比,本发明具有以下优点:
本发明提供的设计方案,解决了基于闪存应用的嵌入式系统代码分段加载带来的程序调试不方便的问题,配合开发相应的调试工具,能够定位出断点的准确位置,可实现完整的源代码调试。另外,还可以实现断点调试,极大地方便了开发人员,提高了程序开发效率。
附图说明
本发明的上述的以及其他的特征、性质和优势将通过下面结合附图和实施例的描述而变得更加明显,其中:
图1为现有技术中一种嵌入式系统架构的示意图;
图2为图1中所示的系统架构的一个示例性的程序执行流程图;
图3为现有技术中一种基于闪存应用的嵌入式系统的程序调试系统的模块示意图;
图4为本发明一个实施例的基于闪存应用的嵌入式系统的程序调试系统的模块示意图;
图5为现有技术中另一种基于闪存应用的嵌入式系统的程序调试系统的模块示意图;
图6为本发明另一个实施例的基于闪存应用的嵌入式系统的程序调试系统的模块示意图;
图7为本发明一个实施例的基于闪存应用的嵌入式系统的程序调试系统的断点列表示意图;
图8为本发明一个实施例的基于闪存应用的嵌入式系统的程序调试方法的流程示意图;
图9为在图8基础上本发明另一个实施例的基于闪存应用的嵌入式系统的程序调试方法的流程示意图。
具体实施方式
下面结合具体实施例和附图对本发明作进一步说明,在以下的描述中阐述了更多的细节以便于充分理解本发明,但是本发明显然能够以多种不同于此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下根据实际应用情况作类似推广、演绎,因此不应以此具体实施例的内容限制本发明的保护范围。
I.解决程序定位问题
程序定位:在程序调试过程中,安装在主机终端(也叫Host终端,例如个人计算机)上的调试工具需要知道主控芯片中程序执行的确切位置,并将对应位置的程序的源程序代码显示在主机终端,供程序员调试。显然,如果无法将程序执行所在的确切位置,与源代码对应的位置匹配起来,则会对程序的调试带来非常大的困扰。
在未有本发明之前的一种基于闪存应用的原嵌入式系统的程序调试系统的模块示意图可以如图3所示。该程序调试系统的主要模块包括主机终端、主控芯片和闪存。其中,主机终端上具有程序调试工具;主控芯片与主机终端相连接;闪存与主控芯片相连接,其上存储有待调试的程序,该程序已被切分为多个代码段0~N。
在图3所示的例子中,主控芯片包括:随机存储器(RAM)、中央处理器(CPU)和程序计数器(Program Counter,简称PC)。随机存储器用于加载并暂存闪存中的某一段代码。中央处理器与随机存储器相连接,用于执行随机存储器中的代码。程序计数器(PC)用于记录中央处理器将要执行的下一条指令代码在随机存储器中的地址。CPU从RAM中PC记录的地址中取指令代码执行,然后PC更新,记录下一条指令代码的地址。主机终端可以通过PC知道RAM中程序执行的位置。
但是,该现有的程序调试系统存在的问题包括:主机终端可以知道RAM中程序执行的位置,却不知道RAM中程序是哪段代码的程序,即代码段/程序段的编号无法知道。
例如:程序在执行过程中,先加载代码段0的代码执行,再加载代码段3的代码执行,RAM的内容先是代码段0的程序,后是代码段3的程序。但是RAM内容从代码段0更新为代码段3的过程,对于主机终端是不可知的。主机终端不能区分出哪段程序在RAM中执行,所以无法知道整个程序执行的准确位置,也就不能显示出对应的程序代码,或者显示其他的代码,这显然会对程序员的调试工作带来极大不便。
本发明针对上述问题提出了解决方案,图4为本发明一个实施例的基于闪存应用的嵌入式系统的程序调试系统的模块示意图。如图4所示,该程序调试系统400可以包括主机终端401、主控芯片403和闪存405。其中,主机终端401可以为个人计算机,其上具有程序调试工具(未图示);主控芯片403与主机终端401相连接;闪存405可以为NAND闪存(例如SD卡、U盘或者MP3播放器),与主控芯片403相连接,其上存储有待调试程序的多个代码段0~N。
在本实施例中,主控芯片403可以包括随机存储器(RAM)4031、中央处理器(CPU)4032、程序计数器(Program Counter,简称PC)4033和一个新增的代码段寄存器(Code Segment)4034。其中,随机存储器4031,用于暂存从闪存405中加载进主控芯片403的代码。中央处理器4032与随机存储器4031相连接,用于从随机存储器4031中取出代码来执行。程序计数器4033用于记录中央处理器4032从随机存储器4031中取代码的地址。新增的代码段寄存器4034用于记录当前从内存405中加载到随机存储器4031中的代码所在的代码段的段编号0~N。
例如,当代码段0被加载到RAM 4031中,代码段寄存器4034就被设置为0,代码段0程序执行中;当加载了代码段3程序到RAM 4031时,代码段寄存器4034就被设置为3,以此类推。
于是,主机终端401通过读代码段寄存器4034,就可以知道在RAM 4031中正执行的程序是从哪一个程序代码段0~N加载的。另外,主机终端401通过读程序计数器4033,就可以知道RAM 4031中的程序执行到了哪个位置。
结合这两点,主机终端401就可以定位程序执行的确切位置,并显示出当前位置对应的程序代码段。
II.解决断点调试问题
断点调试:通过主机终端设置断点位置,当程序执行到断点位置时,暂停执行,方便调试人员调试。
图5为现有技术中另一种基于闪存应用的嵌入式系统的程序调试系统的模块示意图。如图5所示,其与图3中所示的现有例子的区别在于:该主控芯片还包括断点列表和断点比较器。其中,该断点列表用于记录程序调试时的断点信息。断点列表仅仅包括了断点程序计数器(Breakpoint PC),只能记录下断点在代码段内部的偏移地址。该断点比较器用于对程序计数器(PC)与断点列表中的所有断点程序计数器(Breakpoint PC)记录的信息进行比较。
适用上述程序调试系统进行程序调试的思路是:
1)主机终端在某程序代码段内部某偏移位置,设置断点;
2)主控芯片断点列表的断点程序计数器记录下该偏移位置;
3)主机终端通知主控芯片执行程序,在程序执行过程中程序计数器实时更新;
4)主控芯片的断点比较器在程序执行过程中对程序计数器和断点列表中的断点计数器进行实时比较,如果程序计数器与断点程序计数器相等,就认为程序已经执行到断点位置,然后暂停。
但是,这种断点调试系统存在的问题是:断点信息不完整,因为主控芯片断点列表中不包含程序代码的段信息。因此,尽管之前解决了源代码与程序具体执行位置的匹配,但还存在断点不匹配的问题。
例如,程序员通过主机终端在代码段0程序段,偏移0x100处设置了断点,希望当代码段0段程序加载到RAM中,且执行到地址为0x100的位置时暂停。但是,因为主控芯片的断点列表中只记录下了0x100这个信息,没有代码段0这个程序段信息,结果是在调试过程中,其他程序段(代码段1,代码段2,....)的程序在RAM中执行时,执行到0x100的地址时都会暂停。这与程序员最初的设计思想不符。
针对这个问题,本发明也进行了以下改进。如图6所示,其为本发明另一个实施例的基于闪存应用的嵌入式系统的程序调试系统的模块示意图。在图6中,主控芯片403在图4所示的实施例的基础上,进一步包括断点列表4035和断点比较器4036。其中,断点列表4035用于记录程序调试系统400执行的所有断点信息,其包括M个断点程序计数器40351和相应的断点代码段寄存器40352。断点程序计数器40351用于记录各个断点在其代码段0~N内的段内偏移地址。断点代码段寄存器40352用于记录各个断点所在的代码段的段编号。断点比较器4036用于将断点列表4035中所有的断点信息依次取出,分别与代码段寄存器4034以及程序计数器4033中的信息进行比较,其包括第一比较模块40361和第二比较模块40362。第一比较模块40361用于比较程序计数器4033与断点程序计数器40351记录的信息。第二比较模块40362用于比较代码段寄存器4034与断点代码段寄存器40352记录的信息。
由此,程序员在进行断点调试时,系统工作过程可以包括:
1)主机终端401在程序的某位置设置断点,将该断点所在的程序段,以及段内偏移地址通知主控芯片403;
2)主控芯片403中的断点代码段寄存器40352记录下断点的所在的代码段编号;
3)主控芯片403中的断点程序计数器40351记录下断点在其所在的代码段内偏移地址;
4)主控芯片403在程序执行过程中,程序计数器4033及代码段寄存器4034会实时改变,指示当前程序执行的位置;
5)程序执行过程中,断点比较器4036实时进行断点比较动作,将断点列表4035中所有的断点信息依次取出,分别对程序计数器4033与断点列表4035中的所有断点程序计数器40351记录的信息进行比较,并对代码段寄存器4034与断点列表4035中的所有断点代码段寄存器40352进行比较。若断点列表4035中存在着某个断点,其对应的断点代码段寄存器40352中的信息与代码段寄存器4034中的信息一致,并且该断点对应的断点程序计数器40351中的信息与所述程序计数器4033中的信息一致,则表示程序运行到了某个断点的位置,则暂停程序执行,否则表示程序未执行到断点位置,程序持续执行。
例如:断点调试时,设置2个断点:
代码段0,段内偏移0x100地址
代码段3,段内偏移0x200地址
图7为本发明一个实施例的基于闪存应用的嵌入式系统的程序调试系统的断点列表示意图,则具体过程如下:
1)主机终端401在代码段0程序段,段内偏移0x100设置断点;主机终端401在代码段3程序段,段内偏移0x200设置断点,并将该信息通知主控芯片403;
2)主控芯片403记录下断点的程序代码段号(代码段0,代码段3);
3)主控芯片403记录下断点的程序代码段内部偏移地址(0x100,0x200),如图7所示;
4)程序执行过程中,程序计数器4033及代码段寄存器4034会实时改变;
5)主控芯片403的断点比较器4036进行断点比较动作:
当程序计数器4033等于0x100,且代码段寄存器4034等于0,认为执行到了断点处,暂停执行;
或者
当程序计数器4033等于0x200,且代码段寄存器4034等于3,认为执行到了断点处,暂停执行。
显然,采用这种方式修改断点系统之后,可以解决之前程序调试系统存在的断点调试问题。
图8为本发明一个实施例的基于闪存应用的嵌入式系统的程序调试方法的流程示意图。如图所示,该程序调试方法可以包括程序定位步骤:
执行步骤S801,从闪存405中加载一代码段的代码到随机存储器4031;
执行步骤S802,代码段寄存器4034记录代码段所在的段编号;
执行步骤S803,程序计数器4033记录中央处理器4032从随机存储器4031中取代码的地址;
执行步骤S804,中央处理器4032根据程序计数器4033记录的地址,从随机存储器4031中取出代码并执行;
执行步骤S805,在代码执行的过程中,程序计数器4033更新为下一次取代码的地址;
执行步骤S806,在代码执行的过程中,当从闪存405中加载另外段编号的代码段的代码到随机存储器4031时,代码段寄存器更新为代码段所在的段编号;以及
执行步骤S807,循环执行上述步骤S801~S806,直至待调试程序的所有代码均执行调试完毕。
图9为在图8基础上本发明另一个实施例的基于闪存应用的嵌入式系统的程序调试方法的流程示意图。如图所示,该程序调试方法还可以包括断点调试步骤:
执行步骤S901,主机终端401在待调试程序的一个或多个位置设置断点,将断点所在的代码段的段编号以及代码段内偏移地址通知主控芯片403;
执行步骤S902,主控芯片403内的断点代码段寄存器40352和断点程序计数器40351分别记录断点所在的代码段的段编号和段内偏移地址;
执行步骤S903,在代码执行过程中,断点比较器4036将断点列表4035中所有的断点信息依次取出,分别与代码段寄存器4034以及程序计数器4033中的信息进行比较,若断点列表4035中存在着某个断点,其对应的断点代码段寄存器40352中的信息与代码段寄存器4034中的信息一致,并且该断点对应的断点程序计数器40351中的信息与程序计数器4033中的信息一致,则表示程序运行到了某个断点的位置,则暂停程序执行,否则表示程序未执行到断点位置,程序持续执行。
本发明提供的设计方案,解决了基于闪存应用的嵌入式系统代码分段加载带来的程序调试不方便的问题,配合开发相应的调试工具,能够定位出断点的准确位置,可实现完整的源代码调试。另外,还可以实现断点调试,极大地方便了开发人员,提高了程序开发效率。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何修改、等同变化及修饰,均落入本发明权利要求所界定的保护范围之内。

Claims (6)

1.一种基于闪存应用的嵌入式系统的程序调试系统(400),包括:
主机终端(401),其上具有程序调试工具;
主控芯片(403),与所述主机终端(401)相连接;以及
闪存(405),与所述主控芯片(403)相连接,其上存储有待调试程序的多段代码,每段代码位于不同代码段内,每个代码段具有不同的段编号;
其中,所述主控芯片(403)包括:
随机存储器(4031),用于暂存从所述闪存(405)中加载进所述主控芯片(403)的代码;
中央处理器(4032),与所述随机存储器(4031)相连接,用于从所述随机存储器(4031)中取出代码执行;
程序计数器(4033),用于记录所述中央处理器(4032)从所述随机存储器(4031)中取代码的地址;以及
代码段寄存器(4034),用于记录当前从所述闪存(405)中加载到所述随机存储器(4031)中的代码所在的代码段的段编号;
所述主控芯片(403)还包括断点列表(4035)和断点比较器(4036),其中:
所述断点列表(4035)用于记录所述程序调试系统(400)执行的所有断点信息,其包括:
断点代码段寄存器(40352),用于记录各个断点所在的代码段的段编号;
断点程序计数器(40351),用于记录各个断点在其代码段内的段内偏移地址;
所述断点比较器(4036)用于将所述断点列表(4035)中所有的断点信息依次取出,每一所述断点信息包括一个断点所在的代码段的段编号以及所述断点在其代码段内的段内偏移地址,分别与所述代码段寄存器(4034)以及所述程序计数器(4033)中的信息进行比较,其包括:
第二比较模块(40362),用于比较所述代码段寄存器(4034)与所述断点代码段寄存器(40352)记录的信息;
第一比较模块(40361),用于比较所述程序计数器(4033)与所述断点程序计数器(40351)记录的信息。
2.根据权利要求1所述的程序调试系统(400),其特征在于,所述主机终端(401)为个人计算机。
3.根据权利要求1所述的程序调试系统(400),其特征在于,所述闪存(405)为NAND闪存。
4.根据权利要求3所述的程序调试系统(400),其特征在于,所述NAND闪存包括SD卡、U盘和MP3播放器。
5.一种采用权利要求1至4中任一项所述的基于闪存应用的嵌入式系统的程序调试系统(400)进行程序调试的方法,包括程序定位步骤:
I.从闪存(405)中加载一代码段的代码到随机存储器(4031);
II.代码段寄存器(4034)记录所述代码段所在的段编号;
III.程序计数器(4033)记录所述中央处理器(4032)从所述随机存储器(4031)中取代码的地址;
IV.中央处理器(4032)根据所述程序计数器(4033)记录的所述地址,从所述随机存储器(4031)中取出所述代码并执行;
V.在所述代码执行的过程中,所述程序计数器(4033)更新为下一次取代码的地址;
VI.在所述代码执行的过程中,当从所述闪存(405)中加载另外段编号的代码段的代码到所述随机存储器(4031)时,所述代码段寄存器更新为所述代码段所在的段编号;以及
VII.循环执行上述步骤I~VI,直至待调试程序的所有代码均执行调试完毕。
6.根据权利要求5所述的程序调试的方法,其特征在于,还包括断点调试步骤:
A.主机终端(401)在所述待调试程序的一个或多个位置设置断点,将所述断点所在的代码段的段编号以及代码段内偏移地址通知主控芯片(403);
B.主控芯片(403)内的断点代码段寄存器(40352)记录所述断点所在的代码段的段编号,主控芯片(403)内的断点程序计数器(40351)记录所述断点在其代码段内的段内偏移地址;
C.在代码执行过程中,断点比较器(4036)将断点列表(4035)中所有的断点信息依次取出,每一所述断点信息包括一个断点所在的代码段的段编号以及所述断点在其代码段内的段内偏移地址,分别与所述代码段寄存器(4034)以及所述程序计数器(4033)中的信息进行比较,若所述断点列表(4035)中存在着某个断点,其对应的断点代码段寄存器(40352)中的信息与所述代码段寄存器(4034)中的信息一致,并且该断点对应的所述断点程序计数器(40351)中的信息与所述程序计数器(4033)中的信息一致,则表示程序运行到了某个预先设定的断点位置,则暂停程序执行,否则表示程序未执行到断点位置,程序持续执行。
CN201210121035.1A 2012-04-23 2012-04-23 基于闪存应用的嵌入式系统的程序调试系统及方法 Active CN102662847B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210121035.1A CN102662847B (zh) 2012-04-23 2012-04-23 基于闪存应用的嵌入式系统的程序调试系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210121035.1A CN102662847B (zh) 2012-04-23 2012-04-23 基于闪存应用的嵌入式系统的程序调试系统及方法

Publications (2)

Publication Number Publication Date
CN102662847A CN102662847A (zh) 2012-09-12
CN102662847B true CN102662847B (zh) 2015-01-21

Family

ID=46772344

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210121035.1A Active CN102662847B (zh) 2012-04-23 2012-04-23 基于闪存应用的嵌入式系统的程序调试系统及方法

Country Status (1)

Country Link
CN (1) CN102662847B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335279B (zh) * 2014-06-27 2018-04-20 比亚迪股份有限公司 单片机中闪存程序自动检测及修复方法和装置
CN104503905B (zh) * 2014-12-15 2018-05-25 北京兆易创新科技股份有限公司 一种嵌入式系统的调试方法及调试系统
CN106681897B (zh) * 2015-11-06 2020-10-16 北京国双科技有限公司 一种代码调试方法及装置
CN110287100A (zh) * 2019-05-21 2019-09-27 北京达佳互联信息技术有限公司 着色器代码的调试方法、装置、电子设备及存储介质
CN113590149A (zh) * 2021-06-29 2021-11-02 北京智芯微电子科技有限公司 程序分段加载运行的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
CN102117243A (zh) * 2010-12-29 2011-07-06 杭州晟元芯片技术有限公司 一种在Flash存储器中高效的使用软件断点调试的方法
CN102193860A (zh) * 2010-03-10 2011-09-21 上海海尔集成电路有限公司 微控制器在线调试电路及方法、微控制器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092570B2 (en) * 2007-07-28 2015-07-28 Sam Michael Memory management for remote software debuggers and methods
CN101908016A (zh) * 2009-06-05 2010-12-08 松翰科技股份有限公司 多核心嵌入式装置的除错信息与断点管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
CN102193860A (zh) * 2010-03-10 2011-09-21 上海海尔集成电路有限公司 微控制器在线调试电路及方法、微控制器
CN102117243A (zh) * 2010-12-29 2011-07-06 杭州晟元芯片技术有限公司 一种在Flash存储器中高效的使用软件断点调试的方法

Also Published As

Publication number Publication date
CN102662847A (zh) 2012-09-12

Similar Documents

Publication Publication Date Title
CN102662847B (zh) 基于闪存应用的嵌入式系统的程序调试系统及方法
US8261130B2 (en) Program code trace signature
CN102819492B (zh) 一种基于Android的关键字驱动自动化测试框架
CN103186461B (zh) 一种现场数据的保存方法和恢复方法以及相关装置
CN103440457B (zh) 基于进程模拟的二进制程序分析系统
CN103019787A (zh) 函数调用关系确定方法、热补丁升级方法及装置
CN103577310A (zh) 记录软件调试日志的方法以及装置
CN104346274A (zh) 程序调试器及一种程序的调试方法
CN103631712B (zh) 一种基于内存管理的模式化软件关键行为跟踪方法
CN102270166A (zh) 基于模拟器的处理器故障注入及跟踪方法及模拟器
CN101251799B (zh) 管理实现的方法和装置
CN102479265A (zh) 修改硬掩膜产品固件错误功能的方法
CN107301042A (zh) 一种带自检功能的SoC应用程序引导方法
CN102135877B (zh) 自动化构建方法及装置
CN101685420B (zh) 多线程调试方法和装置
CN100511179C (zh) 带特殊功能寄存器断点的增强型微处理器片上动态跟踪方法
CN111367742A (zh) 调试mvp处理器的方法、装置、终端和计算机可读存储介质
CN108469997B (zh) 一种基于动态特征的自定义堆管理函数的自动识别方法
EP1125199B1 (en) Method of debugging a program thread
CN102629212A (zh) 一种基于j-link间接烧写程序到nandflash的方法
CN105095079A (zh) 一种热点模块指令跟踪的方法及设备
CN103777930A (zh) 程序内部信息的输出方法、获取方法、监测方法及其装置
CN111857785A (zh) 一种mcu的启动方法、装置及终端设备
CN115687131A (zh) 一种程序调试方法
CN102479116A (zh) 一种查看系统异常时代码信息的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant