一种嵌入式系统及其实时内存监控处理方法技术方案

技术编号:2846841 阅读:182 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种实时监控内存的嵌入式系统及其实时内存监控、捕捉内存越界错误的处理方法,其中,该实时内存监控的方法,包括步骤:启动一实时内存监控代理任务模块,并进行一系列的内存监控初始化;接收后台用户指令,根据具体条件设置内存监控点,并将所述用户命令传送给所述实时内存监控代理任务模块;以及在满足触发条件时,进行调试异常中断处理。

【技术实现步骤摘要】

本专利技术涉及一种实时监控内存的嵌入式系统及其实时内存监控、捕捉内存越界错误的处理方法,尤其涉及一种嵌入式系统工程版本中的实时内存监控方法。
技术介绍
嵌入式系统,即一种嵌入到对象体系中的专用计算机系统,在如今已经被广泛使用和开发,“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。嵌入式软件通常在嵌入式操作系统中运行,而嵌入式系统的硬件平台通常采用专用的处理芯片。因此,嵌入式系统的开发、调试都需要有使用专用的硬件或者软件工具支持,而且需要编译器生成专门的调试版本。而在开发完成后的用户所使用的软件的工程版本中,则无法使用这些硬件或者软件的开发、调试工具。嵌入式系统需要能够长时间可靠地工作,但是其中的软件中的错误是不可避免的,尤其是软件中由于程序需要占用一定的内存空间而引起的内存操作的错误,例如,全局变量的越界访问、非法越界读写内存等。这些错误轻则导致程序运行的流程出错,严重的甚至导致系统瘫痪。在调试时如果不能发现所有的问题,在工程版本的运行过程中就有可能发生故障。而在这些内存非法操作所导致的故障发生后,又不能及时进行相应的分析和调试,则很难捕捉到故障类型及其定位,给嵌入式系统的稳定性提高带来了困难。如今,在一些嵌入式操作系统中,利用调试寄存器提供了硬件断点的功能,能够在指定内存被修改时中断系统的运行(挂起),等待用户分析。但这种功能有一定局限性,例如,正常情况下某全局变量的值会在一定范围内变化,一旦被改写成非法值系统就会出错,而使用硬件断点无法捕捉到这种错误。另外,在工程版本中也不允许中断任何任务,只能通过捕获现场信息、然后进行事后分析的方法解决问题,这种情况下使用硬件断点也不能适用。
技术实现思路
针对上述问题,本专利技术要解决的技术问题就是为了克服现有的嵌入式系统上程版本中无法进行实时监控指定内存、捕捉并分析非法越界读写内存的软件错误的缺点。本专利技术提供了一种实时内存监控处理的嵌入式系统,包括一具有多个调试寄存器的嵌入式系统处理器;一处理器中断控制模块,用于控制所述处理器,实现对所监控的内存进行读写与指令的执行,其特征在于通过所述处理器中断控制模块在所述处理器的调试寄存器中设置线性地址及相关的控制位,使得所述处理器能够在满足一触发条件时自动触发调试异常中断;及所述处理器中断控制模块在满足一设置条件时对所述调试寄存器中的信息进行分析并记录现场信息。本专利技术进一步提供了一种嵌入式系统实时内存监控处理方法,包括步骤步骤1,利用嵌入式系统处理器提供的调试寄存器及其中断控制程序模块对所监控的内存进行读写与指令的执行;步骤2,利用在所述调试寄存器中设置线性地址和相关的控制位,使所述处理器在满足一触发条件时自动触发调试异常;步骤3,所述中断控制程序模块在满足一设置条件时接管处理器的调试异常并记录现场信息。本专利技术利用嵌入式系统处理器提供的调试寄存器及其相应机制实现监控内存的读写与指令的执行。通过利用在处理其的调试寄存器中设置线性地址(内存管理模式为分页式管理时映射出的地址)并设置调试控制寄存器中相关的控制位,处理器会在触发条件满足时自动触发调试异常处理,实现了对现场的分析、信息记录。采用本专利技术所述方法,与现有技术相比,由于采取了在嵌入式系统中实时监控内存,记录现场信息,供事后分析的技术措施,可以有效的检测、记录嵌入式软件运行中的故障信息。同时本专利技术丰富了处理器提供的硬件断点功能,通过定制回调函数可以实时监控指定内存的内存值是否在一个正常的取值范围内变化、监控修改内存的操作发生在非指定的任务中等各种情况。利用本专利技术中指令执行监控的方法,可以在工程版本中实时监控程序中指定指令的运行,例如为了分析嵌入式系统内存泄漏的问题,可以通过定制回调函数,在程序运行过程中对操作系统的接口malloc进行监控,记录malloc接口被调用时申请内存块的大小、函数调用关系等,确定产生内存泄漏的错误程序,同时可以获得嵌入式系统完整的内存分布图,包括内存块大小、申请内存的任务、申请时间、申请内存在源程序中的具体位置等信息。在嵌入式系统中故障发生后,故障现场的记录信息给故障的分析定位提供了有力的支持。本专利技术提供的方法,并不局限于某一产品,是一个通用的嵌入式系统实时内存监控的方法,可以大大的提高嵌入式系统,尤其是嵌入式系统工程版本的可调试性,改善程序的质量。附图说明图1所示为本专利技术嵌入式系统内存监控处理功能模块图;图2所示为Intel80×86调试寄存器说明;图3所示为本专利技术实时内存监控代理任务设置内存监控点处理流程;图4所示为通用Intel80×86中断INT1硬件断点处理流程图;图5所示为以Intel80×86为例的本专利技术实时内存监控中断处理子流程;图6所示为以Intel80×86为例的本专利技术运行栈内存分布。具体实施例方式下面结合附图,以CPU类型为Intel80×86的嵌入式处理芯片为例,按照附图的顺序对技术方案的实施作进一步的详细描述,其它CPU类型的处理方法类似。图1是本专利技术嵌入式系统3的内存监控处理功能模块图,其主要包括嵌入式系统处理器1和处理器中断控制模块2,并且处理器中断控制模块2还主要包含三个模块,以下分别说明。前台调试异常中断处理模块11在获得中断现场信息后(步骤S501),分析中断现场,并将分析信息记录到缓存区(步骤S502)。后台处理模块13在调试机上启动后台程序(步骤S507),维护前后台的连接(步骤S508);接收后台用户命令并传送给前台内存监控代理任务模块11(步骤S509),以及接收前台内存监控代理任务模块11返回的现场分析信息,然后将其显示或保存(步骤S510)。后台处理模块13可以随时启动或关闭。前台实时内存监控代理任务模块12内存监控初始化工作(步骤S503);维护与调试机的连接(步骤S504);然后根据后台处理模块13发来的用户命令设置内存监控点(步骤S505);定时扫描缓存区,在前后台通讯畅通的情况下将缓存区中记录的中断现场信息发送给后台,然后清空缓存区(步骤S506)。初始化工作包括初始化用于调试中断触发后记录现场信息的缓存区,初始化前后台通讯,初始化调试异常处理程序、替换操作系统默认的调试异常处理程序等。前台调试异常中断处理模块11是本专利技术的重点部分,下面以CPU类型为Intel 80×86的嵌入式处理芯片为例,重点描述前台调试异常中断处理模块。图2介绍了CPU类型为80×86的处理器的调试寄存器DRn及各标志位的含义。Intel 80×86中有关调试的中断有两个,中断向量号为1和3,其中中断INT1用于处理单步调试和硬件中断,中断INT3用于处理软件中断。使用INT1和INT3是实现调试器的最根本技术,调试器使用中断INT1和INT3实现调试的方法简述如下INT1硬件断点利用处理器本身的调试支持,DR0-DR3四个调试寄存器保存四个断点的线性地址,DR7寄存器保存的是每个断点的条件。设置硬件断点时,在调试寄存器位DR0-DR3中设置触发指令的线形地址并设置调试控制寄存器(DR7)中相关的控制位,当以下四个条件中的任意一个成立之后,处理器会产生INT1调试异常,并且将控制权转交给调试器,包括指令执行、指定内存的内容被修改、指定的内存被读/写、I/O端口上有操作。INT3软件断点调试器本文档来自技高网
...

