一种嵌入式系统中的异常处理方法及装置的制作方法

文档序号:6582456阅读:256来源:国知局
专利名称:一种嵌入式系统中的异常处理方法及装置的制作方法
技术领域
本发明涉及软件容错技术领域,尤其涉及一种嵌入式系统中的异常处理方法及装置。
背景技术
随着后PC时代的到来,嵌入式系统已广泛应用于通讯、航空、国防和工业控制等 可靠性要求较高的关键技术领域中,其复杂度及功能在日益增强。同时,为了高效使用资 源,多应用多任务并行的软件设计方法也被普遍采用。这些变化不可避免地导致了系统中 各类错误和异常的增多,当异常出现时,如果未进行有效地处理,很可能导致应用程序终 止,系统崩溃,甚至引发灾难性事故,这是人们所不愿看到的。异常处理作为嵌入式系统容错的常用机制,对保证嵌入式系统的可靠性具有十分 重要的作用,但传统的异常处理机制已无法适应目前嵌入式系统的发展需要。嵌入式系统中传统的异常处理采用类似中断响应的方式,如图1所示,当异常发 生时,处理器会对异常现场进行简单保存,并通过查询异常向量表,跳转到对应的异常处理 函数中进行处理。这种异常处理机制与处理器硬件架构紧密相关,需要使用大量的汇编代 码编写异常处理程序,对寄存器进行操作。同时,对每一种需要捕获的异常,都要根据处理 器架构对异常处理程序进行相应的修改,这导致异常处理程序的移植性和健壮性比较差。缺少异常处理会降低系统的可靠性,而有缺陷或无效的异常处理也会导致严重的 系统故障。随着嵌入式系统功能的不断增强,系统中往往运行着多个应用,每个应用又由若 干个任务组成,任务是可以被操作系统调度并由处理器执行的能够竞争系统资源的最小单 位,它可以独立运行以完成某一相对独立的功能。传统的异常处理机制只针对任务进行处 理,如果异常处理程序本身有缺陷或无法处理出现的异常,系统将无法识别并予以解决,单 个任务的异常很可能会扩散到所属的应用程序,进而影响整个系统的稳定运行。中国专利申请公开说明书200610104447公开了一种计算机应用程序的监控及异 常处理方法,提供了一种异常监控及处理方法,不仅能够对应用程序的工作状态进行监控, 还可对程序内各个模块进行监控,并能对程序异常进行处理。中国专利申请公开说明书 CN03157874公开了一种多任务系统的异常监控装置及其方法,提供了一种多任务系统的异 常监控装置及方法,将异常监控的范围从单任务扩展到多任务,使得多任务系统中异常监 控和自动复位到正常运行状态的功能得到实现。上述发明专利对异常监控的范围进行了细 化及扩展,但异常处理策略单一,并没有解决异常处理过程中的二次异常,仍有可能异常扩 散。二次异常是指异常处理程序在执行过程中自身发生异常。美国专利申请公开说明书US2007022321公开的美国发明专利“Exception analysis methods and systems”,针对嵌入式系统提出了 一种异常分析方法,对系统 运行时出现的异常进行分类,但并未给出异常处理的策略。美国专利申请公开说明书 US2005015579公开的美国发明专利“Handlingexc印tions”,公开了一种嵌入式异常处理 装置,该装置包括异常记录器、智能恢复代理和异常后分析工具。其中,异常记录器用于记录和异常相关的信息,智能恢复代理用于检测异常并决定采用适当的处理方式,异常后分 析工具则负责识别出现异常的原因。然而,智能恢复代理无法判别异常处理方法本身的缺 陷,无法解决异常处理方法无效和二次异常的问题。综上所述,现有的异常处理方法已无法适应当前嵌入式系统的变化,必须引入新 的异常处理机制,保证系统可靠稳定运行。

