环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產(chǎn)品分類

當(dāng)前位置: 首頁(yè) > 傳感測(cè)量產(chǎn)品 > 數(shù)據(jù)采集產(chǎn)品 > 工控機(jī)

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
工控機(jī)

嵌入式軟件可靠性設(shè)計(jì)要注意的問(wèn)題

發(fā)布日期:2022-04-17 點(diǎn)擊率:39

      嵌入式軟件的最大特點(diǎn)是以控制為主,軟硬結(jié)合的較多,功能性的操作較多,模塊相互間調(diào)用的較多,外部工作環(huán)境復(fù)雜容易受到干擾或干擾別的設(shè)備,且執(zhí)行錯(cuò)誤的后果不僅僅是數(shù)據(jù)錯(cuò)誤而是有可能導(dǎo)致不可估量的災(zāi)難,所以總結(jié)起來(lái),嵌入式軟件可靠性設(shè)計(jì)需注意的問(wèn)題有四個(gè)方面:

1、軟件接口

      先說(shuō)軟件接口中容易出問(wèn)題的地方和編程人員容易犯的錯(cuò)誤。

      軟件接口調(diào)用一般會(huì)有數(shù)據(jù)的賦值,賦值變量的數(shù)據(jù)類型可能會(huì)存在強(qiáng)制的數(shù)據(jù)轉(zhuǎn)換;需加以檢查。如果為了防范出問(wèn)題的話,可以添加對(duì)數(shù)據(jù)范圍和數(shù)據(jù)類型的檢查。

      賦值數(shù)據(jù)的數(shù)量不對(duì)路,多了少了的都不好,會(huì)出現(xiàn)意外的賦值結(jié)果,不過(guò)還好,這項(xiàng)錯(cuò)誤比較好檢查。

      軟件編程中,會(huì)有對(duì)某一功能操作代碼的復(fù)用,比如對(duì)某個(gè)端口的數(shù)據(jù)檢查和控制,在整個(gè)程序中只會(huì)發(fā)生兩次,為了圖省事,可能就直接把該段代碼直接插入實(shí)際程序模塊中去了,這樣,在源程序代碼中,就出現(xiàn)了兩段完全相同,完成相同功能,只是服務(wù)于不同模塊的代碼,按道理來(lái)說(shuō),這樣設(shè)計(jì)其實(shí)也沒(méi)啥問(wèn)題,是的,你沒(méi)錯(cuò),但你的行為會(huì)使別人無(wú)意中犯錯(cuò)。就像青年男女相處,女孩子純粹是想和男孩子充分享受溫馨的氣氛和心情,并不想更深入的發(fā)生什么,但女孩子邀請(qǐng)男生去的是她的家,在家里換上了家居的睡衣,窗戶緊閉,放著的還是曖昧的音樂(lè),被男孩子半強(qiáng)迫發(fā)生后,無(wú)限哀怨地說(shuō)“我沒(méi)想到結(jié)果會(huì)是這樣的”,那怪得誰(shuí)來(lái)呢?在代碼方面,您的這種做法與貌似引誘男孩上鉤的^^無(wú)異。

      有人會(huì)說(shuō)了,我這樣寫代碼怎么就算引誘呢?原因是程序可能會(huì)升級(jí),您這幾行代碼在實(shí)際應(yīng)用過(guò)程中也不能保證是盡善盡美的,發(fā)現(xiàn)不完善的地方后,勢(shì)必會(huì)修改,如果你還能想得起來(lái),可能不會(huì)遺漏,如果修改此代碼的是別的人,改了一個(gè)地方,別的地方?jīng)]改,是不是還留著隱患?那如何做呢?方法不難,把這段功能單獨(dú)做成一個(gè)模塊即可,對(duì)此端口的讀取和控制賦值均由此獨(dú)立模塊完成,如果數(shù)據(jù)的正確性影響大的話,還需要對(duì)端口數(shù)據(jù)的正確性進(jìn)行檢查和判斷。嵌入式軟件可靠性編程方法的四個(gè)目的是防錯(cuò)、判錯(cuò)、糾錯(cuò)、容錯(cuò)。對(duì)端口數(shù)據(jù)的判斷屬于判錯(cuò)的內(nèi)容,如果數(shù)據(jù)有錯(cuò)的話,糾錯(cuò)和容錯(cuò)的設(shè)計(jì)方法應(yīng)該不用我深入講解了吧?

