CN105824750B - 一种在NorFlash程序空间调试的软断点模拟方法 - Google Patents
一种在NorFlash程序空间调试的软断点模拟方法 Download PDFInfo
- Publication number
- CN105824750B CN105824750B CN201610145172.7A CN201610145172A CN105824750B CN 105824750 B CN105824750 B CN 105824750B CN 201610145172 A CN201610145172 A CN 201610145172A CN 105824750 B CN105824750 B CN 105824750B
- Authority
- CN
- China
- Prior art keywords
- instruction
- debugger
- soft
- breakpoint
- break
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种NorFlash程序空间调试的软断点模拟方法,包括如下步骤:(1)处理器编码阶段,对于软断点指令的编码,要为全0的编码格式;(2)在NorFlash程序空间调试阶段,当调试器有向程序空间插入断点指令的需求时,调试器调用断点指令插入单元,该单元利用NorFlash空间可以按照特定长度将指定位置从1写入0的特征,插入处理器的软断点指令,即写入全0;(3)当调试器收到运行程序的调试请求时,判断当前PC处的指令是否与软断点指令列表中的断点地址匹配;(4)当处理器运行中遇到软断点指令之后,调试器应当判断这条软断点指令地址是否与软断点模块中全部软断点地址匹配。本发明调试效率较高、适用性良好。
Description
技术领域
本发明属于处理器NorFlash程序空间的调试领域,尤其涉及RISC 嵌入式处理器NorFlash程序空间调试中的软断点的实现方法。
背景技术
在基于RISC处理器的嵌入式系统开发中,只读空间(NorFlash, E2PROM等)的开发是必不可少的,几乎所有的嵌入式设备在完成开发之后,都需要将代码烧写到只读空间中,实现嵌入式设备上电直接运行在Flash上,即可工作的功能。在只读器件中,NorFlash以其线性地址寻址,直接可执行指令的特点,受到了嵌入式设备的青睐。
对于RAM空间来说,由于其空间可以随意修改内容,开发人员只需要设置软断点来实现对程序运行的控制。软断点设置之后,调试器在每次运行程序之前,首先需要做的是将设置了软断点的地址上的指令替换为处理器的断点指令,然后运行程序,处理器运行期间遇到断点指令之后,会将信息返回给调试器,从而实现了对程序的控制。软断点的实现由于对处理器调试没有多余的硬件需求,所以理论上是可以设置无限多个的。
由于NorFlash不能像RAM那样支持随意写操作,所以现有 NorFlash程序空间调试基本上都需要硬断点来完成对程序运行的控制,开发人员如果希望运行在NorFlash空间的程序在某处停下来,需要在该处设置一个硬断点,处理器会接收到调试器设置硬断点的信息,使用其内部的硬件资源,完成硬断点的设置,后续运行中程序如果触发该硬断点,处理器会将信息返回给调试器,从而实现对程序的控制。这种方式的最大问题在于,硬断点的实现是需要硬件开销的,而且与硬件断点的实现个数成正比,对于一些极低功耗的嵌入式设备来说,硬断点个数可能只有一个(甚至没有),开发人员将无法在控制程序运行的时候同时设置多个断点进行程序调试;或者在设置了硬断点之后无法通过调试器观察点去检测程序中某个变量的变化,因为调试器的观察点的实现需要消耗处理器中一个硬断点资源。
只读空间由于其软断点指令无法写入、替换的问题,硬件断点又存在个数限制,使得NorFlash程序空间的程序开发调试效率受到了影响,一些极端情况下,某些调试需求还无法实现。
发明内容
为了克服已有嵌入式开发中NorFlash程序空间调试效率较低、适用性较差的不足,本发明提供一种调试效率较高、适用性良好的在 NorFlash程序空间调试的软断点模拟方法。
本发明解决其技术问题所采用的技术方案是:
一种在NorFlash程序空间调试的软断点模拟方法,所述软断点模拟方法包括如下步骤:
(1)处理器编码阶段,对于软断点指令的编码,要为全0的编码格式;
(2)在NorFlash程序空间调试阶段,当调试器有向程序空间插入断点指令的需求时,调试器调用断点指令插入单元,该单元利用 NorFlash空间可以按照特定长度将指定位置从1写入0的特征,插入处理器的软断点指令,即写入全0;
(3)当调试器收到运行程序的调试请求时,首先判断当前PC处的指令是否与软断点指令列表中的断点地址匹配;如果不匹配,则表示该软断点是程序本身的指令,调试器可以按照原有流程,停止程序的执行即可;如果匹配,则执行如下流程:
(3.1)调试器会解析PC处被替换的处理器的二进制指令流,输出格式化结果,该结果包含指令类型、指令操作数以及指令可能产生的全部异常类型;
(3.2)调试器内部指令执行单元会首先根据解析结果对指令是否产生异常进行判断,判断依据依照处理器异常类型而定;
(3.3)如果指令不会产生异常,调试器会读取指令解析中的操作数部分以及指令类型,调用特定的调试命令,控制处理器完成这条被替换指令的执行,最后根据调试命令选择停止程序、运行程序;
(3.4)如果指令会产生异常,调试器应该根据解析的异常类型,调用指定的调试命令,将处理器设定到指定的异常状态中,然后继续根据调试命令选择停止、运行程序;
(3.5)若指令正常执行,调试器会执行PC=PC+{当前指令长度}操作;若指令执行会产生异常,调试器会执行PC=异常向量表[异常号],跳到异常入口处执行。
(4)当处理器运行中遇到软断点指令之后,调试器应当判断这条软断点指令地址是否与软断点模块中全部软断点地址匹配:
(4.1)如果匹配,则如(3)所述由调试器模拟执行这条指令;
(4.2)如果不匹配,则不需要做任何特殊操作。
本发明的技术构思为:利用NorFlash器件可以以特定的长度将保存的值从1写成0的特性;要求处理器的软断点指令编码必须是全0,编码长度可以随意;利用调试器的基本调试功能来模拟处理器的异常状态、实现处理器的指令功能。
本发明的有益效果主要表现在:1)该方法实现了NorFlash程序空间软断点的插入,以及模拟执行处理器指令,以软件模拟指令执行的方式来间接实现硬件断点的功能,解决了断点设置个数有限的问题,从而提高了嵌入式NorFlash空间程序调试的调试效率;
2)该方法的实现并没有占用任何的硬件开销,在嵌入式这种对资源有限制要求的领域中,具有很高的实用价值;
3)该方法在嵌入式NorFlash调试中,节省了硬件开销,对于用于调试的硬件资源有限的处理器的调试中,可以满足之前无法满足的一些调试需求。
附图说明
图1是NorFlash软断点模拟系统框图;
图2是调试器断点管理流程图;
图3是处理器指令模拟模块结构框图;
图4是处理器异常模拟单元流程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图4,一种在NorFlash程序空间调试的软断点模拟方法,所述软断点模拟方法包括如下步骤:
(1)处理器编码阶段,对于软断点指令的编码,要为全0的编码格式;
(2)在NorFlash程序空间调试阶段,当调试器有向程序空间插入断点指令的需求时,调试器调用断点指令插入单元,该单元利用 NorFlash空间可以按照特定长度将指定位置从1写入0的特征,插入处理器的软断点指令,即写入全0;
(3)当调试器收到运行程序的调试请求时,首先判断当前PC处的指令是否与软断点指令列表中的断点地址匹配;如果不匹配,则表示该软断点是程序本身的指令,调试器可以按照原有流程,停止程序的执行即可;如果匹配,则执行如下流程:
(3.1)调试器会解析PC处被替换的处理器的二进制指令流,输出格式化结果,该结果包含指令类型、指令操作数以及指令可能产生的全部异常类型;
(3.2)调试器内部指令执行单元会首先根据解析结果对指令是否产生异常进行判断,判断依据依照处理器异常类型而定;
(3.3)如果指令不会产生异常,调试器会读取指令解析中的操作数部分以及指令类型,调用特定的调试命令,控制处理器完成这条被替换指令的执行,最后根据调试命令选择停止程序、运行程序;
(3.4)如果指令会产生异常,调试器应该根据解析的异常类型,调用指定的调试命令,将处理器设定到指定的异常状态中,然后继续根据调试命令选择停止、运行程序;
(3.5)若指令正常执行,调试器会执行PC=PC+{当前指令长度}操作;若指令执行会产生异常,调试器会执行PC=异常向量表[异常号],跳到异常入口处执行。
(4)当处理器运行中遇到软断点指令之后,调试器应当判断这条软断点指令地址是否与软断点模块中全部软断点地址匹配:
(4.1)如果匹配,则如(3)所述由调试器模拟执行这条指令;
(4.2)如果不匹配,则不需要做任何特殊操作。
本实施例中,为调试器增加启动NorFlash程序空间调试的命令。由于本发明中,对NorFlash的软断点管理方法是与一般RAM中的软断点实现完全不同,所以这里需要对调试器添加进行NorFlash程序空间进行调试的命令。
更新调试器断点管理模块,新增NorFlash断点写入单元;通常情况下NorFlash具有特定长度从1写入0的特性,调试器应该利用该特性,写入处理器断点指令,当NorFlash要求的特定长度大于处理器断点指令的时候,例如,NorFlash要求以全字写入,而断点指令为半字,这时候,调试器可以以全字写入包含断点的数据0xFFFF0000,由于1 无法正常写入,断点写入单元的这种操作,实际上达到了向NorFlash 写入半字断点指令的效果,且没有影响其他程序空间。
更新调试器断点管理模块,当设定的软断点真正插入到NorFlash 空间后,调试器应当记录该断点,因为NorFlash空间的插入的软断点指令无法修改,所以调试器在整个调试过程中记录下插入的断点信息,无论该断点是否被删除;当该断点是已经删除的软断点,那么调试器需要模拟此处指令的执行,然后继续运行程序;当该断点没有删除,调试器在模拟完成此处指令执行后,根据调试命令,运行或停止程序;
更新调试器断点管理模块,每当收到运行程序的命令时,断点管理模块介入调试器处理流程,用来对当前指令进行检测,查看当前指令是否为调试其写入的软断点指令,如果是,则会启动“处理器指令模拟模块”;(如图2所示);每当程序停止,调试器处理内存查看需求时,断点管理模块需要介入处理流程,当内存范围包含该断点指令时,需要将读取的目标地址替换为调试器内部记录的指令的编码。
处理器指令模拟模块中主要包含三个单元(如图3所示):
处理器指令解析单元;负责将调试器断点管理模块中保存的断点处二进制指令解析成相应的处理器指令。其输出结果中包含了该指令的操作数、寄存器号等信息,还包含了可能产生的异常类型。
处理器异常模拟单元;根据指令解析单元中的输出结果,首先找到可能产生的异常类型列表,检测每个异常是否产生,特权违反异常的检测为例,调试器可以执行查看处理器状态寄存器的命令,通过查看处理器状态,判断当前指令是否超越权限,随后进入后续逻辑处理 (如图4所示),当判断异常产生,异常处理单元则会阻塞该指令进入指令执行单元,然后根据异常类型,调试器调整处理器状态到异常入口,以特权违反异常为例,调试器需要执行如下逻辑步骤:
1.设置处理器异常号为特权违反异常号;
2.将处理器状态寄存器和PC分别设置到其对应的影子寄存器中;
3.清除处理器指令跟踪的控制位、中断使能位;
4.读取处理器异常处理入口,并根据异常向量号计算出特权违反异常的入口地址,然后赋值给PC,最后根据调试命令,运行或停止程序;当异常处理单元判断这条指令没有异常产生时,则会直接将指令解析单元中输出的结果发送给指令执行单元;
处理器执行模拟单元;根据处理解析单元中输出的结果,读取操作数,并对处理器进行相应的操作,以特权指令【MFCR R0,PSR】为例,这条指令是将处理器状态寄存器的值赋值给处理器通用寄存器,调试器需要执行如下逻辑步骤:
1.读取处理器状态寄存器;
2.更新处理器通用寄存器的值为读取的状态寄存器的值;
3.调整PC=PC+{断点指令长度};
4.根据调试命令,运行或停止程序。
Claims (1)
1.一种在NorFlash程序空间调试的软断点模拟方法,其特征在于:所述软断点模拟方法包括如下步骤:
(1)处理器编码阶段,对于软断点指令的编码,要为全0的编码格式;
(2)在NorFlash程序空间调试阶段,当调试器有向程序空间插入断点指令的需求时,调试器调用断点指令插入单元,该单元利用NorFlash程序空间可以按照特定长度将指定位置从1写入0的特征,插入处理器的软断点指令,即写入全0;
(3)当调试器收到运行程序的调试请求时,首先判断当前PC处的指令是否与软断点指令列表中的断点地址匹配;如果不匹配,则表示该软断点是程序本身的指令,调试器可以按照原有流程,停止程序的执行即可;如果匹配,则执行如下流程:
(3.1)调试器会解析PC处被替换的处理器的二进制指令流,输出格式化结果,该结果包含指令类型、指令操作数以及指令可能产生的全部异常类型;
(3.2)调试器内部指令执行单元会首先根据解析结果对指令是否产生异常进行判断,判断依据处理器异常类型而定;
(3.3)如果指令不会产生异常,调试器会读取指令解析中的操作数部分以及指令类型,调用特定的调试命令,控制处理器完成这条被替换指令的执行,最后根据调试命令选择停止程序、运行程序;
(3.4)如果指令会产生异常,调试器应该根据解析的异常类型,调用指定的调试命令,将处理器设定到指定的异常状态中,然后继续根据调试命令选择停止、运行程序;
(3.5)若指令正常执行,调试器会执行PC=PC+{当前指令长度}操作;若指令执行会产生异常,调试器会执行PC=异常向量表[异常号],跳到异常入口处执行;
(4)当处理器运行中遇到软断点指令之后,调试器应当判断这条软断点指令地址是否与软断点模块中全部软断点地址匹配:
(4.1)如果匹配,则如(3)所述由调试器模拟执行这条指令;
(4.2)如果不匹配,则不需要做任何特殊操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610145172.7A CN105824750B (zh) | 2016-05-31 | 2016-05-31 | 一种在NorFlash程序空间调试的软断点模拟方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610145172.7A CN105824750B (zh) | 2016-05-31 | 2016-05-31 | 一种在NorFlash程序空间调试的软断点模拟方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105824750A CN105824750A (zh) | 2016-08-03 |
CN105824750B true CN105824750B (zh) | 2018-05-22 |
Family
ID=56987194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610145172.7A Active CN105824750B (zh) | 2016-05-31 | 2016-05-31 | 一种在NorFlash程序空间调试的软断点模拟方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824750B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968494A (zh) * | 2018-09-28 | 2020-04-07 | 珠海格力电器股份有限公司 | 一种软件调试方法、装置及计算机存储介质 |
CN109344089B (zh) * | 2018-10-18 | 2021-06-22 | 京信通信系统(中国)有限公司 | 一种操作norflash的方法及装置 |
CN110955598B (zh) * | 2019-11-20 | 2024-02-27 | 杭州迪普科技股份有限公司 | 一种内核态程序的断点处理方法及装置 |
CN111752845A (zh) * | 2020-06-30 | 2020-10-09 | 江苏恒宝智能系统技术有限公司 | 一种调试工具及其调试方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117243A (zh) * | 2010-12-29 | 2011-07-06 | 杭州晟元芯片技术有限公司 | 一种在Flash存储器中高效的使用软件断点调试的方法 |
CN102508777A (zh) * | 2011-11-04 | 2012-06-20 | 杭州中天微系统有限公司 | 支持多种底层接口的在线仿真器装置 |
CN102831054A (zh) * | 2012-06-30 | 2012-12-19 | 华为技术有限公司 | 程序断点处理方法及装置 |
CN104461859A (zh) * | 2014-08-27 | 2015-03-25 | 北京中电华大电子设计有限责任公司 | 一种支持nvm软断点调试的仿真器和方法 |
CN104778116A (zh) * | 2014-01-09 | 2015-07-15 | 深圳市中兴微电子技术有限公司 | 一种多断点的软件调试装置和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7506206B2 (en) * | 2005-06-07 | 2009-03-17 | Atmel Corporation | Mechanism for providing program breakpoints in a microcontroller with flash program memory |
-
2016
- 2016-05-31 CN CN201610145172.7A patent/CN105824750B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117243A (zh) * | 2010-12-29 | 2011-07-06 | 杭州晟元芯片技术有限公司 | 一种在Flash存储器中高效的使用软件断点调试的方法 |
CN102508777A (zh) * | 2011-11-04 | 2012-06-20 | 杭州中天微系统有限公司 | 支持多种底层接口的在线仿真器装置 |
CN102831054A (zh) * | 2012-06-30 | 2012-12-19 | 华为技术有限公司 | 程序断点处理方法及装置 |
CN104778116A (zh) * | 2014-01-09 | 2015-07-15 | 深圳市中兴微电子技术有限公司 | 一种多断点的软件调试装置和方法 |
CN104461859A (zh) * | 2014-08-27 | 2015-03-25 | 北京中电华大电子设计有限责任公司 | 一种支持nvm软断点调试的仿真器和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105824750A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4084235A (en) | Emulation apparatus | |
US8261130B2 (en) | Program code trace signature | |
CN105824750B (zh) | 一种在NorFlash程序空间调试的软断点模拟方法 | |
US7783867B2 (en) | Controlling instruction execution in a processing environment | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
CN102792265B (zh) | 基于机器状态的指令破解 | |
CN109144515B (zh) | Dcs图形化算法组态的离线仿真方法和装置 | |
CN108664380B (zh) | 一种带性能显示的执行后软件调试系统及调试方法 | |
US20030051122A1 (en) | Trace information generation apparatus for generating branch trace information omitting at least part of branch source information and branch destination information on target processing | |
JPH06314213A (ja) | デバッグ装置 | |
US20120110383A1 (en) | Method and apparatus for off-line analyzing crashed programs | |
CN109885466B (zh) | 处理器c8000的仿真方法、系统及介质 | |
US8886512B2 (en) | Simulation apparatus, computer-readable recording medium, and method | |
JPS61269444A (ja) | デ−タ伝送方式 | |
CN100474266C (zh) | 一种用于数字信号处理器的调试系统及其调试方法 | |
CN114238107A (zh) | 一种跟踪调试方法、系统及计算机可读存储介质 | |
CN106970825B (zh) | 一种基于gdb可配置框架的arm7仿真目标机实现方法 | |
US20030070117A1 (en) | Simulation apparatus and simulation method | |
CN109753308B (zh) | 指令通路验证系统及指令通路监测方法 | |
CN112602059A (zh) | 生成矢量谓词摘要 | |
CN109542698A (zh) | 一种基于变异测试的虚拟原型错误检测方法 | |
US20240004780A1 (en) | Parallel execution during application debugging | |
JP2009223861A (ja) | 論理検証システム | |
US9830174B2 (en) | Dynamic host code generation from architecture description for fast simulation | |
CN117724664A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |