0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何對(duì)長(zhǎng)期運(yùn)行的嵌入式設(shè)備采取軟錯(cuò)誤保護(hù)呢?

麥克泰技術(shù) ? 來源:麥克泰技術(shù) ? 2024-03-25 13:57 ? 次閱讀

所謂軟錯(cuò)誤,指的是由物理效應(yīng)引起的數(shù)據(jù)偏差,受影響的內(nèi)存單元并沒有被破壞,系統(tǒng)重啟后此錯(cuò)誤會(huì)被修復(fù),我們將這種軟錯(cuò)誤的發(fā)生稱為單粒子翻轉(zhuǎn)(SEU)。

應(yīng)用中的軟錯(cuò)誤?

軟錯(cuò)誤在應(yīng)用中以特定的頻率存在,這種軟件錯(cuò)誤率(SER)取決于很多環(huán)境和技術(shù)參數(shù)。

一個(gè)長(zhǎng)期運(yùn)行的工業(yè)設(shè)備,假設(shè)系統(tǒng)中集成了一個(gè)2MB SRAM,已連續(xù)運(yùn)行20年,以每位小時(shí)1e-12個(gè)錯(cuò)誤的SER,我們可以計(jì)算:

1e-12errors/bit*h*2Mbyte*8bit/byte*175.200h = 2.9 errors

我們意識(shí)到,對(duì)于長(zhǎng)期運(yùn)行的安全關(guān)鍵系統(tǒng)來說,這不僅僅是一個(gè)物理理論,我們很有可能會(huì)因?yàn)橐粋€(gè)軟錯(cuò)誤而失去安全功能!

這是不可接受的。我們必須避免或至少能檢測(cè)長(zhǎng)期運(yùn)行的工業(yè)設(shè)備中的軟錯(cuò)誤。

越來越多的軟錯(cuò)誤

為理解、檢測(cè)或糾正硬件中的這些軟錯(cuò)誤,許多研究正在進(jìn)行。根據(jù)Tezzaron的論文,組件對(duì)錯(cuò)誤率的敏感性將隨著以下情況上升:

· 復(fù)雜性的增加將提升錯(cuò)誤率

· 高密度(高容量)芯片更容易出錯(cuò)

· 低壓設(shè)備更容易出錯(cuò)

· 更高的速度(較低的延遲)導(dǎo)致更高的錯(cuò)誤率

· 較低的電池容量(存儲(chǔ)電荷較少)將導(dǎo)致較高的錯(cuò)誤率

這些情況匹配嵌入式市場(chǎng)的當(dāng)前發(fā)展趨勢(shì),我們應(yīng)該讓系統(tǒng)為越來越多的軟錯(cuò)誤做好準(zhǔn)備。

硬件措施

在航空航天和衛(wèi)星系統(tǒng)使用的一些輻射加固硬件組件具有高度的SEU免疫力,但如果在工業(yè)應(yīng)用中使用這些組件,系統(tǒng)成本將超過可接受的限度。

可以使用為解決IT服務(wù)器內(nèi)存錯(cuò)誤設(shè)計(jì)的chipkill技術(shù),該技術(shù)基于冗余機(jī)制。

硬件供應(yīng)商也意識(shí)到了這一挑戰(zhàn)。在過去的幾年里,已經(jīng)發(fā)布了幾款帶有軟錯(cuò)誤緩解技術(shù)的微控制器。

ECC內(nèi)存保護(hù)

ECC內(nèi)存設(shè)備使用糾錯(cuò)碼來存儲(chǔ)數(shù)據(jù),這些編碼被歸類為SEC-DED。該方法基于漢明編碼,可以發(fā)現(xiàn)2位錯(cuò)誤,糾正1位錯(cuò)誤。

當(dāng)使用ECC保護(hù)內(nèi)存時(shí),軟件在啟動(dòng)期間只需要少量操作。系統(tǒng)上電后,我們必須將內(nèi)存初始化為已知狀態(tài)。否則,會(huì)收到ECC錯(cuò)誤的通知,而ECC錯(cuò)誤實(shí)際上是內(nèi)存單元的隨機(jī)內(nèi)容。之后,硬件在常規(guī)操作中透明地修復(fù)軟錯(cuò)誤。大多數(shù)ECC內(nèi)存提供修復(fù)通知,我們用它來監(jiān)控內(nèi)存。

有了這種優(yōu)秀的硬件支持,我們已經(jīng)為軟錯(cuò)誤做好了充分的準(zhǔn)備。

軟件措施

基于系統(tǒng)或硬件工程原因,我們需為沒有硬件機(jī)制的系統(tǒng)準(zhǔn)備軟件,例如:使用的控制器不支持ECC內(nèi)存,或者我們需要沒有ECC的外部?jī)?nèi)存。

我們建議在項(xiàng)目中針對(duì)軟錯(cuò)誤敏感執(zhí)行數(shù)據(jù)存儲(chǔ)分析,這種分析有助于決定對(duì)數(shù)據(jù)存儲(chǔ)使用哪種措施來避免、恢復(fù)或檢測(cè)軟錯(cuò)誤,分析內(nèi)容包含:

· 使用的內(nèi)存數(shù)量(使用的內(nèi)存越多,軟錯(cuò)誤概率越高)

· 數(shù)據(jù)壽命(壽命越長(zhǎng),出現(xiàn)軟錯(cuò)誤的概率越高)

· 軟錯(cuò)誤導(dǎo)致的最壞情況系統(tǒng)行為(影響越嚴(yán)重,我們需要的錯(cuò)誤檢出率越高)

在這種分析中,未使用的內(nèi)存單元中的軟錯(cuò)誤是可以接受的。通過這種方法,我們保持了盡可能高的性能和可用性,同時(shí)保護(hù)系統(tǒng)免受軟錯(cuò)誤的影響。存儲(chǔ)數(shù)據(jù)可以分類為:

· 常量數(shù)據(jù)(如操作碼、配置表)

· 枚舉數(shù)據(jù)(如系統(tǒng)狀態(tài)和模式)

· 動(dòng)態(tài)數(shù)據(jù)(如過程值)

· 臨時(shí)數(shù)據(jù)(如局部變量,不斷刷新內(nèi)存)

歸類為臨時(shí)數(shù)據(jù)的變量是非關(guān)鍵的,可以在沒有進(jìn)一步保護(hù)措施的情況下保持不變。因此,從獨(dú)立數(shù)據(jù)源周期性更新數(shù)據(jù)是一個(gè)很好的策略。

9aded032-e800-11ee-a297-92fbcf53809c.png

常量數(shù)據(jù)保護(hù)

為了保護(hù)內(nèi)存中的常量數(shù)據(jù)(如應(yīng)用操作碼或配置表),我們計(jì)算數(shù)據(jù)的哈希值,并使用存儲(chǔ)的預(yù)期值檢查結(jié)果。

保護(hù)的強(qiáng)度取決于哈希值中使用的比特位數(shù)。最常用的是CRC32算法。哈希碰撞是兩個(gè)不同的常量數(shù)據(jù)內(nèi)存映像可能產(chǎn)生相同的哈希值的效應(yīng)。杰夫·普雷辛提供了一份關(guān)于碰撞概率的概述。隨著常量數(shù)據(jù)內(nèi)存中字節(jié)數(shù)的增加,CRC32碰撞的概率也會(huì)增加。對(duì)于實(shí)際項(xiàng)目,這導(dǎo)致了諸如“CRC32最多可以保護(hù)4096字節(jié)”這樣的限制(字節(jié)的數(shù)量取決于安全完整性級(jí)別)。

因此,更好的選擇是支持32位到1024位可變長(zhǎng)度的FVN-Hash值,這是一種快速高效的計(jì)算哈希值的方法,下面的偽代碼顯示了算法:

9ae975be-e800-11ee-a297-92fbcf53809c.png

offset_basis和FNV_prime為固定值,取決于hash值的位寬度。

枚舉數(shù)據(jù)保護(hù)

我們?cè)诖鎯?chǔ)枚舉數(shù)據(jù)時(shí)避免使用“1、2、3,…”這樣的值,因?yàn)橐淮挝环D(zhuǎn)可以將有效數(shù)據(jù)更改為其它的有效值,我們沒有辦法檢測(cè)到這個(gè)位翻轉(zhuǎn)。

我們可以選擇特定的值,確保一次位翻轉(zhuǎn)的結(jié)果是無效值。如果需要至少兩次位翻轉(zhuǎn)才能將一個(gè)有效值更改為另一個(gè)有效值,我們將選擇稱為:“漢明距離(HD)為2的值?!?/p>

HD =不同位的數(shù)量

實(shí)際項(xiàng)目中,我們選擇漢明距離為4的值。參見以下十六進(jìn)制字節(jié)值:

9afca148-e800-11ee-a297-92fbcf53809c.png

理論上,我們可以通過搜索具有最小漢明距離的值來糾正單個(gè)位翻轉(zhuǎn)。這個(gè)值很可能是正確的值。

以0x3c為例,假設(shè)位1翻轉(zhuǎn)-我們得到0x3e。首先,這是一個(gè)無效值。其次,我們可以檢查該值到所有有效數(shù)據(jù)的漢明距離(在下面的括號(hào)中):

9b0d21d0-e800-11ee-a297-92fbcf53809c.png

