www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 如果我們自己編寫了一個(gè)程序,程序能正常編譯,運(yùn)行起來(lái)也實(shí)現(xiàn)了我們期望的輸出,那是不是這個(gè)程序就很完善了呢?對(duì)于工業(yè)產(chǎn)品來(lái)說(shuō),“好”、“能用”和“完善”,或者說(shuō)“標(biāo)準(zhǔn)&

 如果我們自己編寫了一個(gè)程序,程序能正常編譯,運(yùn)行起來(lái)也實(shí)現(xiàn)了我們期望的輸出,那是不是這個(gè)程序就很完善了呢?對(duì)于工業(yè)產(chǎn)品來(lái)說(shuō),“好”、“能用”和“完善”,或者說(shuō)“標(biāo)準(zhǔn)”,甚至是代碼的“安全”,顯然不是一個(gè)層面的東西。因?yàn)镃語(yǔ)言雖然是我們開(kāi)發(fā)嵌入式應(yīng)用的最主要工具之一,然而C語(yǔ)言并非是專門為嵌入式系統(tǒng)設(shè)計(jì),相當(dāng)多的嵌入式系統(tǒng)較一般計(jì)算機(jī)系統(tǒng)對(duì)軟件安全性有更苛刻的要求;例如在那些對(duì)安全性要求很高的系統(tǒng)中,如飛行器、汽車和工業(yè)控制中,只要代碼的工作稍有偏差,就有可能造成重大的財(cái)產(chǎn)損失或者人員傷亡。

那么如何衡量我們的代碼是否滿足某些標(biāo)準(zhǔn),是“安全的”、“健壯的”呢?此時(shí)我們就可以根據(jù)具體的應(yīng)用來(lái)查找相關(guān)的行業(yè)標(biāo)準(zhǔn)。舉個(gè)例子,在工業(yè)領(lǐng)域中,MISRA-C就是在的某些行業(yè)中要求遵守的行業(yè)標(biāo)準(zhǔn)。MISRA C是由汽車產(chǎn)業(yè)軟件可靠性協(xié)會(huì)(MISRA,motor industry software reliability association)提出的C語(yǔ)言開(kāi)發(fā)標(biāo)準(zhǔn)。其目的是在增進(jìn)嵌入式系統(tǒng)的安全性及可移植性。針對(duì)C++語(yǔ)言也有對(duì)應(yīng)的標(biāo)準(zhǔn)MISRA C++。MISRA C一開(kāi)始主要是針對(duì)汽車產(chǎn)業(yè):如果我們?nèi)⒓咏鼛啄甑挠嘘P(guān)汽車行業(yè)的基于自動(dòng)代碼生成技術(shù)和基于模型的設(shè)計(jì)技術(shù)的講座、研討會(huì)等等,無(wú)一例外都會(huì)聽(tīng)到有關(guān)MISRA-C 2004,甚至是MISRA-C 2008、MISRA-C 2012等更新版本的介紹。此外,其他產(chǎn)業(yè)也已經(jīng)逐漸開(kāi)始使用MISRA C:包括航空航天、電信、國(guó)防、醫(yī)療設(shè)備、鐵路等領(lǐng)域中都已有廠商使用MISRA C:這些領(lǐng)域無(wú)一不對(duì)代碼的規(guī)范,特別是代碼的安全有非常高的要求。MISRA C的第一版《Guidelines for the use of the C language in vehicle based software》是在1998年發(fā)行,一般稱為MISRA-C:1998.。MISRA-C:1998有127項(xiàng)規(guī)則,規(guī)則從1號(hào)編號(hào)到127號(hào),其中有93項(xiàng)是強(qiáng)制要求,其余的34項(xiàng)是推薦使用的規(guī)則。在2004年時(shí)發(fā)行了第二版的MISRA C的第一版《Guidelines for the use of the C language in critical systems》(或稱作MISRA-C:2004),其中有許多重要建議事項(xiàng)的變更,其規(guī)則也重新編號(hào)。MISRA-C:2004有141項(xiàng)規(guī)則,其中121項(xiàng)是強(qiáng)制要求,其余的20項(xiàng)是推薦使用的規(guī)則。規(guī)則分為21類,從“開(kāi)發(fā)環(huán)境”到“運(yùn)行期錯(cuò)誤”。通常認(rèn)為,如果能夠完全遵守這些標(biāo)準(zhǔn),則你的C代碼是易讀、可靠、可移植和易于維護(hù)的。最近很多嵌入式開(kāi)發(fā)者都以MISRA C來(lái)衡量自己的編碼風(fēng)格,比如著名的uC/OS-II就得意地宣稱自己99%遵守MISRA標(biāo)準(zhǔn)。目前有許多工具聲稱可以檢查代碼和MISRA規(guī)則相容性,不過(guò)MISRA沒(méi)有相關(guān)認(rèn)證的程序。相關(guān)工具可以幫助使用者評(píng)估和比較檢查的結(jié)果,也會(huì)提供一些可符合MISRA-C規(guī)定的指南,但是目前大部分的工具對(duì)靜態(tài)代碼分析的工具檢查基本能實(shí)現(xiàn),對(duì)動(dòng)態(tài)代碼分析則還不能完美實(shí)現(xiàn)。