2、軟硬件接口

      硬件如男人,對(duì)外的執(zhí)行都靠它來(lái)實(shí)現(xiàn),一旦出現(xiàn)問(wèn)題,執(zhí)行后的后果就不可控了,周總理說(shuō)過(guò)“外交無(wú)小事”。但如何注意呢?

      對(duì)讀進(jìn)來(lái)的硬件接口的數(shù)據(jù)要判斷其真?zhèn)危?/p>

      對(duì)輸出的數(shù)據(jù)的執(zhí)行效果要檢測(cè);

      對(duì)輸出的數(shù)據(jù)的可能后果要進(jìn)行預(yù)防性設(shè)計(jì),數(shù)據(jù)輸出的過(guò)程,我們從設(shè)計(jì)上要做一個(gè)分析,分析的思路是一般容易局限在穩(wěn)態(tài)過(guò)程,忽視了過(guò)渡過(guò)程。舉例說(shuō)明,比如我們控制一個(gè)支路的供電,從軟件控制來(lái)說(shuō),直接給繼電器一個(gè)啟動(dòng)信號(hào),讓開(kāi)狀態(tài)的觸點(diǎn)閉合就可以了,非“關(guān)”即“開(kāi)”,是受控繼電器的兩個(gè)穩(wěn)態(tài)狀態(tài),但事實(shí)上,在從開(kāi)到閉合的過(guò)程中,支路供電的電壓并不是一個(gè)簡(jiǎn)單0V—24V(24V為示例而已)的跳變狀態(tài),而是一個(gè)抖動(dòng),有沖擊信號(hào)的過(guò)程,這種情況在硬件上的防護(hù)是必不可少的,但在軟件上也不是可以事不關(guān)己、高高掛起的。

      另外在邏輯上,宜將容易被干擾和容易產(chǎn)生的干擾控制動(dòng)作從時(shí)序上控制好,予以分開(kāi)隔離。比如,控制繼電器的過(guò)程是容易產(chǎn)生抖動(dòng)尖峰脈沖而干擾數(shù)據(jù)總線和控制信號(hào)總線的,這時(shí)候從控制上,不宜同時(shí)實(shí)施數(shù)據(jù)的發(fā)送和接收工作,不宜作出其他的控制動(dòng)作,惹不起咱躲得起,躲過(guò)這一陣干擾的時(shí)候總可以了吧?

3、軟件代碼

      軟件的可靠性是隨著時(shí)間的推移,可靠性逐漸增加的,這一點(diǎn)區(qū)別于電子可靠性、機(jī)械可靠性。電子可靠性服從指數(shù)分布,在整個(gè)生命周期內(nèi),其失效率為一個(gè)常數(shù);機(jī)械可靠性因?yàn)槟p、腐蝕、運(yùn)動(dòng)等因素的存在,隨時(shí)間推移可靠度會(huì)下降。因此也就有了軟件可靠性設(shè)計(jì)的一個(gè)特定規(guī)律和注意事項(xiàng)。

      既然需要通過(guò)時(shí)間推移,通過(guò)不斷改進(jìn),軟件可靠性得到提升。那么軟件的可維護(hù)性就是一個(gè)大問(wèn)題了。這也是為什么軟件工程管理方面特別關(guān)注軟件文檔、注釋的原因了。但做這些要求的人只是人云亦云,并不理解如此做法的真正動(dòng)機(jī)。至于注釋如何去做、變量如何命名、軟件配置管理如何操作,這里面既有很常規(guī)的方法,也有一些我們司空見(jiàn)慣然而是錯(cuò)誤的做法。信手舉上幾個(gè)值得注意的細(xì)節(jié)供參考。

      變量定義時(shí)宜將變量類型的變量名程中體現(xiàn)于其中;如AD_result_int、Cal_result_float等。這樣為的好檢查,防止數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換或強(qiáng)制賦值時(shí)出現(xiàn)數(shù)據(jù)類型的錯(cuò)誤;

