當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 工業(yè)傳感器 > 溫濕度傳感器
發(fā)布日期:2022-04-26 點擊率:46
關(guān)鍵詞: Flash存儲
摘要:Flash 存儲問題總是在我們技術(shù)支持渠道位列榜首。Toradex 投入了大量資源保證存儲盡可能的穩(wěn)定。然而,了解一些關(guān)于存儲的基本知識還是十分重要的。首先你需要知道存儲是否磨損,當(dāng)往內(nèi)置的存儲設(shè)備上寫入大量數(shù)據(jù)后,你就很容易損壞它。通過這篇博文,我們想要告訴你 Flash 存儲可能會遇到的一些問題。我們先簡單介紹技術(shù)內(nèi)容。
Flash 存儲問題總是在我們技術(shù)支持渠道位列榜首。Toradex 投入了大量資源保證存儲盡可能的穩(wěn)定。然而,了解一些關(guān)于存儲的基本知識還是十分重要的。首先你需要知道存儲是否磨損,當(dāng)往內(nèi)置的存儲設(shè)備上寫入大量數(shù)據(jù)后,你就很容易損壞它。通過這篇博文,我們想要告訴你 Flash 存儲可能會遇到的一些問題。我們先簡單介紹技術(shù)內(nèi)容。
Flash 類型:Raw Flash vs Managed Flash
目前,Toradex 計算機(jī)模塊采用 NOR、NAND 和 eMMC Flash。
NOR 和 NAND 是 raw 存儲設(shè)備。NAND 和 NOR 之間的主要差別是 NOR 允許隨機(jī)尋址,不需要糾錯以及較高的每比特成本。NAND 則只能頁讀取,每頁中的一些位可能出錯,因此需要糾錯機(jī)制。
eMMC Flash 則結(jié)合使用 NAND 和一個內(nèi)置控制器,后者處理大部分使用 NAND flash 時候,本來需要你自己完成的一些列任務(wù)。eMMC 也稱為 managed NAND。在另一方面,NAND 和 NOR 需要有 OS 和驅(qū)動來完成對應(yīng)的處理。我們稍后會在本博文中討論這兩種不同的挑戰(zhàn)。
下面是我們的計算機(jī)模塊所使用的 Flash 類型概覽;
Storage Type | Toradex Computer Module |
NOR | Colibri PXA270 |
NAND | Colibri PXA310, PXA320, VF50, VF61, iMX7, T20 |
EMMC | Colibri iMX6 and T30, Apalis iMX6 and T30 |
NAND Flash 演變:從 SLC 到 MLC
NAND 上面的 bit 密度隨著時間在不停增長。最早的 NAND 設(shè)備是 Single Level Cell (SLC) flash。這意味著每個閃存單元存儲一個bit位信息。借助 Multi Level Cell (MLC),每個閃存單元可以存儲兩個或者多個bit位,bit 密度也隨之提升。MLC 聽起來很不錯,但是也有缺點:MLC NAND 也帶來更高的bit 錯誤率以及更低的壽命。所有的 eMMC 都使用 MLC NAND。有些 eMMC 設(shè)備可以在部分或者全部存儲區(qū)域上使用 pseudo-SLC (PSLC)。這將會減少存儲容量,但是提高設(shè)備上使用壽命。
這是 SLC 和 MLC 的簡單對比。
SLC | MLC | |
Bits per Cell | 1 | 2 and more (TLC) |
Erase/Program cycles | 100K | 3K to 15K |
Minimal ECC, bits correctable per 512 Bytes, chip dependent | 8 bit | 12 bit |
Cost per Byte | Higher | Lower |
使用壽命:有限的擦寫次數(shù)
正如上面提到的,關(guān)于我們設(shè)備上使用的 flash 技術(shù),您需要知道很重要的一點是,您只能有限次地擦寫存儲設(shè)備。往 flash 存儲上寫入大量的數(shù)據(jù),并不是一個好的主意。上面的表格所示,根據(jù)所使用的 flash 類型不同,直到數(shù)據(jù)可能出現(xiàn)損壞或者丟失前,您可以進(jìn)行 10K 到 100K 次寫操作。“擦寫周期” 這一個令人煩惱的事情。Flash 存儲的一個限制是,在被擦除之前是無法進(jìn)行寫操作的。而且,不能通過位擦差來完成,而是需要更大的單位,稱為塊。最糟糕的情況是,如果你只想改變一個字節(jié),但是可能需要擦除整個塊。一個塊最大可以使 512KB。這種比你想象的要大的多的擦/寫比現(xiàn)象稱為寫放大。并且可能還有 flash 文件系統(tǒng)所需的額外寫操作。如果你想要評估你嵌入式設(shè)備上的存儲的壽命,你應(yīng)該把這個也考慮進(jìn)來。
提高 flash 壽命
下面的內(nèi)容向你介紹如何提高 NAND 或者 eMMC 的壽命。不要擔(dān)心,這些工作都已經(jīng)由 Toradex 完成,你不需采取任何工作。
防止磨損:磨損平衡
我們假設(shè)你已經(jīng)了解 flash 只能被有限次地擦寫,并且你只是偶爾小批量地更新數(shù)據(jù)。如果這些數(shù)據(jù)總是寫在同一個 flash 單元,那么你只能在 MLC flash 上寫 15K 次。如果永遠(yuǎn)不使用其他 flash 單元,你的數(shù)據(jù)將會丟失,一直在寫的存儲單元磨損后,flash 也就隨著報廢。智能的 flash 驅(qū)動會采用磨損平衡。這個技術(shù)確保所有的 flash 單元被平均磨損,而不是總是使用同一個單元。
檢測和糾正錯誤:糾錯碼
在 NAND flash 設(shè)備有可能發(fā)生一個位的數(shù)據(jù)發(fā)生翻轉(zhuǎn),你的數(shù)據(jù)因此損壞。磨損或者其他干擾都有可能引起這個現(xiàn)象。因此,數(shù)據(jù)需要被糾錯碼(ECC)保護(hù)。根據(jù) Flash 控制器和 NAND / eMMC 的不同,部分錯誤數(shù)據(jù)可以被檢測和糾正。
壞塊處理
ECC 使我們能夠發(fā)現(xiàn)錯誤的塊,我們就可以停止使用這些壞塊。根據(jù) ECC 以及糾正的位數(shù),可以設(shè)定容錯上限,這個范圍之內(nèi)不需要采取進(jìn)一步行動。一旦達(dá)到這個上限,數(shù)據(jù)被糾正,并轉(zhuǎn)移到正常的塊上面。 之前的位置表記為壞塊。這些壞塊不再被使用,因為它們可能已經(jīng)損壞。
掉電保護(hù)
當(dāng)你的設(shè)備在往 flash 寫數(shù)據(jù)的時候突然掉電,這將會發(fā)生什么?在嵌入式設(shè)備上,你希望設(shè)備仍舊可以正常啟動,并且數(shù)據(jù)不受到損壞。為了達(dá)到這個目的,所有相關(guān)的軟件和硬件都需要有能力應(yīng)對這種情況。你將會在下面的內(nèi)容中了解我們是如何做到的。
Toradex 系統(tǒng)模塊實施方法
正如上面提到的,關(guān)鍵是根據(jù)存儲的類型采用正確配置。我們會分析目前 Toradex BSP 上所使用的技術(shù)。
NAND 設(shè)備
下圖展示了在 NAND 設(shè)備上行 WinCE 和 Linux 的配置
存儲設(shè)備:我們的設(shè)備只要使用 NAND,那么都用的是 SLC NAND。
硬件驅(qū)動:硬件驅(qū)動為 NAND 設(shè)備和上層系統(tǒng)提供接口。上層系統(tǒng)也負(fù)責(zé)錯誤檢測和糾正。在 Linux 上我們目前的鏡像使用 MTD。WinCE 上我們使用 Microsoft Flash PDD 層。也有例外,如 Colibri T20,我們使用了專門的 PDD 層。
Flash 傳輸層:該層負(fù)責(zé)寫平衡和壞塊管理。在 Linux 中由 UBI 子系統(tǒng)完成;而 WinCE 則由 MDD 層完成。同樣在 Colibri T20 上我們使用了專門的層,而不是 Microsoft Flash MDD。
文件系統(tǒng):文件系統(tǒng)是實際管理分區(qū)以及所存文件的部分。用戶通過文件 API 來是用文件系統(tǒng)(Linux 中通過 VFS 層)。在Linux 上,目前我們使用 UBI FS。WinCE 使用 Transaction Save exFAT (TexFAT) 。兩者都可以應(yīng)對掉電。基本的文件層通過支持原子操作來應(yīng)對掉電發(fā)生。
eMMC 設(shè)備
下圖展示了在 eMMC 設(shè)備上行 WinCE 和 Linux 的配置
存儲設(shè)備:相對于 raw NAND,絕大多數(shù)的工作由 eMMC 本身完成。上層軟件不需要處理寫平衡、糾錯和壞塊管理。
硬件驅(qū)動:這是 MMC 控制器和文件系統(tǒng)之間的接口.
文件系統(tǒng):和 NAND 設(shè)備一樣,WinCE 上仍舊使用 TexFAT;我們的 Linux 鏡像使用 ext3 文件系統(tǒng)。同樣也是能夠應(yīng)對掉電情況。
結(jié)論和建議
Toradex 盡自己最大的努力提供可靠和持久的 flash 存儲。然而,在開發(fā)的過程中,你還是需要始終關(guān)注 flash 的使用。
減少 flash 訪問次數(shù)
了解你最終產(chǎn)品的寫操作行為
檢查在寫操作的情況下,你產(chǎn)品使用壽命是否能夠達(dá)到要求
進(jìn)行壓力測試和持久測試
避免使用 Flash 全部容量,這可以極大地提高寫平衡算法的效率
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV