[发明专利]嵌入式C语言环境下异常处理方法及装置有效
申请号: | 200810100060.5 | 申请日: | 2008-06-03 |
公开(公告)号: | CN101599039A | 公开(公告)日: | 2009-12-09 |
发明(设计)人: | 余加强;郑伟 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京集佳知识产权代理有限公司 | 代理人: | 逯长明 |
地址: | 518129广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 嵌入式 语言 环境 异常 处理 方法 装置 | ||
技术领域
本发明涉及C语言技术,尤其涉及嵌入式C语言环境下异常处理技术。
背景技术
异常是指硬件或软件程序在运行时出现的反常情形。在嵌入式C语言环 境下,传统的异常处理方法是,当发现异常时,重启系统。以程序异常为例, 可以通过CPU的异常识别能力,检查程序运行时是否出现异常,一旦CPU发 现程序运行时出现异常,则调用异常处理程序,将包含寄存器、当前堆栈、 调用栈在内的异常信息保存下来,然后按统一的方式完成处理。即,对于发 生在任务中的异常,调试版本下挂起该任务,在正式版本中重启嵌入式系统, 对于发生在中断中的异常,则均以重启嵌入式系统的方式进行处理。
发明人经过仔细研究现有技术后发现,随着软件复杂度的日益增加,系 统重启需要更长的时间,而产品对系统的中断时间要求越来越短,甚至不希 望系统运行时发生中断,而在嵌入式C语言环境下,传统的异常处理方法无 法满足这样的需求。
发明内容
本发明实施例在于提供一种嵌入式C语言环境下异常处理方法、装置及 嵌入式系统,用以实现当异常发生时,缩短系统的中断时间,或者不发生中 断。
一种嵌入式C语言环境下的异常处理方法,包括:监控正在运行的需要 保护的程序代码片段,如果所述程序代码片段出现异常,则抛出所述异常, 所述异常包括软件异常、硬件异常中的至少一种;所述程序代码片段为函数、 由多个函数组成的模块或由多个模块组成的部件;根据获得的所述异常,确 定相应的异常处理程序,由所述异常处理程序处理所述异常,其中,所述异 常处理程序与所述程序代码片段相互独立。
一种嵌入式C语言环境下异常处理装置,包括:监控单元,用于监控正 在运行的需要保护的程序代码片段;所述程序代码片段为函数、由多个函数 组成的模块或由多个模块组成的部件;异常抛出单元,用于在所述监控单元 发现所述程序代码片段出现异常后,抛出所述异常,所述异常包括软件异常、 硬件异常中的至少一种;匹配单元,用于根据获得的所述异常,确定对应的 异常处理程序,所述异常处理程序用于处理所述异常抛出单元抛出的异常, 其中,所述异常处理程序与所述程序代码片段相互独立。
一种嵌入式系统,包括上述异常处理装置。
在本发明实施例的嵌入式C语言环境下异常处理方法、装置及嵌入式系 统中,如果程序代码片段出现异常,则不是简单的重新运行程序代码片段, 而是由独立于程序代码片段的异常处理程序来处理异常,这样,程序在运行 时,就不会因为异常而中断运行,满足了产品不希望系统运行时发生中断的 需求。
在本发明实施例的嵌入式C语言环境下退出或删除线程或进程的方法 中,无论是退出或者删除线程或进程,都可以释放处理线程或进程抛出的异 常所占用的资源,这样,当其他线程或进程需要使用这些资源时,不会因为 删除或退出的线程或进程所抛出的异常仍然占用资源而导致其他线程或进程 无法使用这些资源。另外,还可以由其他线程删除所需要删除的线程,从而 可以实现跨线程删除线程时的异常处理。
附图说明
图1为本发明实施例的嵌入式C语言环境下异常处理方法的流程图;
图2为本发明实施例的嵌入式C语言环境下异常处理装置的结构示意图;
图3为本发明实施例的不同的异常处理程序对应不同的异常类型的示意 图;
图4为本发明的嵌入式C语言环境下异常处理方法一具体实施例的流程 图;
图5为本发明实施例的堆空间存储异常相关信息的存储布局示意图;
图6为本发明实施例的try块的实现流程图;
图7为本发明实施例的except块的实现流程图;
图8为本发明实施例的捕捉某种特定异常的实现流程图;
图9为本发明实施例的捕捉处理指定异常的实现流程图;
图10为本发明实施例的捕捉和处理某一异常区间内的异常的实现流程 图;
图11为本发明实施例的throw块的实现流程图;
图12为本发明实施例的异常处理的精细管理方法的流程图;
图13为本发明实施例的退出线程或进程的方法的流程图;
图14为本发明实施例的退出线程或进程的装置的结构示意图;
图15为本发明实施例的删除线程或进程的方法的流程图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810100060.5/2.html,转载请声明来源钻瓜专利网。