发明内容
本发明要解决的技术问题是提供一种嵌入式系统中的异常处理方法及装置,解决 异常处理程序可移植性差,对于不同处理器架构需要进行相应修改的问题。为解决上述技术问题,本发明的一种嵌入式系统中的异常处理方法,包括运行应用程序时,为所运行的应用程序创建异常回调链表;应用程序向异常回调链表注册异常处理函数及异常处理函数与异常信息的对应 关系;捕获到异常后,根据所捕获异常的异常信息,从异常处理函数与异常信息的对应 关系中,查询与所捕获异常匹配的异常处理函数,在查询到匹配的异常处理函数后,调用并 执行匹配的异常处理函数,进行异常处理。进一步地,为所运行的应用程序创建异常回调链表为创建一级或多级异常回调链 表,若创建多级异常回调链表,则应用程序向每一级的异常回调链表分别注册异常处理函 数及异常处理函数与异常信息的对应关系;查询与所捕获异常匹配的异常处理函数的过程 为逐级从异常处理函数与异常信息的对应关系中,查询与捕获的异常匹配的异常处理函 数。进一步地,创建多级异常回调链表时,异常回调链表包括任务级异常回调链表和 应用级异常回调链表,异常处理函数包括任务级异常处理函数和应用级异常处理函数;应用程序向每一级的异常回调链表分别注册异常处理函数及异常处理函数与异 常信息的对应关系的过程包括向任务级异常回调链表注册任务级异常处理函数及任务级 异常处理函数与异常信息的对应关系,向应用级异常回调链表注册应用级异常处理函数及 应用级异常处理函数与异常信息的对应关系。进一步地,逐级从异常处理函数与异常信息的对应关系中,查询与捕获的异常匹 配的异常处理函数的过程包括根据所捕获异常的异常信息,从任务级异常处理函数与异常信息的对应关系中, 查询与该异常匹配的任务级异常处理函数;若未查询出匹配的任务级异常处理函数或查询出的任务级异常处理函数未排除 所捕获的异常,则根据所捕获异常的异常信息,从应用级异常处理函数与异常信息的对应 关系中,查询与该异常匹配的应用级异常处理函数。进一步地,系统中还配置有系统级异常处理策略,若在应用级异常处理函数与异 常信息的对应关系中,未查询到与异常匹配的应用级异常处理函数或查询出的应用级异常 处理函数未排除所捕获的异常,则执行所配置的系统级异常处理策略,进行异常处理。进一步地,创建多级异常回调链表时,调用并执行匹配的异常处理函数,进行异常 处理的过程中,若发生二次异常,则从发生异常的异常处理函数所属的异常回调链表中,查询是否还存在与捕获的异常匹配的异常处理函数,若不存在,则从上级的异常回调链表中 查询是否存在与该异常匹配的异常处理函数,若从所述发生异常的异常处理函数所属的异 常回调链表或所述上级的异常回调链表中查询到与捕获的异常匹配的异常处理函数,则调 用并执行查询到的与捕获的异常匹配的异常处理函数。进一步地,若发生异常的异常处理函数为任务级异常处理函数,则从该发生异常 的任务级异常处理函数所属的任务级异常回调链表中,查询是否还存在与所捕获异常匹配 的任务级异常处理函数,若不存在,则从应用级异常回调链表中查询是否存在与捕获的异 常匹配的应用级异常处理函数,若不存在,则执行系统级异常处理策略。进一步地,一种嵌入式系统中的异常处理装置,包括异常控制模块、异常捕获模 块和异常处理模块,其中异常控制模块,用于在运行应用程序时,为所运行的应用程序创建异常回调链 表;异常捕获模块,用于捕获异常,将所捕获异常的异常信息发送给异常处理模块;异常处理模块,用于提供注册函数,该注册函数用于应用程序向异常回调链表注 册异常处理函数及异常处理函数与异常信息的对应关系;该异常处理模块,还用于在接收到异常信息后,从异常处理函数与异常信息的对 应关系中,查询与该异常匹配的异常处理函数,在查询到匹配的异常处理函数后,调用并执 行匹配的异常处理函数,进行异常处理。进一步地,异常控制模块为所运行的应用程序创建一级或多级异常回调链表;若创建多级异常回调链表,则应用程序向每一级的异常回调链表分别注册异常处 理函数及异常处理函数与异常信息的对应关系;异常处理模块查询与该异常匹配的异常处理函数的过程为逐级从异常处理函数 与异常信息的对应关系中,查询与捕获的异常匹配的异常处理函数。进一步地,异常控制模块创建多级异常回调链表时,异常处理模块调用并执行匹 配的异常处理函数,进行异常处理的过程中,若发生二次异常,则异常处理模块还用于从发 生异常的异常处理函数所属的异常回调链表中,查询是否还存在与捕获的异常匹配的异常 处理函数,若不存在,则从上级的异常回调链表中查询是否存在与该异常匹配的异常处理 函数,若从所述发生异常的异常处理函数所属的异常回调链表或所述上级的异常回调链表 中查询到与捕获的异常匹配的异常处理函数,则调用并执行查询到的与捕获的异常匹配的 异常处理函数。综上所述,本发明采用异常回调链表结构,避免了异常处理函数对底层硬件的直 接操作,提高了软件的可移植性和健壮性;采用多级异常处理方法不仅可以处理任务级的 异常,还可以将异常处理手段延伸至应用级和系统级,大大扩展了异常处理的范围,防止异 常的扩散,为系统处理各类异常提供多层面的支持,本发明满足了当前嵌入式系统对异常 处理的需求,具有扩展性好、系统运行可靠和应用范围广等特点,并且本发明不局限于任何 具体的硬件平台架构和操作系统类型,具有较广泛的通用性。