注釋要充分;

      代碼的布局風(fēng)格宜統(tǒng)一,便于閱讀查找;

      不可出現(xiàn)非受控的default流程,所有數(shù)值和變量,不論是調(diào)用函數(shù)時(shí)賦予的、讀取接口讀進(jìn)來(lái)的、還是中間變量計(jì)算出來(lái)的,在應(yīng)用前都宜作數(shù)據(jù)有效性的判斷,并對(duì)判定的所有可能結(jié)果均做受控的對(duì)應(yīng)處理。

      關(guān)于軟件可維護(hù)性編程方法方面的文章資料在網(wǎng)上是鋪天蓋地,不予贅述,綜合采用之即可。很多文章把軟件可維護(hù)性編程規(guī)范推薦做成企業(yè)的嵌入式軟件可靠性設(shè)計(jì)規(guī)范,實(shí)在是有點(diǎn)以偏概全,有失偏頗的,用一句娛樂(lè)圈的話來(lái)說(shuō),“愛(ài)情是生活的重要內(nèi)容,但它不是生活的全部”,軟件可維護(hù)性編程方法亦然。

      軟件代碼在執(zhí)行中容易出現(xiàn)的下一個(gè)問(wèn)題是跑飛,程序指針受到干擾,跳轉(zhuǎn)到了一個(gè)非受控位置,執(zhí)行了不該執(zhí)行的代碼。如果執(zhí)行了不該執(zhí)行的代碼,如果在程序中加入了足夠的變量判斷、讀值判斷、狀態(tài)檢測(cè)判斷等,那倒還好了,后果也不會(huì)太嚴(yán)重,甚至最終還是可能自己跑回來(lái)的。但有一種跑飛是比較可怕的,一般我們?cè)赗OM中存放的程序目標(biāo)代碼是1-3字節(jié)的指令,就是最多3條字段的目標(biāo)碼組成了執(zhí)行動(dòng)作,如果程序指針跑飛到了某個(gè)3字節(jié)指令的第2個(gè)字節(jié)上的時(shí)候,執(zhí)行的后果是什么,可就真的沒(méi)人知道了,即使在程序上作了足夠的數(shù)據(jù)判錯(cuò)、邏輯跳轉(zhuǎn)的防范措施,結(jié)果也不會(huì)好。而且ROM一般是不可能全部都被程序代碼填滿的,總有富余空間,富余空間中的默認(rèn)內(nèi)容是啥,這些默認(rèn)字節(jié)是否也會(huì)導(dǎo)致一些操作呢?單片機(jī)中的默認(rèn)空間是0FFH,DSP的我沒(méi)查過(guò),大家有興趣查一下,跳到這些字段里,也是容易出麻煩的。

      好了,不再羅嗦,直接給出解決方法吧,就是每隔一段程序代碼或控制區(qū)域,就人為放置上幾個(gè)NOP指令,在NOP指令后放置一個(gè)長(zhǎng)跳轉(zhuǎn)的ERR處理程序。注意NOP最少放置3個(gè),這樣任何的跑飛最多只能占用2個(gè)NOP,第三個(gè)NOP一樣還是能把程序代碼揪回來(lái),揪回來(lái)后就執(zhí)行ERR處理程序。

      如果碰到安全性、可靠性等級(jí)要求比較高的程序,推薦的處理方法可以采用熱備份的處理方法,即用兩段代碼同時(shí)執(zhí)行同一個(gè)功能,執(zhí)行的結(jié)果進(jìn)行對(duì)比,如果一致則放行通過(guò),如果結(jié)果不一致,咋處理就看您的嘍。但是… …國(guó)人有的是辦法,為了圖省事,你領(lǐng)導(dǎo)不是要求我編熱備份程序嗎,那好,我就把原來(lái)的代碼復(fù)制一遍,重新插入到某個(gè)地方,您這和明朝時(shí)代馮保太監(jiān)(還是嚴(yán)嵩、張居正阿?拿不準(zhǔn)了,大家有興趣的翻看《明朝那些事兒》查閱下)玩的沒(méi)啥兩樣,自己寫奏章,自己給自己審批奏章。既然是備份就是為了防止一個(gè)人出問(wèn)題,那最好的辦法自然是不同的人來(lái)編這段,如果原理計(jì)算方法上也不同,數(shù)據(jù)采集通道也不同,那就過(guò)年帶娶媳婦的,好上加好了。

      安全性和可靠性的編程細(xì)節(jié)注意事項(xiàng)還有很多,窺一斑難見(jiàn)全豹呵,諸位仁兄一起努力鉆研了。

下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

主站蜘蛛池模板: 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 齿轮减速电机一体机_蜗轮蜗杆减速马达-德国BOSERL齿轮减速机带电机生产厂家 | 建筑资质代办-建筑资质转让找上海国信启航| 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 合肥办公室装修 - 合肥工装公司 - 天思装饰| 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 防潮防水通风密闭门源头实力厂家 - 北京酷思帝克门窗 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 学习虾-免费的学习资料下载平台| 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 成都网站建设制作_高端网站设计公司「做网站送优化推广」 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 不锈钢拉手厂家|浴室门拉手厂家|江门市蓬江区金志翔五金制品有限公司 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 汕头市盛大文化传播有限公司,www.11400.cc |