CN106126360B - 地址空洞屏蔽方法及装置 - Google Patents
地址空洞屏蔽方法及装置 Download PDFInfo
- Publication number
- CN106126360B CN106126360B CN201610493358.1A CN201610493358A CN106126360B CN 106126360 B CN106126360 B CN 106126360B CN 201610493358 A CN201610493358 A CN 201610493358A CN 106126360 B CN106126360 B CN 106126360B
- Authority
- CN
- China
- Prior art keywords
- address
- hole
- cpu
- debugging
- setting
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000002159 abnormal effect Effects 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims description 39
- 238000001514 detection method Methods 0.000 claims description 8
- 238000011084 recovery Methods 0.000 claims description 7
- 230000002829 reductive effect Effects 0.000 abstract description 9
- 238000013461 design Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 26
- 230000006399 behavior Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000012938 design process Methods 0.000 description 5
- 230000000873 masking effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种地址空洞屏蔽方法及装置,属于软件技术领域。所述方法包括:检测CPU是否进入调试异常状态;在所述CPU进入调试异常状态后,获取系统总线上每一个地址空洞的地址信息;基于所述地址信息,为所述每一个地址空洞设置数据断点。在CPU进入调试异常状态后,通过为每一个地址空洞设置数据断点的方式来屏蔽地址空洞,由于具有猜测执行功能的CPU不会对设置有数据断点的总线地址采取猜测执行措施,因此CPU的猜测执行行为不会落到地址空洞上,避免了由CPU的猜测执行行为引起的系统死机问题;此外,在CPU进入调试异常状态后已完成芯片的全部设计,因此系统总线上出现的地址空洞均可获知,所以可屏蔽全部地址空洞,进一步降低了系统死机的概率。
Description
技术领域
本发明涉及软件技术领域,特别涉及一种地址空洞屏蔽方法及装置。
背景技术
对于电视机来讲,CPU(Central Processing Unit,中央处理单元)实质上是一块大规模集成的电视机处理芯片。目前电视机处理芯片在实际应用到整机项目中时,降低系统功耗和生产成本一直是大家关注的一个焦点。时下,通常采取下述两种措施来达到上述目的。第一种,由于不同整机机型在使用同一款电视机处理芯片进行设计时,可使用到的功能模块一般不同,因此将该机型用不到的一些功能模块的时钟关闭,以此来降低系统功耗。第二种,在满足系统需求的前提下,尽量减少DDR(Double Data Rate,双倍速率同步动态随机存储器)的空间大小,以此来降低生产成本。然而,无论采取上述哪一种措施均会引发地址空洞的问题。即,关闭掉时钟的功能模块对应的地址空间和剪裁掉那一部分DDR对应的地址空间由于不可进行数据读写,因此上述地址空间均会在系统总线上成为一个地址空洞。
CPU在访问到地址空洞时,系统总线是无法对其进行数据响应的。而CPU访问系统总线是一个需要握手的操作,如果系统总线一直没有进行数据响应,那么CPU则一直处于等待响应状态,从而导致宏观上的CPU死机,引起严重的产品问题。为了避免这种问题的出现,如何屏蔽上述地址空洞,使得CPU在访问系统总线时对其进行规避,成为了一个亟待解决的问题。
相关技术在进行地址空洞屏蔽时,通常采取下述方式实现。一方面,芯片设计人员在设计电视机处理芯片时,对已经确定的地址空洞在系统总线上进行屏蔽。比如,寄存地址空间和NORFlash(非易失闪存)地址空间都是常见的地址空洞,因此在系统总线上以加补丁的方式将上述已经确定的地址空洞进行屏蔽。另一方面,软件开发人员在编写软件时通过编写程序代码去控制CPU不要访问系统总线上的地址空洞。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
对于一些地址空洞有时在芯片设计阶段是预想不到的,因此在芯片设计阶段并不能预先屏蔽系统总线上的所有地址空洞,所以依然存在造成系统死机的隐患;此外,对于具有猜测执行功能的CPU,即可提前猜测并执行可能需要程序指令的CPU来说,由于猜测执行功能是芯片设计人员按照特定算法设计的硬件功能,其对软件开发人员来说是不可控的,因此当CPU的猜测执行路径恰好落在会引起系统死机的地址空洞范围内时,同样会造成系统死机。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种地址空洞屏蔽方法及装置。所述技术方案如下:
第一方面,提供了一种地址空洞屏蔽方法,所述方法包括:
检测CPU是否进入调试异常状态;
在所述CPU进入调试异常状态后,获取系统总线上每一个地址空洞的地址信息;
基于所述地址信息,为所述每一个地址空洞设置数据断点。
在另一个实施例中,所述方法还包括:
在所述CPU进入调试异常状态后,获取异常处理向量地址;
访问所述异常处理向量地址指示的地址空间,所述地址空间存储了数据断点设置指令;
执行所述数据断点设置指令,完成所述获取系统总线上每一个地址空洞的地址信息,基于所述地址信息为所述每一个地址空洞设置数据断点的操作。
在另一个实施例中,所述基于所述地址信息,为所述每一个地址空洞设置数据断点,包括:
对于每一个地址空洞,调用调试寄存器将所述地址空洞的起始地址写入断点地址寄存器,将所述地址空洞的地址掩码写入地址掩码寄存器;
将所述起始地址和所述地址掩码进行或运算得到所述地址空洞对应的地址区间,完成在所述地址区间上设置数据断点的操作。
在另一个实施例中,所述获取异常处理向量地址之前,所述方法还包括:
在汇编文件中指定位置添加调试指令,所述指定汇编文件为所述CPU首个执行的文件;
所述检测CPU是否进入调试异常状态,包括:
在检测到所述CPU执行所述调试指令后,确定所述CPU进入所述调试异常状态。
在另一个实施例中,所述方法还包括:
在所述CPU进入调试异常状态后,对当前正在使用的至少一个寄存器执行寄存器现场保护处理;
在为所述每一个地址空洞设置数据断点后,执行寄存器现场恢复处理。
第二方面,提供了一种地址空洞屏蔽装置,所述装置包括:
检测模块,用于检测CPU是否进入调试异常状态;
第一获取模块,用于在所述CPU进入调试异常状态后,获取系统总线上每一个地址空洞的地址信息;
执行模块,用于基于所述地址信息,为所述每一个地址空洞设置数据断点。
在另一个实施例中,所述装置还包括:
第二获取模块,用于在所述CPU进入调试异常状态后,获取异常处理向量地址;
访问模块,用于访问所述异常处理向量地址指示的地址空间,所述地址空间存储了数据断点设置指令;
所述执行模块,用于执行所述数据断点设置指令,完成所述获取系统总线上每一个地址空洞的地址信息,基于所述地址信息为所述每一个地址空洞设置数据断点的操作。
在另一个实施例中,所述执行模块,用于对于每一个地址空洞,调用调试寄存器将所述地址空洞的起始地址写入断点地址寄存器,将所述地址空洞的地址掩码写入地址掩码寄存器;将所述起始地址和所述地址掩码进行或运算得到所述地址空洞对应的地址区间,完成在所述地址区间上设置数据断点的操作。
在另一个实施例中,所述装置还包括:
添加模块,用于在汇编文件中指定位置添加调试指令,所述指定汇编文件为所述CPU首个执行的文件;
所述检测模块,用于在检测到所述CPU执行所述调试指令后,确定所述CPU进入所述调试异常状态。
在另一个实施例中,所述执行模块,还用于在所述CPU进入调试异常状态后,对当前正在使用的至少一个寄存器执行寄存器现场保护处理;在为所述每一个地址空洞设置数据断点后,执行寄存器现场恢复处理。
本发明实施例提供的技术方案带来的有益效果是:
在CPU进入调试异常状态后,通过为系统总线上每一个地址空洞设置数据断点的方式来屏蔽地址空洞,由于具有猜测执行功能的CPU不会对设置有数据断点的总线地址采取猜测执行措施,因此CPU的猜测执行行为不会落到地址空洞上,从而避免了由CPU的猜测执行行为引起的系统死机问题;此外,由于在CPU进入调试异常状态后已完成了芯片的全部设计过程,因此系统总线上出现的地址空洞均可获知,所以可屏蔽系统总线上的全部地址空洞,进一步降低了系统死机的概率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种地址空洞屏蔽方法的流程图;
图2是本发明实施例提供的一种地址空洞屏蔽方法的流程图;
图3是本发明实施例提供的一种地址空洞屏蔽装置的结构示意图;
图4是本发明实施例提供的一种智能设备400的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细的解释说明之前,先对本发明实施例的应用场景予以介绍。本发明实施例提供的方法应用于电视机。示例的,对于一个机型的电视机来说,在将电视机处理芯片上该机型用不到的功能模块的时钟关闭,或者将DDR的地址空间剪掉一部分,进而在系统总线上形成地址空洞后,为了防止具有猜测执行功能的CPU执行的猜测行为落到上述地址空洞上,本发明实施例提出了一种软件形式的地址空洞屏蔽方法,该方法通过对上述地址空洞设置数据断点,可有效解决因CPU猜测执行的行为落到地址空洞造成的系统死机问题,且在芯片流片后可以根据实际情况随时进行修改。详细过程参见下述实施例。
图1是本发明实施例提供的一种地址空洞屏蔽方法的流程图。参见图1,本发明实施例提供的方法流程包括:
101、检测CPU是否进入调试异常状态;若CPU进入调试异常状态,则执行下述步骤102。
102、在CPU进入调试异常状态后,获取系统总线上每一个地址空洞的地址信息。
103、基于该地址信息,为每一个地址空洞设置数据断点。
本发明实施例提供的方法,在CPU进入调试异常状态后,通过为系统总线上每一个地址空洞设置数据断点的方式来屏蔽地址空洞,由于具有猜测执行功能的CPU在遇到数据断点时,不会对设置有该数据断点的总线地址采取猜测执行措施,因此CPU的猜测执行行为不会落到地址空洞上,从而避免了由CPU的猜测执行行为引起的系统死机问题;此外,由于在CPU进入调试异常状态后已完成了电视机处理芯片的全部设计过程,因此系统总线上出现的地址空洞均可获知,所以可屏蔽系统总线上的全部地址空洞,进一步降低了系统死机的概率。
在另一个实施例中,该方法还包括:
在所述CPU进入调试异常状态后,获取异常处理向量地址;
访问所述异常处理向量地址指示的地址空间,所述地址空间存储了数据断点设置指令;
执行所述数据断点设置指令,完成所述获取系统总线上每一个地址空洞的地址信息,基于所述地址信息为所述每一个地址空洞设置数据断点的操作。
在另一个实施例中,所述基于所述地址信息,为所述每一个地址空洞设置数据断点,包括:
对于每一个地址空洞,调用调试寄存器将所述地址空洞的起始地址写入断点地址寄存器,将所述地址空洞的地址掩码写入地址掩码寄存器;
将所述起始地址和所述地址掩码进行或运算得到所述地址空洞对应的地址区间,完成在所述地址区间上设置数据断点的操作。
在另一个实施例中,所述获取异常处理向量地址之前,所述方法还包括:
在汇编文件中指定位置添加调试指令,所述指定汇编文件为所述CPU首个执行的文件;
所述检测CPU是否进入调试异常状态,包括:
在检测到所述CPU执行所述调试指令后,确定所述CPU进入所述调试异常状态。
在另一个实施例中,所述方法还包括:
在所述CPU进入调试异常状态后,对当前正在使用的至少一个寄存器执行寄存器现场保护处理;
在为所述每一个地址空洞设置数据断点后,执行寄存器现场恢复处理。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图2是本发明实施例提供的一种地址空洞屏蔽方法的流程图。参见图2,本发明实施例提供的方法流程包括:
201、检测CPU是否进入调试异常状态;若CPU进入调试异常状态,则执行下述步骤202。
通常情况下,数据断点的设置操作需要在CPU进入调试异常状态下进行。为使CPU进入调试异常状态,本发明实施例在汇编文件中添加了调试指令,在CPU执行该调试指令后便进入调试异常状态。此处提及的汇编文件通常指代被CPU首个执行的start.S文件。一般调试指令添加在start.S文件中的初始位置。之所以将调试指令添加在start.S文件中,是因为start.S文件是第一个被CPU执行的文件,在这里进入调试异常状态为地址空洞设置数据断点,可以防止在后续程序执行过程中进行数据断点设置操作时,出现在还没有为地址空洞设置好数据断点时,CPU已经因为猜测执行到地址空洞处造成系统死机的情况。
在本公开实施例中,根据CPU的类型不同调试指令也可能略有差异。以CPU为龙芯LS232CPU为例,则调试指令可为SDBBP(Software Debug Breakpoint,软件调试断点)指令。在CPU执行该SDBBP指令后,会发生断点调试异常,此时便可对系统总线上的地址空洞进行数据断点的设置操作。其中,SDBBP指令是一个标准的MIPS(Million Instructions PerSecond,单字长定点指令平均执行速度)指令集指令,数据断点的设置便是通过调试把正常应用程序代码替换成软件断点指令来实现的。
202、在CPU进入调试异常状态后,对当前正在使用的至少一个寄存器执行寄存器现场保护处理。
在本发明实施例中,为了保证在完成数据断点设置操作后,CPU可以顺利跳转回主程序继续执行后续软件流程,在CPU进入调试异常状态后,还需先对寄存器现场进行保护处理。其中,现场保护可为保护返回地址、程序状态字、堆栈指针、寄存器的值等。比如,当数据断点的设置操作会改变一些寄存器的值时,则必须对这些寄存器的原始值进行保存,并在程序返回之前恢复上述这些寄存器的原始值,否则在数据断点设置结束后将无法顺利返回主程序继续执行。因为在进行数据断点设置操作时可能使用了其中的寄存器,造成对原有内容的覆盖,进而在跳转回主程序后执行出错。
此外,在对至少一个寄存器进行现场保护处理时,可通过利用一系列PUSH指令实现,即将至少一个寄存器的内容入栈保护起来,本发明实施例对保护现场的实现方式不进行具体限定,此处仅是给出一种可能的方式。
203、获取异常处理向量地址,访问异常处理向量地址指示的地址空间。
在异常处理机制下,当异常发生时,CPU自动地跳到一个固定地址指示的地址空间去执行相关的异常处理程序,而这个固定地址便是本发明实施例提及的异常处理向量地址。即,该异常处理向量地址并非地址空洞的地址,该异常处理向量地址指示的地址空间存储了为地址空洞设置数据断点的代码。在CPU进入调试异常状态后,可以从异常向量表获取到该异常处理向量地址,并访问该异常处理向量地址指示的地址空间,从而执行数据断点设置指令完成数据断点的设置操作。其中,异常向量表可在系统上电后由U-Boot(Universal Boot Loader,通用引导加载)程序设置,本发明实施例对此不进行具体限定。此外,异常向量表一般位于程序的开头部分。
204、执行异常处理向量地址指示的地址空间存储的数据断点设置指令,完成获取系统总线上每一个地址空洞的地址信息,基于该地址信息为每一个地址空洞设置数据断点的操作。
本发明实施例是在芯片设计完成甚至是流片之后,通过软件方式对系统总线上的地址空洞进行屏蔽,而在芯片设计完成之后,系统总线上的全部地址空洞均是已知的。比如,在芯片设计过程中可能无法知道DDR具体减掉的地址空间位于哪里,但是在芯片设计完成之后,根据DDR的原始地址空间和芯片设计完成之后的DDR现行地址空间,便可获知具体减掉的部分位于哪里,即获知到地址空洞的具体位置。
数据断点(Data Breakpoint)的主要作用是在满足条件时打断程序的正常执行,使得CPU暂停当前执行而进行软件调试工作。在本发明实施例中,之所以在系统总线的地址空洞上设置数据断点,是可因为系统总线上的地址空洞本来就是不可以进行数据读写的无用地址区间,因此在这些地址区间上设置数据断点不会产生任何不良影响。此外,由于在芯片设计阶段需要阻止具有猜测执行功能的CPU对设置有数据断点的空间的猜测行为,否则猜测执行会错误地命中数据断点,导致数据断点功能错乱。本发明实施例便是利用这一点来通过设置数据断点来防止猜测执行的行为落到地址空洞上。因此具有猜测执行功能的CPU不会对设置有数据断点的地址空洞进行猜测执行,所以设置数据断点的方式可有效解决CPU的猜测执行行为落到地址空洞上进而造成的系统死机问题。
其中,具有猜测执行功能的CPU可以通过提前判读并执行有可能需要的程序指令的方式来提高执行速度。CPU猜测执行技术出现的契机是因为程序中的条件分支是在得到程序指令的流水线处理结果后再执行的,所以在CPU等待程序指令的处理结果时,流水线的前级电路也处于等待分支指令的空闲状态,这样会导致时钟周期的浪费。而如果CPU能在前条指令结果出来之前便能预测到分支是否转移,那么便可以提前执行相应的指令,这样就避免了流水线的空闲等待,相应地提高了CPU的运算速度。这种CPU猜测执行技术可以在很大程度上提升CPU的性能。但是由于猜测执行功能是芯片设计人员按照特定算法设计的硬件功能,其对软件开发人员来说是不可控的,因此当CPU的猜测执行行为恰好落在会引起系统死机的地址空洞范围内时,便会造成系统死机。本发明实施例正是为了避免上述情况的发生,提出了通过设置数据断点来屏蔽地址空洞的方法。
其中,在为系统总线上每一个地址空洞设置数据断点时,可采取下述方式实现:对于每一个地址空洞,调用调试(Debug)寄存器将该地址空洞的起始地址写入断点地址(ADDR)寄存器,将该地址空洞的地址掩码写入地址掩码(MASK)寄存器;将该起始地址和地址掩码进行或运算得到该地址空洞对应的地址区间,完成在地址区间上设置数据断点的操作。以起始地址为0x80000000,地址掩码为0x0fffffff为例,首先调用Debug寄存器将地址0x80000000写入ADDR寄存器,然后将地址掩码0x0fffffff写入MASK寄存器,之后将地址0x80000000与地址掩码0x0fffffff进行或运算得到0x80000000至0x90000000这一地址区间,从而完成在这一地址区间上设置数据断点的操作。
205、在为每一个地址空洞设置数据断点后,执行寄存器现场恢复处理。
在通过上述步骤204为系统总线上的每一个地址空洞设置好数据断点后,便可以返回到主程序继续执行后续软件流程。为了保证顺利返回,在此之前还需恢复之前步骤202保存的寄存器现场。其中,在执行寄存器现场恢复处理时,可通过一系列的POP指令将之前保存的各个寄存器的内容出栈,本发明实施例对此不进行具体限定。由于堆栈采取的是先进先出原则,所以保护现场时进栈顺序的逆序才是恢复现场时的出栈顺序。
206、跳转回主程序继续执行后续软件流程。
CPU在进入调试异常状态后,数据断点的设置过程相当于在处理一个异常事件,而一个异常事件实质上即是一个中断事件。CPU在处理完毕中断后,均会根据中断的返回地址跳转回主程序继续执行后续软件流程。
本发明实施例提供的方法,在CPU进入调试异常状态后,通过为系统总线上每一个地址空洞设置数据断点的方式来屏蔽地址空洞,由于具有猜测执行功能的CPU在遇到数据断点时,不会对设置有该数据断点的总线地址采取猜测执行措施,因此CPU的猜测执行行为不会落到地址空洞上,从而避免了由CPU的猜测执行行为引起的系统死机问题;此外,由于在CPU进入调试异常状态后已完成了电视机处理芯片的全部设计过程,因此系统总线上出现的地址空洞均可获知,所以可屏蔽系统总线上的全部地址空洞,进一步降低了系统死机的概率。
图3是本发明实施例提供的一种地址空洞屏蔽装置的结构示意图。参见图3,该装置包括:检测模块301、第一获取模块302、执行模块303。
其中,检测模块301与第一获取模块302连接,用于检测CPU是否进入调试异常状态;第一获取模块302与执行模块303连接,用于在所述CPU进入调试异常状态后,获取系统总线上每一个地址空洞的地址信息;执行模块303,用于基于所述地址信息,为所述每一个地址空洞设置数据断点。
在另一个实施例中,该装置还包括:
第二获取模块304,用于在所述CPU进入调试异常状态后,获取异常处理向量地址;
访问模块305,用于访问所述异常处理向量地址指示的地址空间,所述地址空间存储了数据断点设置指令;
所述执行模块303,用于执行所述数据断点设置指令,完成所述获取系统总线上每一个地址空洞的地址信息,基于所述地址信息为所述每一个地址空洞设置数据断点的操作。
在另一个实施例中,所述执行模块303,用于对于每一个地址空洞,调用调试寄存器将所述地址空洞的起始地址写入断点地址寄存器,将所述地址空洞的地址掩码写入地址掩码寄存器;将所述起始地址和所述地址掩码进行或运算得到所述地址空洞对应的地址区间,完成在所述地址区间上设置数据断点的操作。
在另一个实施例中,该装置还包括:
添加模块306,用于在汇编文件中指定位置添加调试指令,所述指定汇编文件为所述CPU首个执行的文件;
所述检测模块301,用于在检测到所述CPU执行所述调试指令后,确定所述CPU进入所述调试异常状态。
在另一个实施例中,所述执行模块303,还用于在所述CPU进入调试异常状态后,对当前正在使用的至少一个寄存器执行寄存器现场保护处理;在为所述每一个地址空洞设置数据断点后,执行寄存器现场恢复处理。
本发明实施例提供的装置,在CPU进入调试异常状态后,通过为系统总线上每一个地址空洞设置数据断点的方式来屏蔽地址空洞,由于具有猜测执行功能的CPU在遇到数据断点时,不会对设置有该数据断点的总线地址采取猜测执行措施,因此CPU的猜测执行行为不会落到地址空洞上,从而避免了由CPU的猜测执行行为引起的系统死机问题;此外,由于在CPU进入调试异常状态后已完成了电视机处理芯片的全部设计过程,因此系统总线上出现的地址空洞均可获知,所以可屏蔽系统总线上的全部地址空洞,进一步降低了系统死机的概率。
需要说明的是:上述实施例提供的地址空洞屏蔽装置在进行地址空洞屏蔽时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的地址空洞屏蔽装置与地址空洞屏蔽方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本实施例提供了一种智能设备,该智能设备可以用于执行上述各个实施例中提供的地址空洞屏蔽方法。参见图4,该智能设备400包括:
智能设备400可以包括红外接收器110,包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(WirelessFidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图4中示出的智能设备结构并不构成对智能设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
红外接收器110可用于接收红外遥控设备发送的操作指令,接收到操作指令后,交由一个或者一个以上处理器180处理。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能设备400的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及智能设备400的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图4中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
智能设备400还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在智能设备400移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于智能设备400还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与智能设备400之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与智能设备400的通信。
WiFi属于短距离无线传输技术,智能设备400通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了WiFi模块170,但是可以理解的是,其并不属于智能设备400的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是智能设备400的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行智能设备400的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
智能设备400还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,智能设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,智能设备的显示单元是触摸屏显示器,智能设备还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。所述一个或者一个以上程序包含用于执行上述地址空洞屏蔽操作的指令。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种地址空洞屏蔽方法,其特征在于,所述方法包括:
在汇编文件中指定位置添加调试指令,所述汇编文件为CPU首个执行的文件,所述指定位置是指所述汇编文件中的初始位置;
在检测到所述CPU执行所述调试指令后,确定所述CPU进入调试异常状态;
在所述CPU进入调试异常状态后,获取系统总线上每一个地址空洞的地址信息;
基于所述地址信息,为所述每一个地址空洞设置数据断点,所述数据断点的设置是通过调试把正常应用程序代码替换成软件断点指令来实现的,所述数据断点用于在满足条件时打断程序的正常执行,使所述CPU暂停当前执行而进行软件调试工作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述CPU进入调试异常状态后,获取异常处理向量地址;
访问所述异常处理向量地址指示的地址空间,所述地址空间存储了数据断点设置指令;
执行所述数据断点设置指令,完成所述获取系统总线上每一个地址空洞的地址信息,基于所述地址信息为所述每一个地址空洞设置数据断点的操作。
3.根据权利要求1所述的方法,其特征在于,所述基于所述地址信息,为所述每一个地址空洞设置数据断点,包括:
对于每一个地址空洞,调用调试寄存器将所述地址空洞的起始地址写入断点地址寄存器,将所述地址空洞的地址掩码写入地址掩码寄存器;
将所述起始地址和所述地址掩码进行或运算得到所述地址空洞对应的地址区间,完成在所述地址区间上设置数据断点的操作。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述CPU进入调试异常状态后,对当前正在使用的至少一个寄存器执行寄存器现场保护处理;
在为所述每一个地址空洞设置数据断点后,执行寄存器现场恢复处理。
5.一种地址空洞屏蔽装置,其特征在于,所述装置包括:
添加模块,用于在汇编文件中指定位置添加调试指令,所述汇编文件为CPU首个执行的文件,所述指定位置是指所述汇编文件中的初始位置;
检测模块,用于在检测到所述CPU执行所述调试指令后,确定所述CPU进入调试异常状态;
第一获取模块,用于在所述CPU进入调试异常状态后,获取系统总线上每一个地址空洞的地址信息;
执行模块,用于基于所述地址信息,为所述每一个地址空洞设置数据断点,所述数据断点的设置是通过调试把正常应用程序代码替换成软件断点指令来实现的,所述数据断点用于在满足条件时打断程序的正常执行,使所述CPU暂停当前执行而进行软件调试工作。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在所述CPU进入调试异常状态后,获取异常处理向量地址;
访问模块,用于访问所述异常处理向量地址指示的地址空间,所述地址空间存储了数据断点设置指令;
所述执行模块,用于执行所述数据断点设置指令,完成所述获取系统总线上每一个地址空洞的地址信息,基于所述地址信息为所述每一个地址空洞设置数据断点的操作。
7.根据权利要求5所述的装置,其特征在于,所述执行模块,用于对于每一个地址空洞,调用调试寄存器将所述地址空洞的起始地址写入断点地址寄存器,将所述地址空洞的地址掩码写入地址掩码寄存器;将所述起始地址和所述地址掩码进行或运算得到所述地址空洞对应的地址区间,完成在所述地址区间上设置数据断点的操作。
8.根据权利要求5所述的装置,其特征在于,所述执行模块,还用于在所述CPU进入调试异常状态后,对当前正在使用的至少一个寄存器执行寄存器现场保护处理;在为所述每一个地址空洞设置数据断点后,执行寄存器现场恢复处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610493358.1A CN106126360B (zh) | 2016-06-28 | 2016-06-28 | 地址空洞屏蔽方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610493358.1A CN106126360B (zh) | 2016-06-28 | 2016-06-28 | 地址空洞屏蔽方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126360A CN106126360A (zh) | 2016-11-16 |
CN106126360B true CN106126360B (zh) | 2020-08-25 |
Family
ID=57286044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610493358.1A Active CN106126360B (zh) | 2016-06-28 | 2016-06-28 | 地址空洞屏蔽方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126360B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845907A (zh) * | 2018-08-14 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种基于IPMITool分析CPU运行异常的测试方法 |
CN115826946B (zh) * | 2023-02-17 | 2023-05-12 | 苏州浪潮智能科技有限公司 | 一种程序异常向量空间优化系统、方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885275A (zh) * | 2005-06-20 | 2006-12-27 | 中兴通讯股份有限公司 | 一种嵌入式系统及其实时内存监控处理方法 |
US20090089547A1 (en) * | 2007-09-28 | 2009-04-02 | Moyer William C | System and method for monitoring debug events |
CN101625659A (zh) * | 2009-07-03 | 2010-01-13 | 无敌科技(西安)有限公司 | 嵌入式系统实时监控内存的方法 |
CN102866951A (zh) * | 2012-09-21 | 2013-01-09 | 武汉烽火网络有限责任公司 | 嵌入式系统内存越界错误快速定位方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0720093B1 (en) * | 1994-12-28 | 2001-11-14 | Kabushiki Kaisha Toshiba | Microprocessor and debug system |
CN101763292B (zh) * | 2010-01-18 | 2012-07-04 | 龙芯中科技术有限公司 | 基于地址窗口的处理器推测访问过滤装置及其过滤方法 |
-
2016
- 2016-06-28 CN CN201610493358.1A patent/CN106126360B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885275A (zh) * | 2005-06-20 | 2006-12-27 | 中兴通讯股份有限公司 | 一种嵌入式系统及其实时内存监控处理方法 |
US20090089547A1 (en) * | 2007-09-28 | 2009-04-02 | Moyer William C | System and method for monitoring debug events |
CN101625659A (zh) * | 2009-07-03 | 2010-01-13 | 无敌科技(西安)有限公司 | 嵌入式系统实时监控内存的方法 |
CN102866951A (zh) * | 2012-09-21 | 2013-01-09 | 武汉烽火网络有限责任公司 | 嵌入式系统内存越界错误快速定位方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106126360A (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038112B (zh) | 应用界面的调试方法及装置 | |
CN112052008B (zh) | 代码检查方法、装置、计算机设备及计算机可读存储介质 | |
US20150185815A1 (en) | Apparatus and Method for Passing Event Handling Control from a Primary Processor to a Secondary Processor During Sleep Mode | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
CN108595218B (zh) | 一种加载系统动态库的方法和装置 | |
KR102640072B1 (ko) | 화면 표시의 제어 방법 및 전자기기 | |
KR20160037237A (ko) | 단말 장치상에서의 작업을 관리하는 방법, 및 단말 장치 | |
CN110046497B (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
CN108170361B (zh) | 一种应用运行状态控制方法及移动终端 | |
TW201411550A (zh) | 執行對於圖像硬體之排程操作技術 | |
US20200150860A1 (en) | Mobile terminal and control method therefor, and readable storage medium | |
CN107885635B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN108804915B (zh) | 病毒程序清理方法、存储设备及电子终端 | |
CN108681427A (zh) | 一种访问权限控制的方法及终端设备 | |
WO2019071594A1 (zh) | 一种显示处理方法及电子设备 | |
CN107025173B (zh) | 一种函数执行时间的测试方法及装置 | |
CN110471870B (zh) | 多系统运行的方法、装置、电子设备及存储介质 | |
CN106126360B (zh) | 地址空洞屏蔽方法及装置 | |
CN112363950A (zh) | 应用程序的调试方法及装置 | |
CN106407800A (zh) | 一种hook的方法及终端设备 | |
CN107015866B (zh) | 一种数据处理方法及装置 | |
CN110765085A (zh) | 日志信息写入方法、系统、存储介质及移动终端 | |
CN107818036B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
KR20140105354A (ko) | 터치 감응 유저 인터페이스를 포함하는 전자장치 | |
CN106933576A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 266555 Qingdao economic and Technological Development Zone, Shandong, Hong Kong Road, No. 218 Applicant after: Hisense Visual Technology Co., Ltd. Address before: 266100 Zhuzhou Road, Laoshan District, Shandong, No. 151, No. Applicant before: QINGDAO HISENSE ELECTRONICS Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |