单片机软件中断测试技术的研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机软件中断测试技术的研究

单片机软件中断测试技术的研究   摘要:该文探讨了单片机软件测试的关键技术中断测试技术,并根据自己的测试实践讨论了型号项目软件测试中出现的问题。   关键词:软件测试;中断测试;单片机   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)11-0195-02   Research of interrupt testing technology of Single Chip Microcomputer   Dai Xiao-qian,You Zhi-jian   (Shanghai Aerospace Electronic Technology Institute, Shanghai 201109, China)   Abstract: This paper discusses the important technology about interrupt testing of Single Chip Microcomputer software, according to the author’s testing practice it discuss some issues derived from the software testing of a type of project.   Key words: software testing; Interrupt testing; Single Chip Microcomputer   单片机因其高可靠性已被广泛应用于航天系统中,因此单片机软件的可靠性也成为影响这些系统的非常关键的因素。由于中断技术在软件实时响应、多任务处理和突发事件响应中的优势,使得它在航天型号软件中不可或缺。但是中断程序执行的随机性,使得中断所带来的问题具有偶发性和隐蔽性,在软件测试中通常很难被发现,这给软件测试带来了很大的困难。   因此,本文结合航天软件测评工作的特点,将单片机软件中断测试细化到以下测试类型包括代码审查、性能测试、余量测试、强度测试中,力求中断测试更充分有效,更多发现问题。   1 代码审查   在实际应用中,由于中断和硬件、环境、以及应用密切相关,复杂性高,不可能进行充分的测试,所以必须在进行中断测试之前做好比较完备的中断代码审查及分析,然后在此基础上进行一些必要的测试。以单片机软件为例,做好中断的代码审查工作,除了编码的正确性需要得到保证之外,还需要着重对以下几个方面进行审查。   1.1 未使用中断向量是否处理   对未用中断的中断向量进行处理,避免触发未用中断或者跳到未用中断的中断向量区而带来的未知影响。处理方法可以采用跳转到统一的陷阱处理程序等。   1.2 软件复位是否进行两次中断返回   MSC-51单片机有两个中断优先级,如果软件在二级中断嵌套时走飞,随后由软件陷阱转入初始化程序时,则当前中断服务状态标志有2个,需要进行2次RETI操作来清除中断服务状态标志,否则,软件无法响应中断请求。代码实现如下:      1.3 检查是否存在函数重入   Keil c51默认环境下,函数如果不做特殊处理是不可重入的。如果函数调用有重入,会产生不同模块间变量相互覆盖的风险。对于无法避免重入函数的情况,设计师可编写两个语句相同名称不同的子函数分别供主程序和中断服务程序调用。   1.4 检查变量类型是否合理   在单片机高级语言编程中,对于在主程序和中断(或在不同优先级的中断)中同时用到的公共变量应尽量定义为单字节变量如unsigned char型。下文描述了一个错误的案例,代码如下图。   其中Int0为低优先级中断,Int1为高优先级中断。变量Cnt定义为16位unsigned int型,      在单片机中分高低字节存储。Int0中断服务子程序中Cnt加1(C语言描述为Cnt++)对应的汇编代码及解释如下:      其中“Cnt+01H”和“Cnt”分别表示存放Cnt变量的低字节和高字节数据地址。从上述汇编代码分析可知,当Int0中断服务子程序执行完第一句后执行第二句前,此时被高优先级的Int1中断打断,而后在Int1中断服务子程序中又将Cnt的高低字节均清为0,因此导致Int1中断处理结束后,程序回到Int0中断服务子程序执行上面第二句代码时,误以为是Cnt低字节加1溢出(0xff+1),因此将Cnt高字节加1(变为0x0100),进而导致后续大于200条件判断成立,即错误执行语句“Bus1553B= ERR;”从而导致软件复位1553B总线芯片。   1.5 中断资源冲突检查   中断程序可以在任何时刻运行,如某一资源同时为两个以上的中断程序或中断程序和主程序所使用,这时相互之

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档