图1为传统嵌入式系统异常处理机制的模型图2为本发明方法的流程图;图3为本发明装置的架构图;图4为本发明在Linux系统中实现的流程图。
具体实施例方式本发明为了方便应用开发,提供了一种开放式的多级处理方法,采用异常回调链 表挂接异常处理函数,由于采用链表结构,因此可以支持程序中多层异常处理的嵌套。开发 者可以根据应用情况在不同级别的异常回调链表中挂接自定义的异常处理函数,当出现异 常时,挂接的异常处理函数会被调用,逐级完成异常处理功能,通过多级异常处理机制,满 足现代嵌入式系统对异常处理的需求。本实施例中,为应用开发提供了两个层次的异常回调链表任务级异常回调链表 和应用级异常回调链表。运行任务时,为任务分配一个任务级异常回调链表,任务的异常处理函数挂接在 其链表上,当任务出现异常时,从该任务的异常回调链表尾部开始搜索与所发生异常相匹 配的异常处理函数,并执行搜索到的异常处理函数。退出任务时,注销任务级异常回调链表 挂接的任务级异常处理函数,销毁该链表,为运行的新任务重新分配任务级异常回调链表。应用级异常回调链表与应用程序对应,在运行应用程序时分配,挂接应用级异常 处理函数,应用级异常处理函数对整个应用程序有效,当任务级异常处理函数无法处理异 常时,从应用级异常回调链表尾部开始搜索与所发生异常相匹配的应用级异常处理函数, 并执行搜索到的处理函数,退出应用程序时,注销应用级异常回调链表挂接的应用级异常 处理函数,销毁链表。下面结合附图对本发明的具体实施方式
进行说明。图2为本发明嵌入式系统中的异常处理方法,包括201 在异常处理模块中预设系统级异常处理策略,运行应用程序时,加载异常控 制模块、异常捕获模块和异常处理模块,完成初始化过程;系统级异常处理策略可以为重启系统或关闭系统等。202:异常控制模块为所运行的应用程序创建任务级异常回调链表和应用级异常 回调链表;203:应用程序通过调用异常处理模块的注册函数向任务级异常回调链表注册任 务级异常处理函数及任务级异常处理函数与异常信息的对应关系,向应用级异常回调链表 注册应用级异常处理函数及应用级异常处理函数与异常信息的对应关系;所注册的任务级异常处理函数以节点形式依次在任务级异常回调链表尾部挂接; 所注册的应用级异常处理函数以节点形式依次在应用级异常回调链表尾部挂接。异常处理函数为编写在应用程序中,对应用程序运行中可能出现的问题进行异常 处理的函数,一个任务可以对应一个或多个任务级异常处理函数,任务级异常处理函数只 对本任务有效,一个应用可以对应一个或多个应用级异常处理函数,应用级异常处理函数 对整个应用进程有效。204:退出任务时,应用程序通过调用异常处理模块的注销函数,注销在任务级异 常回调链表中注册的任务级异常处理函数,操作系统销毁该链表,异常控制模块为运行的新任务重新分配任务级异常回调链表,应用程序在任务级异常回调链表中为新任务注册异 常处理函数; 205 异常捕获模块捕捉系统和应用程序的运行异常,捕捉到异常时,保存异常信 息,将异常信息发送给异常处理模块; 异常捕获模块可以直接调用或向异常处理模块发信号。对于不同的CPU体系,具体的异常编号和种类有所不同,但主要有以下几类(I)CPU运行异常,如浮点错误、除零错误、越权保护错误、非法指令和未定义指令寸。(2)内存管理异常,如数据写异常、页面异常、数据读异常、取指异常、未对齐异常 和缓冲区异常。206:异常处理模块接收到异常信息后,调用过滤函数遍历任务级异常处理函数与 异常信息的对应关系,根据接收到的异常信息选择匹配的任务级异常处理函数,并调用并 执行选择的任务级异常处理函数进行异常处理;207:异常处理模块查询操作系统维护的异常表,判断异常是否排除,若未排除,则 执行步骤208 ;否则,执行步骤215 ;208 异常处理模块向异常控制模块发送任务级未排除异常通知消息,并将异常信 息发送给异常控制模块;209 异常控制模块根据异常信息判断是否对该异常进行升级处理,如果是,则执 行步骤210 ;否则,丢弃任务级未排除异常通知消息;若未查询到任务级异常处理函数,则异常处理模块同样请求异常控制模块判断是 否对该异常进行升级处理。异常控制模块可根据有无配置应用级异常回调链表、发生异常的任务的重要性或 系统负载状态判断是否对异常进行升级处理,如果任务的重要性较低,其发生异常不会对 系统运行产生影响或系统负载较大,则可以选择丢弃通知消息,不对异常进行升级处理。210:异常控制模块通知异常处理模块将异常处理范围扩展到应用级,异常处理模 块调用过滤函数遍历应用级异常处理函数与异常信息的对应关系,根据接收到的异常信息 选择匹配的应用级异常处理函数,并执行选择的应用级异常处理函数;211 异常处理模块查询异常表,判断异常是否排除,若未排除,则执行步骤212 ; 否则,执行步骤215;212 异常处理模块向异常控制模块发送应用级未排除异常通知消息,并将异常信 息发送给异常控制模块;213 异常控制模块根据异常信息判断是否对该异常进行升级处理,如果是,则执 行步骤214 ;否则,丢弃应用级未排除异常通知消息;214:异常控制模块通知异常处理模块将异常处理范围扩展到系统级,异常处理模 块执行系统级异常处理策略;215 退出应用程序时,通过注销函数注销应用级异常回调链表中注册的应用级异 常处理函数。需要说明的是,在各级异常处理函数执行中,若发生二次异常,异常捕获模块捕获 到二次异常后,向异常处理模块发送二次异常通知消息,异常处理模块遍历出现异常的异常处理函数所挂接的异常回调链表,查找是否存在匹配的异常处理函数,如果不存在,则向 异常控制模块转发二次异常通知消息,异常控制模块判断是否进行升级处理,如果是,则通 知异常处理模块将异常处理范围升级。例如,任务级异常处理函数在运行时出现异常,异常处理模块接收到异常捕获模 块的二次异常通知后,未查找到替代的任务级异常处理函数,转发二次异常通知消息,若异 常控制模块判定需要升级处理,则异常处理模块遍历应用级异常回调链表,查找匹配的应 用级异常处理函数。图3所示为本发明的嵌入式系统中的异常处理装置,包括异常控制模块、异常捕 获模块和异常处理模块,其中异常控制模块,用于在运行应用程序,加载异常控制模块、异常捕获模块和异常处 理模块,完成初始化过程后,为所运行的应用程序创建任务级异常回调链表和应用级异常 回调链表;在接收到任务级未排除异常通知消息后,根据异常信息判断是否对该异常进行 升级处理,如果是,则通知异常处理模块将异常处理范围扩展到应用级;否则,丢弃任务级 未排除异常通知消息;在接收到应用级未排除异常通知消息后,根据异常信息判断是否对 该异常进行升级处理,如果是,通知异常处理模块将异常处理范围扩展到系统级;否则,丢 弃应用级未排除异常通知消息。该模块控制着整个处理流程,保证了异常处理流程能够有序地进行;同时,异常控 制模块还可以调用运行监控等系统服务,进行错误信息的存储和告警操作。异常捕获模块,用于捕捉系统和应用程序的运行异常,捕捉到异常时,保存异常信 息,将异常信息发送给异常处理模块。异常处理模块,用于为应用程序提供注册函数,向任务级异常回调链表注册任务 级异常处理函数及任务级异常处理函数与异常信息的对应关系,向应用级异常回调链表注 册应用级异常处理函数及应用级异常处理函数与异常信息的对应关系;为应用程序提供注 销函数,退出任务时,应用程序通过调用注销函数,注销在任务级异常回调链表中注册的任 务级异常处理函数,退出应用程序时,应用程序通过注销函数注销应用级异常回调链表中 注册的应用级异常处理函数;还用于在接收到异常信息后,调用过滤函数遍历任务级异常处理函数与异常信息 的对应关系,根据接收到的异常信息选择匹配的任务级异常处理函数,并调用并执行选择 的任务级异常处理函数进行异常处理;查询操作系统维护的异常表,判断异常是否排除,若 未排除,则向异常控制模块发送任务级未排除异常通知消息,并将异常信息发送给异常控 制模块;否则,退出应用程序时,注销应用级异常处理函数;接收到将异常处理范围扩展到 应用级的通知后,调用过滤函数遍历应用级异常处理函数与异常信息的对应关系,根据接 收到的异常信息选择匹配的应用级异常处理函数,并执行选择的应用级异常处理函数;执 行应用级异常处理函数后,判断异常是否排除,若未排除,则向异常控制模块发送应用级未 排除异常通知消息,并将异常信息发送给异常控制模块;否则,在退出应用程序时,注销应 用级异常处理函数;在接收到将异常处理范围扩展到系统级的通知后,执行系统级异常处 理策略。异常处理模块同时也支持用户自定义的处理手段。应用示例下面以在Linux中实现本发明为例,对本发明的方法进行说明。为和标准Linux内核兼容,本示例基于标准的信号机制实现。图4所示为本发明在Linux操作系统中实现异常处理的方法,包括401 在需要使用异常处理功能的应用程序运行时,加载并初始化异常处理装置, 异常控制模块为应用程序构建任务级和应用级异常回调链表;402 应用程序通过调用注册函数向异常回调链表注册异常处理函数及异常信息 与异常处理函数的对应关系;应用程序通过调用USr_TrdEXCHdlReg()函数注册任务级异常处理函数,当任务 退出时,通过调用UsrJrdExcHdlUnRegO函数注销任务级异常处理函数及对应关系,每个 任务启动时,分配一个异常回调链表,任务级异常处理函数以节点形式挂接在链表尾部。
应用程序通过调用USr_Pr0CEXCH00kReg 0函数注册应用级异常处理函数 及异常信息与应用级异常处理函数的对应关系,在退出应用程序时,通过调用Usr_ ProcExcHookUnRegO函数注销应用级异常处理函数。403 异常捕获模块对Linux系统及应用程序在运行中出现的异常进行捕捉,当捕 捉到异常后,通过信号调用异常处理模块,将异常信息发送给异常处理模块;本示例中异常捕获模块基于Linux异常捕获流程实现,只要CPU硬件能够捕获的 异常,异常处理模块均可以捕获到。404:异常处理模块接收到异常信息后,通过节点上的过滤函数从尾部节点开始遍 历任务级异常回调链表,根据异常信息判断节点能否处理该异常,若不能,则回退链表,获 取前一节点;若能,则调用该节点上挂接的异常处理函数;405 若遍历任务级异常处理链表,未查找到匹配的异常处理函数,则将该异常处 理升级为应用级异常处理,获取应用级异常回调链表gpf_UsrEXCH00k()予以处理;406:如果在指定时间内,应用级处理未解决异常,则异常处理模块将异常处理升 级到整个系统的异常处理;并根据用户在系统级异常处理函数Usr_SetEXCEXitACt()中设 定的动作进行处理;407:如果在异常处理过程中出现二次异常,异常处理模块首先遍历当前层次异常 回调链表选择其他合适的异常处理函数,若无法解决异常,则将异常处理行为升级。随着异常处理逐渐成为提升软件系统健壮性和可用性的关键因素,根据嵌入式系 统异常处理的相关需求,结合主流操作系统异常处理机制的特点,本发明提出了一种结构 化的异常处理装置,包含了三个主要功能模块异常捕获模块、异常处理模块和异常控制模 块,涵盖嵌入式系统异常处理的绝大多数特性,为系统处理各类异常提供多层面的支持。
权利要求
一种嵌入式系统中的异常处理方法,包括运行应用程序时,为所运行的应用程序创建异常回调链表;所述应用程序向所述异常回调链表注册异常处理函数及所述异常处理函数与异常信息的对应关系;捕获到异常后,根据所捕获异常的异常信息,从所述异常处理函数与异常信息的对应关系中,查询与所捕获异常匹配的异常处理函数,在查询到匹配的异常处理函数后,调用并执行所述匹配的异常处理函数,进行异常处理。
2.如权利要求1所述的方法,其特征在于,所述为所运行的应用程序创建异常回调链表为创建一级或多级异常回调链表,若创建 多级异常回调链表,则所述应用程序向每一级的异常回调链表分别注册异常处理函数及所 述异常处理函数与异常信息的对应关系;所述查询与所捕获异常匹配的异常处理函数的过 程为逐级从异常处理函数与异常信息的对应关系中,查询与捕获的异常匹配的异常处理 函数。
3.如权利要求2所述的方法,其特征在于,创建多级异常回调链表时,所述异常回调链表包括任务级异常回调链表和应用级异 常回调链表,所述异常处理函数包括任务级异常处理函数和应用级异常处理函数;所述应用程序向每一级的异常回调链表分别注册异常处理函数及所述异常处理函数 与异常信息的对应关系的过程包括向所述任务级异常回调链表注册所述任务级异常处理 函数及任务级异常处理函数与异常信息的对应关系,向所述应用级异常回调链表注册应用 级异常处理函数及应用级异常处理函数与异常信息的对应关系。
4.如权利要求3所述的方法,其特征在于,所述逐级从异常处理函数与异常信息的对 应关系中,查询与捕获的异常匹配的异常处理函数的过程包括根据所捕获异常的异常信息,从所述任务级异常处理函数与异常信息的对应关系中, 查询与该异常匹配的任务级异常处理函数;若未查询出匹配的任务级异常处理函数或查询出的任务级异常处理函数未排除所捕 获的异常,则根据所捕获异常的异常信息,从所述应用级异常处理函数与异常信息的对应 关系中,查询与该异常匹配的应用级异常处理函数。
5.如权利要求4所述的方法,其特征在于,系统中还配置有系统级异常处理策略,若在 所述应用级异常处理函数与异常信息的对应关系中,未查询到与所述异常匹配的应用级异 常处理函数或查询出的应用级异常处理函数未排除所捕获的异常,则执行所配置的系统级 异常处理策略,进行异常处理。
6.如权利要求3 5任一其一所述的方法,其特征在于,创建多级异常回调链表时,所 述调用并执行所述匹配的异常处理函数,进行异常处理的过程中,若发生二次异常,则从发 生异常的异常处理函数所属的异常回调链表中,查询是否还存在与捕获的异常匹配的异常 处理函数,若不存在,则从上级的异常回调链表中查询是否存在与该异常匹配的异常处理 函数,若从所述发生异常的异常处理函数所属的异常回调链表或所述上级的异常回调链表 中查询到与捕获的异常匹配的异常处理函数,则调用并执行查询到的与捕获的异常匹配的 异常处理函数。
7.如权利要求6所述的方法,其特征在于,若所述发生异常的异常处理函数为任务级异常处理函数,则从该发生异常的任务级异常处理函数所属的任务级异常回调链表中,查 询是否还存在与所捕获异常匹配的任务级异常处理函数,若不存在,则从应用级异常回调 链表中查询是否存在与捕获的异常匹配的应用级异常处理函数,若不存在,则执行所述系 统级异常处理策略。
8.一种嵌入式系统中的异常处理装置,包括异常控制模块、异常捕获模块和异常处 理模块,其中所述异常控制模块,用于在运行应用程序时,为所运行的应用程序创建异常回调链表;所述异常捕获模块,用于捕获异常,将所捕获异常的异常信息发送给所述异常处理模块;所述异常处理模块,用于提供注册函数,该注册函数用于应用程序向所述异常回调链 表注册异常处理函数及所述异常处理函数与异常信息的对应关系; 该异常处理模块,还用于在接收到异常信息后,从所述异常处理函数与异常信息的对 应关系中,查询与该异常匹配的异常处理函数,在查询到匹配的异常处理函数后,调用并执 行所述匹配的异常处理函数,进行异常处理。
9.如权利要求8所述的装置,其特征在于,所述异常控制模块为所运行的应用程序创建一级或多级异常回调链表; 若创建多级异常回调链表,则所述应用程序向每一级的异常回调链表分别注册异常处 理函数及所述异常处理函数与异常信息的对应关系;所述异常处理模块查询与该异常匹配的异常处理函数的过程为逐级从异常处理函数 与异常信息的对应关系中,查询与捕获的异常匹配的异常处理函数。
10.如权利要求9所述的装置,其特征在于,所述异常控制模块创建多级异常回调链表时,所述异常处理模块调用并执行所述匹配 的异常处理函数,进行异常处理的过程中,若发生二次异常,则所述异常处理模块还用于从 发生异常的异常处理函数所属的异常回调链表中,查询是否还存在与捕获的异常匹配的异 常处理函数,若不存在,则从上级的异常回调链表中查询是否存在与该异常匹配的异常处 理函数,若从所述发生异常的异常处理函数所属的异常回调链表或所述上级的异常回调链 表中查询到与捕获的异常匹配的异常处理函数,则调用并执行查询到的与捕获的异常匹配 的异常处理函数。
全文摘要
本发明公开了一种嵌入式系统中的异常处理方法,包括运行应用程序时,为所运行的应用程序创建异常回调链表;应用程序向异常回调链表注册异常处理函数及异常处理函数与异常信息的对应关系;捕获到异常后,根据所捕获异常的异常信息,从异常处理函数与异常信息的对应关系中,查询与所捕获异常匹配的异常处理函数,在查询到匹配的异常处理函数后,调用并执行匹配的异常处理函数,进行异常处理。本发明采用异常回调链表结构,避免了异常处理函数对底层硬件的直接操作,提高了软件的可移植性和健壮性;本发明满足了当前嵌入式系统对异常处理的需求,具有扩展性好、系统运行可靠和应用范围广等特点。
文档编号G06F11/36GK101923508SQ20091020377
公开日2010年12月22日 申请日期2009年6月12日 优先权日2009年6月12日
发明者王继刚, 谢世波 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1