日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > strongerHuang
[導(dǎo)讀]C語言的標(biāo)準(zhǔn)有很多,之前給大家分享過相關(guān)的內(nèi)容,比如:C89、C99標(biāo)準(zhǔn),ANSI C、ISO C、Standard C標(biāo)準(zhǔn)等。


編排 | strongerHuang

微信公眾號 | 嵌入式專欄

C語言的標(biāo)準(zhǔn)有很多,之前給大家分享過相關(guān)的內(nèi)容,比如:C89、C99標(biāo)準(zhǔn),ANSI C、ISO C、Standard C標(biāo)準(zhǔn)等。

可能你在一些地方還看到過:MISRA C:2012,MISRA C++:2008,那你知道這是什么嗎?

今天分享的就是另外一種C語言標(biāo)準(zhǔn):MISRA C.

嵌入式專欄

1

MISRA C

MISRA C是由汽車產(chǎn)業(yè)軟件可靠性協(xié)會(MISRA)提出的C語言開發(fā)標(biāo)準(zhǔn)。

其目的是在增進(jìn)嵌入式系統(tǒng)的安全性及可移植性,針對C++語言也有對應(yīng)的標(biāo)準(zhǔn)MISRA C++。

MISRA C一開始主要是針對汽車產(chǎn)業(yè),不過其他產(chǎn)業(yè)也逐漸開始使用MISRA C:包括航天、電信、國防、醫(yī)療設(shè)備、鐵路等領(lǐng)域中都已有廠商使用MISRA C。

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號編號到127號,其中有93項(xiàng)是強(qiáng)制要求,其余的34項(xiàng)是推薦使用的規(guī)則。

在2004年時發(fā)行了第二版的MISRA C的第一版《Guidelines for the use of the C language in critical systems》(或稱作MISRA-C:2004),其中有許多重要建議事項(xiàng)的變更,其規(guī)則也重新編號。MISRA-C:2004有141項(xiàng)規(guī)則,其中121項(xiàng)是強(qiáng)制要求,其余的20項(xiàng)是推薦使用的規(guī)則。規(guī)則分為21類,從“開發(fā)環(huán)境”到“運(yùn)行期錯誤”。

2012年發(fā)布第三版,為當(dāng)前最新有效的C語言規(guī)范版本,稱為MISRA C:2012。
MISRA C 版本歷史

MISRA版本

發(fā)布年份

C語言版本

指令 數(shù)量

規(guī)則 數(shù)量

指南 總數(shù)

1998

1998

C90

不詳

127

不詳

2004

2004

C90

不詳

142

不詳

2012

2012

C99

16

143

159

2012 AMD-1

2016

C99

17

156

173

2012 AMD-2

2020

C11

17

158

175


嵌入式專欄

2

MISRA C:2012(修訂版2)

當(dāng)前最新有效的C語言規(guī)范版本為MISRA C:2012,下面來講講其修訂版2。

MISRA C工作組發(fā)布了對MISRA C:2012的修訂版,以支持稱為“C11”的C標(biāo)準(zhǔn),并正式批準(zhǔn)為ISO/IEC 9899:2011。C11已得到廣泛使用,對于一直推遲遷移到C11的項(xiàng)目和組織,這是一個廣受歡迎的公告。C11還取代了C99(標(biāo)準(zhǔn)ISO/IEC 9899:1999),并已被C18(標(biāo)準(zhǔn)ISO/IEC 9899:2018)取代。除了更新的C語言準(zhǔn)則之外,MISRA C工作組還發(fā)布了MISRA 2020合規(guī)性指南。

MISRA C:2012(修訂版2)現(xiàn)在引用ISO/IEC 9899:2011,并包含C語言更新,為可能使用但受限制的功能和受禁止的功能提供指導(dǎo),除非其存在您的團(tuán)隊(duì)軟件審查過程已批準(zhǔn)的偏差。在制定修訂版2的過程中,還獲得了利用先前的補(bǔ)充內(nèi)容糾正任何已知問題的機(jī)會。MISRA工作組的任務(wù)不止是提供指導(dǎo),以防止發(fā)生不可預(yù)測的行為,減少或消除編碼缺陷并在嵌入式軟件系統(tǒng)的環(huán)境中促進(jìn)代碼安全、安全性、可移植性和可靠性。

新的MISRA C:2012標(biāo)準(zhǔn):

