一种调试嵌入式系统多中断的方法和装置制造方法及图纸

技术编号:15791751 阅读:116 留言:0更新日期:2017-07-09 21:56
本发明专利技术属于嵌入式软件领域,提供了一种调试嵌入式系统多中断的方法和装置,以便快速、准确地定位出多中断交错产生情况下发生异常的根本原因。该方法包括:为包括N个元素的环形结构数组分配内存;按照一个元素写入一个系统中断的中断运行状态信息的方式,向环形结构数组循环写入系统中断的中断运行状态信息;当有输出要求时,输出环形结构数组中写入的中断运行状态信息。本发明专利技术提供的技术方案一方面既避免了中断数据较多时缓存不足导致数据溢出的问题,又可提供最近的有利于快速、有效地复现出异常的流水;另一方面,输出中断运行状态信息时不会打乱系统原本的中断发生次序,不会对系统原本的中断产生影响,输出中断运行状态信息的通道可控可选。

【技术实现步骤摘要】
一种调试嵌入式系统多中断的方法和装置
本专利技术属于嵌入式软件领域,尤其涉及一种调试嵌入式系统多中断的方法和装置。
技术介绍
在嵌入式系统软件的运行中,经常出现多个中断交错产生即同时、嵌套或串行发生,并因此发生异常的情况,因而需要跟踪定位多中断情况下发生异常的根本原因并加以解决。现有的一种调试多中断的方法是在中断服务程序中将当前中断的断点信息采集后,立即从某个可输出模块输出。现有的调试方法存在的问题包括:1)若输出过程采用中断方式来进行,则使系统中断增多,也打乱了系统原本的中断发生次序,若输出过程采用非中断方式来进行,则加大了对应中断服务程序的执行时间,会引起中断响应不及时的其它系统问题;3)数据量往往非常巨大,查找数据非常麻烦和困难;4)被聚焦调试的模块无法被用来进行调试输出,例如,通讯端口自身中断的调试无法采用本端口来即时输出调试信息,屏幕自身中断的调试无法采用屏幕来即时输出,打印机自身中断的调试无法采用打印机来即时输出。综上,上述现有的调试多中断的方法会对系统本身的中断造成不良影响,常常难以跟踪定位出发生异常的原因。
技术实现思路
本专利技术的目的在于提供一种调试嵌入式系统多中断的方法和装置,以避免对嵌入式系统本身的中断造成不良影响,并提高调试的效率。本专利技术第一方面提供一种调试嵌入式系统多中断的方法,所述方法包括:为包括N个元素的环形结构数组分配内存,所述N为大于2的整数;按照一个元素写入一个系统中断的中断运行状态信息的方式,向所述环形结构数组循环写入系统中断的中断运行状态信息;当有输出要求时,输出所述环形结构数组中写入的中断运行状态信息。本专利技术第二方面提供一种调试嵌入式系统多中断的装置,所述装置包括:内存分配模块,用于为包括N个元素的环形结构数组分配内存,所述N为大于2的整数;写入模块,用于按照一个元素写入一个系统中断的中断运行状态信息的方式,向所述环形结构数组循环写入系统中断的中断运行状态信息;输出模块,用于当有输出要求时,输出所述环形结构数组中写入的中断运行状态信息。从上述本专利技术技术方案可知,由于保存中断运行状态信息的数组是环形结构,因此,一方面,既避免了中断数据较多时缓存不足导致数据溢出的问题,又可提供最近的一段中断发生情况的流水,这些流水有利于快速、有效地定位出异常;另一方面,输出中断运行状态信息时不会打乱系统原本的中断发生次序,不会对系统原本的中断产生影响,而且,输出中断运行状态信息的通道可控可选。附图说明图1是本专利技术实施例一提供的调试嵌入式系统多中断的方法的实现流程示意图;图2是本专利技术实施例二提供的调试嵌入式系统多中断的装置的结构示意图;图3是本专利技术实施例三提供的调试嵌入式系统多中断的装置的结构示意图;图4是本专利技术实施例四提供的调试嵌入式系统多中断的装置的结构示意图;图5-a是本专利技术实施例五提供的调试嵌入式系统多中断的装置的结构示意图;图5-b是本专利技术实施例六提供的调试嵌入式系统多中断的装置的结构示意图;图5-c是本专利技术实施例七提供的调试嵌入式系统多中断的装置的结构示意图;图6-a是本专利技术实施例八提供的调试嵌入式系统多中断的装置的结构示意图;图6-b是本专利技术实施例九提供的调试嵌入式系统多中断的装置的结构示意图;图6-c是本专利技术实施例十提供的调试嵌入式系统多中断的装置的结构示意图。具体实施方式为了使本专利技术的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术实施例提供一种调试嵌入式系统多中断的方法,所述方法包括:为包括N个元素的环形结构数组分配内存,所述N为大于2的整数;按照一个元素写入一个系统中断的中断运行状态信息的方式,向所述环形结构数组循环写入系统中断的中断运行状态信息;当有输出要求时,输出所述环形结构数组中写入的中断运行状态信息。本专利技术实施例还提供相应的一种调试嵌入式系统多中断的装置。以下分别进行详细说明。请参阅附图1,是本专利技术实施例一提供的调试嵌入式系统多中断的方法的实现流程示意图,主要包括以下步骤S101至步骤S103,详细说明如下:S101,为包括N个元素的环形结构数组分配内存,其中,N为大于2的整数。在本专利技术实施例中,环形结构数组是具有环形结构且包含N个元素的数组,其主要包含中断发生前的运行模式、被中断的地址、当前所服务的中断号、尚未处理中断的标识寄存器、当前系统计时滴答数和关键寄存器列表等字段;可在系统内存空间中为环形结构数组分配适当的内存。需要说明的是,上述环形结构数组的元素个数N可根据系统内存容量和中断发生的频率等实际情况来灵活确定,典型地,N可取值为100、200等,环形结构数组的元素包含的字段可根据所采用的具体CPU和所发生异常的具体情况进行调整,并不限于所述这些字段;原则上,凡是根据当前实际情况认为有利于问题准确定位的信息,均可作为字段包含至环形结构数组的元素。还需说明的是,为包括N个元素的环形结构数组分配内存这一操作只需执行一次,可在编译期间静态分配或在系统初始化时动态分配,分配时并将该环形结构数组及其读出序号、写入序号清零;读出序号或写入序号与该环形结构数组的元素一一对应。S102,按照一个元素写入一个系统中断的中断运行状态信息的方式,向环形结构数组循环写入系统中断的中断运行状态信息。作为本专利技术一个实施例,按照一个元素写入一个系统中断的中断运行状态信息的方式,向所述环形结构数组循环写入系统中断的中断运行状态信息可通过如下步骤S1021至S1024实现:S1021,在中断服务子程序的入口处调用数据采集函数,以执行步骤S1022至S1024的操作。需要说明的是,在本专利技术实施例中,若尚不确定某一个中断是否会引起问题,或不确定是哪几个中断交错而引起问题,可在每一处中断服务子程序的入口处均调用数据数据采集函数,以避免遗漏关键信息而导致后续无法定位问题根本原因。若可以十分确定某个中断不会引起问题,则在该中断对应的中断服务子程序的入口处也可以不调用数据采集函数。S1022,关闭系统总中断。一般地,在中断服务子程序的入口处,CPU会自动关闭中断,如此,数据采集函数不用进行原子化操作。然而,若在中断服务子程序的入口处,CPU并不自动关闭中断,则应关闭系统总中断,以避免中断嵌套时写入该环形结构数组的动作被另一个中断所中止和/或打乱,具体方式是可以在数据数据采集函数中进行原子化处理,即,在数据采集函数的最开始处,执行关闭系统总中断。S1023,执行数据采集函数的数据采集功能,将系统当前中断的中断运行状态信息写入环形结构数组对应于当前写入序号的元素中。在本专利技术实施例中,中断运行状态信息来源于CPU的相关寄存器或者是相关系统全局变量,实际上是环形结构数组包含的字段的具体内容,即,中断发生前的运行模式、被中断的地址、当前所服务的中断号、尚未处理中断的标识寄存器、当前系统计时滴答数和关键寄存器列表等具体信息。如前所述,环形结构数组的一个元素对应于一个写入序号。在本专利技术实施例中,执行数据采集函数的数据采集功能时,是将系统当前中断的中断运行状态信息写入环形结构数组对应于当前写入序号的元素中,在此之后,将当前写入序号的值增1,将值增1后的写入序号与N进行模运算,将模运算的结本文档来自技高网...
一种调试嵌入式系统多中断的方法和装置

【技术保护点】
一种调试嵌入式系统多中断的方法,其特征在于,所述方法包括:为包括N个元素的环形结构数组分配内存,所述N为大于2的整数;按照一个元素写入一个系统中断的中断运行状态信息的方式,向所述环形结构数组循环写入系统中断的中断运行状态信息;当有输出要求时,输出所述环形结构数组中写入的中断运行状态信息。

【技术特征摘要】
1.一种调试嵌入式系统多中断的方法,其特征在于,所述方法包括:为包括N个元素的环形结构数组分配内存,所述N为大于2的整数;按照一个元素写入一个系统中断的中断运行状态信息的方式,向所述环形结构数组循环写入系统中断的中断运行状态信息;当有输出要求时,输出所述环形结构数组中写入的中断运行状态信息。2.如权利要求1所述的方法,其特征在于,所述按照一个元素写入一个系统中断的中断运行状态信息的方式,向所述环形结构数组循环写入系统中断的中断运行状态信息,包括:在中断服务子程序的入口处调用数据采集函数,以执行下述操作:关闭系统总中断;执行所述数据采集函数的数据采集功能,将系统当前中断的中断运行状态信息写入所述环形结构数组对应于当前写入序号的元素中;开启所述系统总中断。3.如权利要求2所述的方法,其特征在于,所述将系统当前中断的中断运行状态信息写入所述环形结构数组对应于当前写入序号的元素中之后,所述方法还包括:将所述当前写入序号的值增1;将值增1后的写入序号与所述N进行模运算;将所述模运算后的结果重新赋值给所述写入序号。4.如权利要求1至3任意一项所述的方法,其特征在于,所述当有输出要求时,输出所述环形结构数组中写入的中断运行状态信息,包括:当有输出要求时,调用输出函数,以执行下述操作:关闭系统总中断;将所述环形结构数组对应于当前读出序号的元素中的内容输出至输出通道;判断所述环形结构数组的所有元素中的内容是否读完;若所述环形结构数组的所有元素中的内容已经读完,则开启所述系统总中断,否则继续输出所述环形结构数组元素中的内容。5.如权利要求4所述的方法,其特征在于,所述判断所述环形结构数组的所有元素中的内容是否读完,包括:将所述环形结构数组对应于当前读出序号的元素中的内容输出至输出通道后,对所述当前读出序号的值执行增1操作;将值执行增1操作后的读出序号的值与所述N进行模运算并赋值给所述读出序号;若已读取元素的总个数达到N,则确定所述环形结构数组的所有元素中的内容已经读完。6.一种调试嵌入式系统多中断的装置,其特征在于,所述装置包括:内存分配模块,...

【专利技术属性】
技术研发人员:董时舫赵谊科
申请(专利权)人:百富计算机技术深圳有限公司
类型:发明
国别省市:广东,44

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

1