<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 板載故障記錄原理解析

          板載故障記錄原理解析

          作者: 時間:2011-02-15 來源:網(wǎng)絡(luò) 收藏

          OBFL基線記錄的創(chuàng)建獨立于任何電路板故障。OBFL系統(tǒng)應(yīng)一直保持一個初始基線記錄和至少一個近期基線記錄。在完成對OBFL的系統(tǒng)現(xiàn)場配置、首次成功將電路板件投入使用之后,就會立即生成初始基線。首次創(chuàng)建近期基線記錄的時候,將使用初始基線記錄。創(chuàng)建近期基線記錄的目的,是為了獲取OBFL資源的近期值。隨后每次成功的電路板復(fù)位都會創(chuàng)建后續(xù)的基線。OBFL還會要求提供存檔的舊基線。任何穩(wěn)定的基線都會被標注為“優(yōu)良”基線,并在故障排查過程中用作參考基線。如果沒有優(yōu)良基線記錄,初級基線記錄將用作參考基線。

          基線記錄將獲取特定的軟硬件配置詳情,并存儲在非易失性存儲器中?;€記錄的硬件部分包括電路板配置數(shù)據(jù)詳情,如機架編號、電路板件的插槽號、序列號、子卡標識詳情、FPGA和ASIC修訂號等。該部分還應(yīng)該存儲諸如SRAM/SDRAM/DDR這樣的板載存儲器類型、序列號和配置詳細信息。BIOS版本、固件版本、OS詳情和應(yīng)用軟件版本應(yīng)存儲在軟件基線記錄下。該記錄在縮小由近期軟硬件升級造成的電路板故障范圍時非常有用。

          基線記錄的第三部分存儲電路板環(huán)境變量值。任一存儲的電路板環(huán)境變量都存放有近期的“N”個值,最大實際值和電路板環(huán)境變量的最低允許值。環(huán)境變量包括電路板電源部分參數(shù),如電壓、電流以及來自電路板上一個或者多個感應(yīng)器的溫度讀數(shù)。

          電路板環(huán)境變量的值定期采集、存儲為近期值,并同最大允許值進行比較。如果采集的值大于最大允許值,將采用當前的時間戳更新環(huán)境錯誤事件(Environment Error Event)記錄。此外,電路板一般有多個電壓源和溫度感應(yīng)器。溫度應(yīng)定期記錄(比如每隔30分鐘),而電壓數(shù)據(jù)可以不需這么頻繁(比如每隔60分鐘)。

          事件記錄

          OBFL事件記錄負責存儲由板載存儲器故障、系統(tǒng)復(fù)位、意外事件、中斷錯誤或者電路板環(huán)境錯誤導致的硬件故障事件跡象(如電路板崩潰)。OBFL事件記錄可以分為下列幾類:

          存儲錯誤:通常,SDRAM或者DDR錯誤分為可糾正的錯誤和不可糾正的致命錯誤兩種??杉m正錯誤可以通過存儲器中的其他硬件邏輯來查找并糾正單比特ECC錯誤來加以糾正。雖然這種錯誤不具有致命性,但它會給系統(tǒng)性能造成一定影響,因此記錄這種事件有助于排除系統(tǒng)性能錯誤。此外,記錄可糾正錯誤還可以就將來可能出現(xiàn)的致命錯誤提出告警。對于屬于不可糾正致命錯誤的多比特存儲錯誤,在事件日志中應(yīng)該登記錯誤地址位置、預(yù)計數(shù)據(jù)和其他存儲詳細信息。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();