如果只有1位翻轉(zhuǎn)得到0x3e,最低HD的值是0x3c為正確的值。事實(shí)上,我們不知道有多少比特被翻轉(zhuǎn)了。這是被分類很可能正確的原因。

我們對(duì)安全關(guān)鍵軟件中最有可能正確(most likely)的值不滿意。出于這個(gè)原因,我們通常會(huì)提出一個(gè)安全異常,即關(guān)閉或重啟設(shè)備。

動(dòng)態(tài)數(shù)據(jù)保護(hù)

對(duì)于動(dòng)態(tài)數(shù)據(jù),任何值都是有效值。我們必須添加冗余來檢測(cè)值的變化(如位翻轉(zhuǎn))。一個(gè)簡(jiǎn)單的方法是將變量鏡像存儲(chǔ)在不同的內(nèi)存區(qū)域中。實(shí)現(xiàn)偽代碼如下:

9b17fd76-e800-11ee-a297-92fbcf53809c.png

我們現(xiàn)在可以在任何時(shí)候用引入的冗余檢查動(dòng)態(tài)變化的變量:

9b22b31a-e800-11ee-a297-92fbcf53809c.png

注意:當(dāng)使用中斷、多線程環(huán)境、DMA傳輸、數(shù)據(jù)緩存或多處理器設(shè)備時(shí),這段偽代碼會(huì)變得復(fù)雜(并需要運(yùn)行時(shí)間)。

總結(jié)

我們討論了對(duì)長(zhǎng)期運(yùn)行的嵌入式設(shè)備采取軟錯(cuò)誤保護(hù)措施的必要性。

廣泛使用的硬件和軟件措施概述包括:

· 內(nèi)存設(shè)備的ECC保護(hù)

· 常量數(shù)據(jù)內(nèi)存的哈希值

· 枚舉值的漢明距離

· 動(dòng)態(tài)數(shù)據(jù)內(nèi)存的冗余

所有措施可以分類到哈希值、漢明碼和冗余三個(gè)大類,這是自檢測(cè)算法和系統(tǒng)可信性監(jiān)測(cè)中使用的三個(gè)主要測(cè)量方法。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7459

    瀏覽量

    150859
  • 多處理器
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    8905
  • 嵌入式設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    110

    瀏覽量

    16925
  • 十六進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    32

    瀏覽量

    37675
  • CRC32
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    8203

原文標(biāo)題:如何對(duì)長(zhǎng)期運(yùn)行的嵌入式設(shè)備采取軟錯(cuò)誤保護(hù)