添加了適用于C11中新功能的新MISRA規(guī)則的一個示例,即規(guī)則1.4,“不得使用緊急語言功能?!?如果使用設(shè)施和_Thread_local存儲類說明符,則可能是這種情況的一個實(shí)例。該規(guī)則將使用違反類別類型“必需”標(biāo)記C11語言結(jié)構(gòu)。
C11標(biāo)準(zhǔn)化了可能在多核平臺上運(yùn)行的多線程程序的語義,以及使用原子變量的輕量級線程間通信。使用線程本地的全局內(nèi)存,其中已標(biāo)識出未定義和未指定行為的實(shí)例,包括未滿足預(yù)期的已定義行為。
向前邁進(jìn)并符合MISRA C:2012(修訂版2),如果我使用_Thread_local,不僅需要進(jìn)行偏離,而且還需要采取保證措施來解決危害安全性的行為。


_Generic關(guān)鍵字是另一個不應(yīng)使用的C11語言新功能,它可能表現(xiàn)出不良行為,并且一些人發(fā)現(xiàn)C11標(biāo)準(zhǔn)在某些情況下含糊不清。_Generic運(yùn)算符是一種宏重載。它用于幫助程序員將任何宏都用作通用宏,以使其更高效。下面的代碼行顯示_Generic關(guān)鍵字如何用于聲明不同類型的數(shù)據(jù)類型的任何宏,以及如何將其聲明為不同方法的泛型。以下面的VOL宏示例為例;VOL(x)根據(jù)x的類型轉(zhuǎn)換為VOLc(x),VOLl(x),VOL(x)或VOLf(x)。

#define VOL(x) _Generic((x), char: VOLc, long double: VOLl, default: VOL, float: VOLf)(x) 

安全編碼 安全漏洞的一個常見原因是使用了中定義的標(biāo)準(zhǔn)庫函數(shù)系統(tǒng)。MISRA C:2012(修訂版2)添加了新的規(guī)則21.21,該規(guī)則規(guī)定不得使用標(biāo)準(zhǔn)庫函數(shù)系統(tǒng)。系統(tǒng)調(diào)用是一個阻塞函數(shù),用于執(zhí)行子進(jìn)程和命令,等待子進(jìn)程終止并返回其退出值。認(rèn)識到原型為“int系統(tǒng)(const char *command);”不需要是單個命令,而可以是一個管道或一系列管道。(例如,系統(tǒng)("pngtopnm \"My Picture.png\" | pnmtoxwd > fout.xwd && xwud fout.xwd");)由于可變命令是由用戶提供的數(shù)據(jù)構(gòu)成的,因此攻擊者可能會發(fā)現(xiàn) 引用并在父級上下文中執(zhí)行任意命令。一些建議的措施可能是利用預(yù)定的命令字符串或一起繞開系統(tǒng)調(diào)用,而使用spawn代替。
合規(guī)報(bào)告 對于聲稱符合MISRA的要求,有一些書面指南,這些指南在過去的幾年中不斷完善和修訂。本文檔的最新版本是MISRA Compliance 2020,它于2月發(fā)布。從較高的角度來看,適當(dāng)報(bào)告了使用良好的軟件開發(fā)過程的使用情況,準(zhǔn)確地應(yīng)用了哪些指南以及執(zhí)行方法的有效性的列表,包括偏差的程度或程度,以及為了聲稱MISRA符合要求,必須考慮到項(xiàng)目外開發(fā)的所有軟件組件的狀態(tài)。Parasoft DTP提供了專用的報(bào)告擴(kuò)展,完全符合MISRA Compliance標(biāo)準(zhǔn)的要求。DTP將指導(dǎo)您完成構(gòu)建準(zhǔn)則執(zhí)行計(jì)劃(GEP)和準(zhǔn)則重新分類計(jì)劃(GRP)的過程,并自動生成準(zhǔn)則合規(guī)摘要(GCS)以及已批準(zhǔn)偏差的完整列表。自動化報(bào)告消除了繁瑣的手工工作,使組織能夠遵循MISRA編碼準(zhǔn)則現(xiàn)在強(qiáng)制執(zhí)行的合規(guī)性流程。
最后
還有其他新的MISRA C:2012(修訂版2)規(guī)則,例如_Noreturn函數(shù)說明符、_Atomic類型說明符、_Alignas對齊說明符和_Alignof運(yùn)算符,非常引人注目。使用這些類型說明符將觸發(fā)類別“必需的違規(guī)”,并且將不被使用,從而解決了C11覆蓋和安全漏洞的問題。此外,還進(jìn)行了許多修訂版2更新和文本替換,以澄清和改進(jìn)標(biāo)準(zhǔn)。同樣,再次提醒您非常重要的一點(diǎn)是,與該標(biāo)準(zhǔn)一起,用戶現(xiàn)在可以遵循MISRA Compliance 2020指南的強(qiáng)制性和補(bǔ)充性法規(guī)遵循版本。感謝MISRA工作組繼續(xù)做出色的工作,并為軟件界做出了巨大貢獻(xiàn)。



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

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

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