數(shù)據(jù)存儲在非易失性存儲器中
出處:維庫電子市場網(wǎng) 發(fā)布于:2023-03-07 16:44:07
盡管閃存和其他非易失性存儲器技術(shù)被廣泛用于實現(xiàn)嵌入式文件系統(tǒng),但這對于某些嵌入式應(yīng)用程序來說可能過于復(fù)雜。在許多情況下,內(nèi)存可能有效地用作已預(yù)初始化的數(shù)據(jù)結(jié)構(gòu)。這種方法需要對數(shù)據(jù)完整性進(jìn)行一些管理。本文介紹了挑戰(zhàn)并提供了一些使用 NVRAM 的簡單解決方案。
NVRAM簡介
在現(xiàn)代計算機(jī)系統(tǒng)中,有大量的內(nèi)存。其中大部分是名稱不合時宜的隨機(jī)存取存儲器 (RAM)。這個名字沒什么意義,因為現(xiàn)在所有的內(nèi)存都是隨機(jī)訪問的。當(dāng)工程師談?wù)?RAM 時,他們指的是易失性半導(dǎo)體存儲器,只要通電,就可以無限期地寫入和讀取。它并不總是這樣。在計算機(jī)的早期,常見的程序/數(shù)據(jù)存儲形式是“內(nèi)存”。按照現(xiàn)代標(biāo)準(zhǔn),這是笨重的(更不用說昂貴了?。?,但有一個有用的特性:它是非易失性的。讀取或?qū)懭霐?shù)據(jù)需要電源,但不需要電源來保留數(shù)據(jù)。在內(nèi)存斷電的情況下,數(shù)據(jù)將無限期保持不變。有趣的是,跌落或振動內(nèi)存可能會破壞其內(nèi)容,
盡管現(xiàn)代計算機(jī)和大多數(shù)嵌入式系統(tǒng)的工作內(nèi)存主要是 RAM,但擁有一定數(shù)量的非易失性 RAM (NVRAM) 仍然很有用。這可以使用閃存或其他一些具有非易失性(如 MRAM)的存儲技術(shù)來實現(xiàn),或者它可以是具有受保護(hù)電源(即電池)的常規(guī) RAM。NVRAM 在嵌入式系統(tǒng)中有多種可能的用途:
- 在啟動時復(fù)制到 RAM 中的程序代碼和常量數(shù)據(jù)的存儲。盡管在 NVRAM 之外執(zhí)行通常是一種選擇,但某些 NVRAM 技術(shù)的速度(訪問時間)使其沒有吸引力。
- 在電源循環(huán)之間保留設(shè)備設(shè)置參數(shù)。許多設(shè)備都是用戶可配置的;這些信息需要存儲在某個地方。
- 長時間緩沖獲取的數(shù)據(jù),不受電源故障影響。一個簡單的例子可能是在數(shù)碼相機(jī)中存儲照片。
NVRAM管理
從廣義上講,可以通過以下兩種方式之一使用 NVRAM:
- 類似于硬盤驅(qū)動器上使用的文件系統(tǒng),可以在 NVRAM 中實現(xiàn)。它需要以一種優(yōu)化介質(zhì)(如閃存)使用的方式實現(xiàn),并且能夠適應(yīng)寫入數(shù)據(jù)期間發(fā)生的電源故障。實施數(shù)據(jù)加密等安全功能也可能是謹(jǐn)慎的做法。
- 數(shù)據(jù)結(jié)構(gòu)可以簡單地位于 NVRAM 中并直接從 NVRAM 訪問。這需要針對非易失性進(jìn)行特定調(diào)整。
許多供應(yīng)商提供專為在 NVRAM 中使用而設(shè)計的現(xiàn)成文件系統(tǒng)軟件。除非需要某些專門的功能,否則開發(fā)人員自己設(shè)計在經(jīng)濟(jì)上是有問題的。數(shù)據(jù)結(jié)構(gòu)的存儲更特定于應(yīng)用程序,因此將進(jìn)一步解決。
適應(yīng)非易失性
使用普通的易失性 RAM 很簡單。它必須在加電時初始化為已知值,然后可以根據(jù)需要寫入和讀取。使用 NVRAM 有兩個新的挑戰(zhàn):
- 上電時,軟件需要識別 NVRAM 是否已初始化,如果沒有,則執(zhí)行該初始化。
- 數(shù)據(jù)的完整性,尤其是在斷電一段時間后,需要是可驗證的。
NVRAM 初始化
當(dāng) NVRAM 次上電時,與普通 RAM 一樣,它包含不確定的數(shù)據(jù),需要進(jìn)行初始化。在隨后的情況下,軟件需要識別 NVRAM 已初始化并且不會覆蓋此保存的數(shù)據(jù)。
實現(xiàn)這種識別的簡單方法是使用簽名,它只是一個可以快速識別的字節(jié)序列,不能隨機(jī)出現(xiàn)。當(dāng)然,這種理想是不可能的,因為任何字節(jié)序列,無論多長,都可能隨機(jī)出現(xiàn)。這只是將這種可能性降到的問題,同時仍然使檢查變得快速和容易。如果簽名只有 4 個字節(jié),則它隨機(jī)出現(xiàn)的幾率為 40 億比 1。這對于幾乎任何可以想象的應(yīng)用程序來說已經(jīng)足夠了。并且可以快速檢查 32 位值。
通過仔細(xì)選擇簽名值,可以減少意外發(fā)生的機(jī)會。直覺上,一系列連續(xù)的數(shù)字(例如 1、2、3、4)感覺比“隨機(jī)”集合更不可能。畢竟,彩票產(chǎn)生連續(xù)的數(shù)字序列是什么時候?當(dāng)然,這樣的序列與任何其他序列一樣有可能或不太可能。然而,通過思考記憶是如何工作的,可能會增加特定序列的可能性。內(nèi)存在首次通電時可能具有哪些值?大致有四種可能:
- 完全隨機(jī)
- 全為零
- 所有的
- 反映芯片架構(gòu)的一些規(guī)則模式(如交替的 1 和 0)
如果是 (1),那么任何簽名都會給我們 40 億比 1 的機(jī)會。任何其他人都可以通過使用正確的簽名來檢測。一種可能性如下:0x00、0xff、0xaa、0x55。這應(yīng)該涵蓋所有 (2)、(3) 和 (4),并且仍然只有 32 位。
需要注意初始化序列。必須設(shè)置有效數(shù)據(jù),然后將簽名初始化為過程中的一件事。
NVRAM 完整性
當(dāng)然,使用簽名并不能保證數(shù)據(jù)的完整性。明智的做法是使用校驗和或 CRC 進(jìn)行錯誤檢查,甚至是數(shù)據(jù)自校正機(jī)制。
使用 NVRAM 啟動系統(tǒng)
當(dāng)使用 NVRAM 時,啟動邏輯需要同時支持簽名驗證和數(shù)據(jù)完整性檢查:
結(jié)論
在嵌入式設(shè)計中使用 NVRAM 很簡單,但需要仔細(xì)考慮其功能,如此處所述。使用全局簽名和錯誤檢查的方法適用于許多應(yīng)用程序。對于非常大的數(shù)據(jù)庫,對每個數(shù)據(jù)塊進(jìn)行單獨(dú)檢查可能會更有效。也可能值得使用 C++ 向應(yīng)用程序代碼開發(fā)人員隱藏 NVRAM 管理,從而限度地減少程序員錯誤的可能性。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- eMMC 屬于閃存還是內(nèi)存?從定義到應(yīng)用講透核心區(qū)別2025/9/15 15:24:16
- ddr4和ddr5內(nèi)存接口一樣嗎?全景解析2025/9/8 17:22:03
- 虛擬存儲器的概念和特征2025/8/4 16:49:21
- 鐵電存儲器和flash的區(qū)別2025/7/30 16:56:02
- 內(nèi)存頻率是什么_內(nèi)存頻率高有什么好處2025/7/29 17:07:27