考慮到MISRA-C:2004有141項(xiàng)規(guī)則,其中僅強(qiáng)制要求就有121項(xiàng),其余的20項(xiàng)是推薦使用的規(guī)則,顯然讓我們僅僅是把這么多規(guī)則瀏覽一遍就需要花費(fèi)大量的時(shí)間,更不用提手工對(duì)照規(guī)則來(lái)檢查我們的軟件了。幸好我們使用的DSP編程環(huán)境CCS提供了相應(yīng)的選項(xiàng),使得編譯器可以自動(dòng)檢查我們的代碼是否違反了MISRA-C的相關(guān)規(guī)則,并提供給我們?cè)敿?xì)的診斷與警告信息。

在C語(yǔ)言的標(biāo)準(zhǔn)ANSI C 和 ISO C之后,又產(chǎn)生了更新的C99以及最新的C11 (ISO/IEC 9899:2011),但是因?yàn)樽钚掳姹镜囊?guī)范從推出到各大編譯器廠家支持以及開(kāi)發(fā)者的適應(yīng)都需要一定的時(shí)間,所以目前最常用的仍然是ANSI C或者C99。與此類似, 雖然MISRA-C的標(biāo)準(zhǔn)最弱已經(jīng)有最新的2012,但是人們談?wù)摵褪褂米疃嗟娜匀皇?004版本,所以在CCS的編譯器選項(xiàng)里仍以MISRC-C:2004的規(guī)則為準(zhǔn)。

啟用了--check_misra={all|required|advisory|none|rulespec}的選項(xiàng)使能MISRC-C:2004規(guī)則檢查之后,還可以在代碼中可以配合相關(guān)的預(yù)處理指令使能某些代碼的檢查/停止檢查功能,包括:

#pragma CHECK_MISRA ("{all|required|advisory|none|rulespec}");

#pragma RESET_MISRA ("{all|required|advisory|rulespec}");

其中,CHECK_MISRA用來(lái)使能或者禁止對(duì)MISRC-C:2004規(guī)則的檢查,它的作用與--check_misra是一致的。RESET_MISRA則用來(lái)復(fù)位MISRC-C:2004規(guī)則檢查的狀態(tài)。

rulespec參數(shù)則可以用來(lái)指定我們使用哪些MISRC-C:2004中的哪些規(guī)則來(lái)進(jìn)行特點(diǎn)的檢查,包括:

[-]X 使能 (或者禁止) X主題下各個(gè)規(guī)則的檢查。(主題包括變量、字符、初始化等)

[-]X-Z 使能 (或者禁止) 從X到Z主題下各個(gè)規(guī)則的檢查

[-]X.A 使能 (或者禁止) X主題下規(guī)則A的檢查。

[-]X.A-C 使能 (或者禁止) X主題下從規(guī)則A到規(guī)則C的檢查。

舉例說(shuō)明:--check_misra=1-5,-1.1,8.2-4的含義是:

檢查從主題1到主題5的規(guī)則。(不清楚的網(wǎng)友可以去搜索MISRA規(guī)范,1.環(huán)境;2.語(yǔ)言擴(kuò)展;3.文檔;4.字符集;5.標(biāo)識(shí)符)

禁止規(guī)則1中1.1條目的規(guī)則(規(guī)則1.1(強(qiáng)制): 所有代碼都必須遵照ISO 9899:1990 “Programming languages - C”,由ISO/IEC 9899/COR1:1995,ISO/IEC 9899/AMD1:1995,和ISO/IEC9899/COR2:1996 修訂),規(guī)則1中的其它規(guī)則保持有效。

檢查主題8中的規(guī)則2到4.為了方便,我們可以列出這幾條規(guī)則的定義(其內(nèi)容較長(zhǎng),有興趣的網(wǎng)頁(yè)請(qǐng)?jiān)谒阉饕嬷袡z索):

主題8: 聲明與定義

規(guī)則8.2(強(qiáng)制): 不論何時(shí)聲明或定義了一個(gè)對(duì)象或函數(shù),它的類型都應(yīng)顯式聲明。

規(guī)則8.3(強(qiáng)制): 函數(shù)的每個(gè)參數(shù)類型在聲明和定義中必須是等同的,函數(shù)的返回類型也該是等同的。

規(guī)則8.4(強(qiáng)制): 如果對(duì)象或函數(shù)被聲明了多次,那么它們的類型應(yīng)該是兼容的。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