文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式編程錯(cuò)誤處理機(jī)制設(shè)計(jì)

    本文主要總結(jié)嵌入式系統(tǒng)C語(yǔ)言編程中,主要的錯(cuò)誤處理方式。文中涉及的代碼運(yùn)行環(huán)境如下。
    發(fā)表于 04-28 09:59 ?733次閱讀
    <b class='flag-5'>嵌入式</b>編程<b class='flag-5'>錯(cuò)誤</b>處理機(jī)制設(shè)計(jì)

    嵌入式系統(tǒng)中的外設(shè)是什么?

    的外圍設(shè)備的功能,真正達(dá)到以代硬的目的。外設(shè)的出現(xiàn)給產(chǎn)品的開發(fā)帶來了極大的靈活性,不但使系統(tǒng)體積變得更小,而且使系統(tǒng)的升級(jí)換代變得更為方便,從而真正實(shí)現(xiàn)SOC。本文介紹外設(shè)的設(shè)計(jì)
    發(fā)表于 09-17 06:59

    如何構(gòu)造運(yùn)行良好的嵌入式設(shè)備的驅(qū)動(dòng)程序?

    嵌入式系統(tǒng)需要支持的外部設(shè)備種類繁多,如何構(gòu)造運(yùn)行良好的嵌入式設(shè)備的驅(qū)動(dòng)程序,對(duì)嵌入式操作系統(tǒng)的
    發(fā)表于 09-25 07:44

    為什么將編譯好的程序在嵌入式設(shè)備運(yùn)行的時(shí)候報(bào)錯(cuò)

    目錄問題敘述解決方法chmod用法詳解語(yǔ)法問題敘述在虛擬機(jī)上使用對(duì)應(yīng)交叉編譯工具鏈編譯過的程序按道理來說應(yīng)該可以在嵌入式Ubuntu設(shè)備運(yùn)行了,但是我在將編譯好的程序在嵌入式
    發(fā)表于 12-21 06:44

    嵌入式PLC技術(shù)具有哪些優(yōu)點(diǎn)

    嵌入式PLC技術(shù)是什么?嵌入式PLC技術(shù)具有哪些優(yōu)點(diǎn)?
    發(fā)表于 12-24 07:48

    什么是嵌入式?嵌入式設(shè)備有哪些

    什么是嵌入式?嵌入式設(shè)備有哪些?
    發(fā)表于 12-24 07:47

    什么是嵌入式Linux?

    Linux到底是什么? 嵌入式linux 是將日益流行的Linux操作系統(tǒng)進(jìn)行裁剪修改,使之能在嵌入式計(jì)算機(jī)系統(tǒng)上運(yùn)行的一種操作系統(tǒng)。簡(jiǎn)單來說,是除了電腦之外可以
    發(fā)表于 10-11 13:47

    如何在嵌入式設(shè)備運(yùn)行高性能Java

    如何在嵌入式設(shè)備運(yùn)行高性能Java
    發(fā)表于 03-28 09:43 ?16次下載

    嵌入式PLC系統(tǒng)的研究和實(shí)現(xiàn)

    介紹嵌入式PLC 硬件設(shè)計(jì)平臺(tái)和軟件設(shè)計(jì)平臺(tái),利用梯形圖、硬件接口映射及模塊化設(shè)計(jì)技術(shù)開發(fā)面向工業(yè)控制嵌入式PLC系統(tǒng)。PLC 系統(tǒng)由
    發(fā)表于 04-25 10:22 ?37次下載

    基于ARM嵌入式系統(tǒng)PLC的研究

    嵌入式PLC是嵌入式系統(tǒng)與PLC相結(jié)合的產(chǎn)物,PLc作為一個(gè)嵌入式應(yīng)用程序
    發(fā)表于 09-01 11:53 ?18次下載
    基于ARM<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>軟</b>PLC的研究

    嵌入式PLC核的通用保護(hù)平臺(tái)設(shè)計(jì)

    提出了基于嵌入式PLC核的通用配網(wǎng)保護(hù)平臺(tái)設(shè)計(jì)方案。針對(duì)傳統(tǒng)保護(hù)軟件編程靈活性差,現(xiàn)場(chǎng)可配置能力弱的問題,在分析嵌入式PLC
    發(fā)表于 01-17 16:03 ?0次下載
    <b class='flag-5'>嵌入式</b>PLC<b class='flag-5'>軟</b>核的通用<b class='flag-5'>保護(hù)</b>平臺(tái)設(shè)計(jì)

    如何實(shí)現(xiàn)嵌入式PLC系統(tǒng)的研究與應(yīng)用

    嵌入式PLC硬件設(shè)計(jì)平臺(tái)和軟件設(shè)計(jì)平臺(tái),利用梯形圖,硬件接口映射及模塊化設(shè)計(jì)技術(shù)開發(fā)面向工業(yè)控制嵌入式PLC系統(tǒng)。PLC系統(tǒng)由開發(fā)系統(tǒng)
    發(fā)表于 06-16 17:40 ?18次下載
    如何實(shí)現(xiàn)<b class='flag-5'>嵌入式</b><b class='flag-5'>軟</b>PLC系統(tǒng)的研究與應(yīng)用

    基于CoDeSys的嵌入式PLC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于CoDeSys的嵌入式PLC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(嵌入式開發(fā)發(fā)展前景)-該文檔為基于CoDeSys的嵌入式PLC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)總結(jié)文檔,是
    發(fā)表于 07-30 16:58 ?44次下載
    基于CoDeSys的<b class='flag-5'>嵌入式</b><b class='flag-5'>軟</b>PLC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    嵌入式PLC系統(tǒng)的研究和實(shí)現(xiàn)

    嵌入式PLC系統(tǒng)的研究和實(shí)現(xiàn)(嵌入式開發(fā)武漢)-該文檔為嵌入式PLC系統(tǒng)的研究和實(shí)現(xiàn)總結(jié)文檔,是一份很不錯(cuò)的參考資料,具有較高參考價(jià)值,
    發(fā)表于 08-04 10:59 ?4次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟</b>PLC系統(tǒng)的研究和實(shí)現(xiàn)

    嵌入式linux設(shè)備中應(yīng)用運(yùn)行日志的實(shí)現(xiàn)

    嵌入式linux設(shè)備中應(yīng)用運(yùn)行日志的實(shí)現(xiàn)? ? ? 最近在做一個(gè)項(xiàng)目時(shí),需要記錄設(shè)備運(yùn)行中情況,以方便對(duì)故障進(jìn)行跟蹤定位,完善.所以決定采用
    發(fā)表于 11-01 17:22 ?8次下載
    <b class='flag-5'>嵌入式</b>linux<b class='flag-5'>設(shè)備</b>中應(yīng)用<b class='flag-5'>運(yùn)行</b>日志的實(shí)現(xiàn)