找回密码
 注册
关于网站域名变更的通知

嵌入式软件设计的错误重灾区!

2023-2-7 18:35| 查看: 100| 评论: 0

摘要: 嵌入式软件有它独特的特点,软硬结合部分较多,功能性操作也比较多,还容易受到复杂环境的干扰。但是,最需要注意的是,错误在嵌入式软件中,尽量要避免,因为执行错误的后果不仅仅是数据错误,而是有可能导致不可估 ...
嵌入式软件有它独特的特点,软硬结合部分较多,功能性操作也比较多,还容易受到复杂环境的干扰。但是,最需要注意的是,错误在嵌入式软件中,尽量要避免,因为执行错误的后果不仅仅是数据错误,而是有可能导致不可估量的灾难!+ J* K0 w. H' p1 g) P3 O4 j
$ f, t2 {: }" R7 ?) R6 g9 c

如何避免错误,需要了解嵌入式软件设计错误经常发生的部分,进行哪些操作会造成这些错误,才知道如何避免!

d3588bee66750b3ffc920f010073ba47.jpg
重灾区之一软件接口5 H% U1 m& ?! h
软件接口调用一般会有数据的赋值,赋值变量的数据类型可能会存在强制的数据转换;需加以检查。如果为了防范出问题的话,可以添加对数据范围和数据类型的检查。赋值数据的数量不对路,多了少了的都不好,会出现意外的赋值结果。
" _; [- D  r5 `! q4 w% X
软件编程中,会有对某一功能操作代码的复用,比如对某个端口的数据检查和控制,在整个程序中只会发生两次,为了图省事,可能就直接把该段代码直接插入实际程序模块中去了。这样在源程序代码中,就出现了两段完全相同,完成相同功能,只是服务于不同模块的代码,按道理来说,这样设计其实也没什么问题。但是,你的行为会使别人无意中犯错。
那如何做呢?方法不难,把这段功能单独做成一个模块即可,对此端口的读取和控制赋值均由此独立模块完成,如果数据的正确性影响大的话,还需要对端口数据的正确性进行检查和判断。嵌入式软件可靠性编程方法的四个目的是防错、判错、纠错、容错。


重灾区之二软硬件接
对读进来的硬件接口的数据要判断其真伪;对输出的数据的执行效果要检测;对输出的数据的可能后果要进行预防性设计。* ?9 V/ m4 O* N2 f+ y
数据输出的过程,我们从设计上要做一个分析,分析的思路是一般容易局限在稳态过程,忽视了过渡过程。举例说明,比如我们控制一个支路的供电,从软件控制来说,直接给继电器一个启动信号,让开状态的触点闭合就可以了,非“关”即“开”,是受控继电器的两个稳态状态,但事实上,在从开到闭合的过程中,支路供电的电压并不是一个简单0V—24V(24V为示例而已)的跳变状态,而是一个抖动,有冲击信号的过程,这种情况在硬件上的防护是必不可少的,但在软件上也不是可以事不关己、高高挂起的。另外在逻辑上,宜将容易被干扰和容易产生的干扰控制动作从时序上控制好,予以分开隔离。& Y1 K, |: }( m. @  U


重灾区之三软件代码" J! |( Y! t6 ~7 I* {1 ~5 E
软件的可靠性是随着时间的推移,可靠性逐渐增加的,这一点区别于电子可靠性、机械可靠性。电子可靠性服从指数分布,在整个生命周期内,其失效率为一个常数;机械可靠性因为磨损、腐蚀、运动等因素的存在,随时间推移可靠度会下降。因此也就有了软件可靠性设计的一个特定规律和注意事项。
既然需要通过时间推移,通过不断改进,软件可靠性得到提升。那么软件的可维护性就是一个大问题了。至于注释如何去做、变量如何命名、软件配置管理如何操作,这里面既有很常规的方法,也有一些我们司空见惯然而是错误的做法。信手举上几个值得注意的细节供参考:. v9 o2 j# \  I4 Q6 Z% _. @
变量定义时宜将变量类型的变量名程中体现于其中;如AD_result_int、Cal_result_float等;制赋值时出现数据类型的错误;注释要充分;代码的布局风格宜统一,便于阅读查找等等
& e9 W7 }6 Z* l$ H2 X9 d

重灾区之四数据、变量
变量的定义是为的避免各种混淆,同一程序内数据和数据的混淆、不同人读程序时对变量理解上出现的二义性、视觉效果上容易出现的错误(字母的“o”和数字的“0”,字母的“l”和数字的“1”)。这里要遵循一个“要么相同,要么迥异”的基本规则,这条规则在很多的领域都有应用。用显意的符号来命名变量和语句标号。标识符的命名有明确含义,且是完整单词或易理解的缩写。短单词通过去掉“元音”形成缩写;长单词取头几个字母形成缩写;一些单词有公认的缩写。如:Temp — tmp;Flag — flg;StaTIsTIc — stat;Increment — inc;Message — msg。
特殊约定或缩写,要有注释说明。在源文件开始处,对使用的缩写或约定注释说明。自己特有的命名风格,要自始至终保持一致。

本站资讯文章系编辑转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。
本站拥有对此声明的最终解释权。
收藏 邀请
关闭

推荐内容上一条 /1 下一条

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-27 01:01 , Processed in 0.156250 second(s), 29 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

返回顶部