您的位置:首頁>正文

ARM平臺資料為何會莫名其妙丟失

Nand-Flash/eMMC(帶有Flash控制器的Nand-Flash)作為一種非線性巨集單元模式記憶體, 為固態大型存放區的實現提供了廉價有效的解決方案。 Nand-Flash存儲器具有容量大, 改寫速度快等優點, 適用于大量資料的存儲, 因而越來越廣泛地應用在如嵌入式產品、智慧手機、雲端存儲資料庫等業界各領域。

圖1 Nand-Flash與eMMC晶片

1.1記憶體件使用壽命

使用了Nand-Flash的主機板出現丟資料掉程式現象, 是一個讓無數工程師毛骨悚然的事故。 眼看著程式用著用著就消失了, 只能幹著急也無法下手。 有經驗的工程師手起刀落換上一顆新物料, 熬夜補代碼繼續撐過半個項目週期。

回頭無處發洩還要大刀闊斧換廠商、換品牌。 與其換幾片Nand-Flash還能負擔得起, 但畢竟這是一個無底洞, 不如去深入探明問題原因, 不然散盡家財也無法彌補虧空。

器件資料手冊中通常描述Nand-Flash的塊擦寫壽命達10萬次, EMMC的塊擦寫最高也會有1萬次;同理, EEPROM、SD卡、CF卡、U盤、Flash硬碟等存儲介質在都存在寫壽命的問題。 在檔案系統向寫資料的底層記憶體塊寫資料時, 常規會先將塊裡的資料讀出來, 擦除塊乾淨後, 將需要寫入的資料和之前讀出來的塊資料一起在回寫到記憶體裡面去, 如果檔案系統寫平衡沒有處理好, 特別是要求1分鐘以內要記錄一次資料這樣頻繁的擦寫塊操作, 就有可能將Nand-Flash或EMMC的塊寫壞。

1.2記憶體件掉電丟資料

檔案系統向記憶體寫資料時, 常規是先將塊裡的資料讀出來, 擦除塊乾淨後, 將需要寫入的資料和之前讀出來的塊資料一起在回寫到記憶體裡面去。 如果設備在擦除塊過程中或者在回寫資料過程中意外發生斷電甚至電壓不穩定, 均會造出資料丟失或者損壞。 如果丟失的資料是檔案系統的FAT表, 則會造成檔案系統崩潰。 這就是引起系統程式無法啟動災難性後果的原因。

1.3系統資料保護方案

很多時候, 產品在未出廠前燒錄程式、反復測試, 無論怎樣折騰也不會出現丟程式的情況。 這可能的因素是測試設備保證了穩定的運行中電源輸出, 因此系統運行中正常的Flash保護機制是可靠執行的。

相對於用戶實際使用而言,

想避免Flash損壞的情況。 需要嚴格遵守產品說明使用, 尤其注意避免在Flash擦除或寫入過程中人為地突然掉電。 這是記憶體件用法的一個大忌, 即使完好的器件, 如此不規範的使用也會大大縮短其壽命。 而且不同環境下的電源系統五花八門, 在電源不滿足功率要求情況下程式對於電源低電量的檢測閾值較低, 此時強制啟動系統或執行寫操作更會加劇系統耗電波動, 巨大的紋波也會引起CPU對存儲的誤操作。

解決此問題對於軟體方面而言:

調試系統或現場使用時, 建議使用軟體重定, 避免人為頻繁的通過斷電實現復位操作;有斷電必要時, 將列印資訊添加如“系統載入完成”、“資料保存完畢”等指示說明後操作;

軟體採取Flash均衡保存演算法,

高效地調整更改資料時擦除的Flash區域大小;

可將資料先寫入記憶體或者鐵電記憶體, 然後定期的再將資料搬移到大的記憶體裡面, 減少直接斷Nand-Flash、EMMC擦寫次數;

在程式中加入或者提高電源電量檢測的閾值, 程式上保證所有電源系統下的晶片在此閾值上均可以正常工作。

讀寫過程中仔細對壞塊表進行維護更新, 避免程式寫入壞塊。 讀取資料時對ECC校驗, 確保讀取資料無誤。

從硬體角度考慮需要注意:

用法上避免在Flash擦除或寫入過程中人為突然掉電;

設計好處理控制核心的電源系統, 防止CPU等在啟動、運行中, 電源系統因暫態變化引起的紋波等情況;

搭配掉電檢測電路, 在檢測到外部電源掉電的同時, 及時迅速關閉檔案系統,

停止向檔案系統內寫資料的操作;

添加檔案系統電源域UPS電源, 乃至整機掉電續航工作電源;

對於使用EEPROM等小容量存儲的使用者而言, 可以考慮使用高可靠性的鐵電材料加工製成的鐵電非易失性記憶體FRAM來替換。 FRAM可以像RAM一樣快速讀寫。 資料在掉電後可以保存10年, 且其讀寫壽命高達100億次, 比EEPROM和其他非易失性記憶體系統可靠性更高, 結構更簡單, 功耗低等優點。

