原创 嵌入式软件可靠性设计要注意的问题(上)

2010-6-17 09:57 4833 19 24 分类: 消费电子

男人征服世界,女人通过征服男人来征服世界;硬件叱咤江湖,软件通过控制硬件来统治江湖。当今世界,放眼江湖,有电子的地方就有嵌入式软件,有电子故障的地方,也就有嵌入式软件设计缺陷的影子。我们今天就把软件所容易犯的错误和规避的方法一一罗列,并给出应对之法。

嵌入式软件的最大特点是以控制为主,软硬结合的较多,功能性的操作较多,模块相互间调用的较多,外部工作环境复杂容易受到干扰或干扰别的设备,且执行错误的后果不仅仅是数据错误而是有可能导致不可估量的灾难,所以总结起来,嵌入式软件可靠性设计需注意的问题有四个方面:

1、软件接口

先说软件接口中容易出问题的地方和编程人员容易犯的错误。

软件接口调用一般会有数据的赋值,赋值变量的数据类型可能会存在强制的数据转换;需加以检查。如果为了防范出问题的话,可以添加对数据范围和数据类型的检查。

赋值数据的数量不对路,多了少了的都不好,会出现意外的赋值结果,不过还好,这项错误比较好检查。

软件编程中,会有对某一功能操作代码的复用,比如对某个端口的数据检查和控制,在整个程序中只会发生两次,为了图省事,可能就直接把该段代码直接插入实际程序模块中去了,这样,在源程序代码中,就出现了两段完全相同,完成相同功能,只是服务于不同模块的代码,按道理来说,这样设计其实也没啥问题,是的,你没错,但你的行为会使别人无意中犯错。就像青年男女相处,女孩子纯粹是想和男孩子充分享受温馨的气氛和心情,并不想更深入的发生什么,但女孩子邀请男生去的是她的家,在家里换上了家居的睡衣,窗户紧闭,放着的还是暧昧的音乐,被男孩子半强迫发生后,无限哀怨地说“我没想到结果会是这样的”,那怪得谁来呢?在代码方面,您的这种做法与貌似引诱男孩上钩的少女无异。

有人会说了,我这样写代码怎么就算引诱呢?原因是程序可能会升级,您这几行代码在实际应用过程中也不能保证是尽善尽美的,发现不完善的地方后,势必会修改,如果你还能想得起来,可能不会遗漏,如果修改此代码的是别的人,改了一个地方,别的地方没改,是不是还留着隐患?那如何做呢?方法不难,把这段功能单独做成一个模块即可,对此端口的读取和控制赋值均由此独立模块完成,如果数据的正确性影响大的话,还需要对端口数据的正确性进行检查和判断。嵌入式软件可靠性编程方法的四个目的是防错、判错、纠错、容错。对端口数据的判断属于判错的内容,如果数据有错的话,纠错和容错的设计方法应该不用我深入讲解了吧?

2、软硬件接口

硬件如男人,对外的执行都靠它来实现,一旦出现问题,执行后的后果就不可控了,周总理说过“外交无小事”。但如何注意呢?

对读进来的硬件接口的数据要判断其真伪;

对输出的数据的执行效果要检测;

对输出的数据的可能后果要进行预防性设计,数据输出的过程,我们从设计上要做一个分析,分析的思路是一般容易局限在稳态过程,忽视了过渡过程。举例说明,比如我们控制一个支路的供电,从软件控制来说,直接给继电器一个启动信号,让开状态的触点闭合就可以了,非“关”即“开”,是受控继电器的两个稳态状态,但事实上,在从开到闭合的过程中,支路供电的电压并不是一个简单0V—24V(24V为示例而已)的跳变状态,而是一个抖动,有冲击信号的过程,这种情况在硬件上的防护是必不可少的,但在软件上也不是可以事不关己、高高挂起的。

另外在逻辑上,宜将容易被干扰和容易产生的干扰控制动作从时序上控制好,予以分开隔离。比如,控制继电器的过程是容易产生抖动尖峰脉冲而干扰数据总线和控制信号总线的,这时候从控制上,不宜同时实施数据的发送和接收工作,不宜作出其他的控制动作,惹不起咱躲得起,躲过这一阵干扰的时候总可以了吧?

3、软件代码

软件的可靠性是随着时间的推移,可靠性逐渐增加的,这一点区别于电子可靠性、机械可靠性。电子可靠性服从指数分布,在整个生命周期内,其失效率为一个常数;机械可靠性因为磨损、腐蚀、运动等因素的存在,随时间推移可靠度会下降。因此也就有了软件可靠性设计的一个特定规律和注意事项。(待续)

继续阅读:

《嵌入式软件可靠性设计要注意的问题》(下)
http://forum.eet-cn.com/BLOG_ARTICLE_4478.HTM

文章评论5条评论)

登录后参与讨论

tamkay_819533976 2010-8-7 13:45

深入浅出,通俗易懂。

用户1280007 2010-7-1 08:59

不错,不错

用户1011588 2010-6-24 16:42

学习了

用户1554229 2010-6-24 15:01

相当有见解,矛盾的统一性!

用户1525567 2010-6-21 08:59

不错
相关推荐阅读
武晔卿 2017-05-13 06:38
接地线缆的选型错误
无论是Ⅰ类设备(有PE保护接地Earth),还是Ⅱ类设备(浮地或整机浮地但有内部的金属板充作保护公共地使用的),常见一些与EMC与可靠性的接地线错误应用,因此导致EMI干扰,该泄放的高频干扰泄放不掉而...
武晔卿 2017-03-17 07:43
电磁兼容设计整改三要素分析:电压容限、高频特性、回流路径
深入浅出抓本质 电磁兼容公益讲座 讲解内容: l 打静电时会复位重启,复位端、地线端、电源端发生了什么?——电压容限 l 浪涌发生时,有防雷防护,为什么后面电路仍然坏?为什么有起火? ——失效机理 l...
武晔卿 2017-02-23 14:11
一个工程师风花雪月的事
一位新毕业研究生电子工程师A的故事。 研究生三年,小A一直暗恋本校另外系的一个女生,但又怯怯地不敢表白。做毕业论文的时候,在实验室里,心绪烦乱,幻想着她羞涩一笑中牵她手的样子,不由得偷笑出来。但一想到...
武晔卿 2016-06-29 10:42
对开关管损坏做失效分析的一种方法
        电路板工作中不可能不发生芯片或半导体器件的损坏,损坏后,要想从器件的尸体上发现其死因,并能知晓导致其死伤的应力和作用路径,自然就可以很容易的...
武晔卿 2016-06-29 10:31
电路及元器件故障探查及原因分析方法
        电路板上器件故障之后,哪里坏掉了?坏到了什么程度?怎么坏的?会因其隐蔽性而难以查找具体故障点,也因为对故障原因故障机理不清楚而导致无从下手,或者只能用倒推法,用逐个实验的方式,将各...
武晔卿 2016-05-03 07:51
如何排查电子产品在用户现场偶发的故障?
工作中,不少朋友,几乎每位工程师,都遇到过电子产品在用户现场偶尔发生故障,如死机、复位、数据传输错误等。维修工程师在现场跟踪排查时,故障又不会再现,拿回实验室,怎么试验又都是好的。使人陷入一种无从...
我要评论
5
19
关闭 站长推荐上一条 /2 下一条