【技术保护点】
一种实时监控内存的嵌入式系统,包括,一具有调试寄存器的嵌入式系统处理器;一处理器中断控制模块,用于控制所述处理器,实现对所监控的内存进行读写与指令的执行,其特征在于:通过所述处理器中断控制模块在所述处理器的调试寄存器 中设置线性地址及相关的控制位,使得所述处理器能够在满足一触发条件时自动触发调试异常中断;及所述处理器中断控制模块在满足一设置条件时对所述调试寄存器中的信息进行分析并记录现场信息。

【技术特征摘要】
1.一种实时监控内存的嵌入式系统,包括,一具有调试寄存器的嵌入式系统处理器;一处理器中断控制模块,用于控制所述处理器,实现对所监控的内存进行读写与指令的执行,其特征在于通过所述处理器中断控制模块在所述处理器的调试寄存器中设置线性地址及相关的控制位,使得所述处理器能够在满足一触发条件时自动触发调试异常中断;及所述处理器中断控制模块在满足一设置条件时对所述调试寄存器中的信息进行分析并记录现场信息。2.如权利要求1所述的嵌入式系统,其特征在于,所述处理器中断控制模块还包括一后台处理模块,用于接收后台用户命令并将其传送给前台;一前台实时内存监控代理任务模块,连接至所述后台处理模块,用于接收从所述后台处理模块传送来的命令,并根据所述命令设置内存监控点;及一前台调试异常中断处理模块,连接至所述前台实时内存监控代理任务模块,用于在满足所述触发条件时分析所述内存监控点的中断现场并记录现场信息到一缓存区中;所述前台实时内存监控代理任务模块定时扫描所述缓存区,并将所述缓存区中记录的现场信息发送给后台,然后清空所述缓存区。3.如权利要求2所述的嵌入式系统,其特征在于所述前台实时内存监控代理任务模块还用于初始化缓存区、初始化前后台之间的通讯、初始化调试异常处理程序及替换所述系统默认的调试异常处理程序。4.如权利要求1所述的嵌入式系统,其特征在于,所述多个调试寄存器还包括调试断点寄存器,用于保存所述中断的各断点的线性地址;调试控制寄存器,用于保存所述触发条件;调试状态寄存器,用于记录中断产生时的调试状态。所述调试断点寄存器中还设置所述调试控制寄存器中相关的控制位;及所述触发条件包括指令执行时中断、制定内存的内容被修改时中断、读/写内存时中断和I/O操作时中断其中之一;所述前台实时内存监控代理任务模块还根据所述设置条件修改所述调试寄存器及调试控制寄存器中相应的控制位5.如权利要求2所述的嵌入式系统,其特征在于所述前台调试异常中断处理模块在满足所述触发条件后,首先保存当前系统运行的上、下文,然后根据所述调试状态寄存器判断本次处理是否为硬件寄存器触发的中断;如果不是,则进行单步调试异常处理;如果是,则继续执行所述硬件寄存器触发的中断。6.如权利要求...

【专利技术属性】
技术研发人员:吴涛
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1