圖2 鐵電材料非易失性記憶體

下面簡介一款基於法拉電容的UPS電路設計思路, 要點如下:

l由於電容存在個體差異, 電容存儲電荷的速率不一樣, 存在過充造成電壓超過耐壓值的問題, 電路中存在多顆法拉電容時需要做均壓處理;

為保證電容能夠充滿電能, 源端需採用恒流源充電;

為維持電容電壓穩定,並降低充電電路功耗,需增加過壓檢測電路;

若對電壓高於法拉電容本身電壓上限的電源系統提供掉電續航時,Vcc_backu端需通過BOOST升壓電路後以實現,且注意系統正常時(充電過程中)關斷EN腳。

圖3 基於法拉電容的UPS核心電路

系統電源正常時,充電電路即給UPS充電。系統電源掉電時,UPS放電給系統提供備用電能,建議UPS在掉電後能持續給檔案系統供電能力不低於10秒,在10秒續航期間內,系統可以將電源異常狀態上報、及時保持臨時重要資料、關閉檔案系統,保證系統穩定性,避免檔案系統在掉電情況下出現損害,影響應用程式的正常啟動。

圖4 建議UPS充放電時序

此外系統掉電情況需要掉電檢測電路實現。使用一顆比較器器件即可,注意使用Output_VCC端供電,以確保外部掉電時,比較器仍然可以工作。比較器負端連接一個參考電壓,參考電壓由穩壓二極體提供。正常供電時,比較器輸出電壓由升壓電路的回饋端分壓決定;掉電時,比較器輸出低電平,此時處理器仍未掉電,收到狀態資訊可及時回應處理。另一路掉電檢測可供其它功能使用。

圖6系統掉電檢測電路

1.4工控行業領導品牌

在ARM內核核心板、開發板、工控機等領域,M6708核心板、M/A335x核心板、M/A28x核心板、EPC系列工控主機板、IoT系列無線主機板/閘道、DCP系列經典工控機等產品中,核心板產品針對Nand-Flash有著完善的壞塊管理、工控主機板添加掉電保護等措施。例如分別在WinCE與Linux系統下加固Flash驅動、對作業系統進行雙備份;軟體與硬體信號測試對Flash進行10萬次掉電試驗等。

同時,致遠電子配備專業的EMC實驗室、安規實驗室、環境實驗室等可實際模擬惡劣應用狀況試驗。結合優質供應商保證各產品分立器件均達到EMC工業三級標準,有良好的靜電抗性、雷擊浪湧抗性、電瞬變群脈衝抗性、以及極低的EMI傳導騷擾情況;可實現-40℃~+85℃的工業級環境適應性。為從Flash至整套目標系統的可靠性安全穩定提供切實保障。

源端需採用恒流源充電;

為維持電容電壓穩定,並降低充電電路功耗,需增加過壓檢測電路;

若對電壓高於法拉電容本身電壓上限的電源系統提供掉電續航時,Vcc_backu端需通過BOOST升壓電路後以實現,且注意系統正常時(充電過程中)關斷EN腳。

圖3 基於法拉電容的UPS核心電路

系統電源正常時,充電電路即給UPS充電。系統電源掉電時,UPS放電給系統提供備用電能,建議UPS在掉電後能持續給檔案系統供電能力不低於10秒,在10秒續航期間內,系統可以將電源異常狀態上報、及時保持臨時重要資料、關閉檔案系統,保證系統穩定性,避免檔案系統在掉電情況下出現損害,影響應用程式的正常啟動。

圖4 建議UPS充放電時序

此外系統掉電情況需要掉電檢測電路實現。使用一顆比較器器件即可,注意使用Output_VCC端供電,以確保外部掉電時,比較器仍然可以工作。比較器負端連接一個參考電壓,參考電壓由穩壓二極體提供。正常供電時,比較器輸出電壓由升壓電路的回饋端分壓決定;掉電時,比較器輸出低電平,此時處理器仍未掉電,收到狀態資訊可及時回應處理。另一路掉電檢測可供其它功能使用。

圖6系統掉電檢測電路

1.4工控行業領導品牌

在ARM內核核心板、開發板、工控機等領域,M6708核心板、M/A335x核心板、M/A28x核心板、EPC系列工控主機板、IoT系列無線主機板/閘道、DCP系列經典工控機等產品中,核心板產品針對Nand-Flash有著完善的壞塊管理、工控主機板添加掉電保護等措施。例如分別在WinCE與Linux系統下加固Flash驅動、對作業系統進行雙備份;軟體與硬體信號測試對Flash進行10萬次掉電試驗等。

同時,致遠電子配備專業的EMC實驗室、安規實驗室、環境實驗室等可實際模擬惡劣應用狀況試驗。結合優質供應商保證各產品分立器件均達到EMC工業三級標準,有良好的靜電抗性、雷擊浪湧抗性、電瞬變群脈衝抗性、以及極低的EMI傳導騷擾情況;可實現-40℃~+85℃的工業級環境適應性。為從Flash至整套目標系統的可靠性安全穩定提供切實保障。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示