內(nèi)存子系統(tǒng)不需要顯著的學(xué)習(xí)曲線。對(duì)于新手工程師來(lái)說(shuō),當(dāng)今嵌入式系統(tǒng)和隨附的內(nèi)存子系統(tǒng)的復(fù)雜性有時(shí)會(huì)產(chǎn)生學(xué)習(xí)曲線。內(nèi)存包括作為臨時(shí)(易失性)或持久(非易失性)存儲(chǔ)“容器”運(yùn)行的硬件組件。這些帶電電路的神奇塊存儲(chǔ)信息狀態(tài),用于指令(二進(jìn)制代碼)并將數(shù)據(jù)組織為可尋址字節(jié)(8位),雙字節(jié)(16位)和四字節(jié)(32位)。
結(jié)合控制內(nèi)存子系統(tǒng)等資源的嵌入式操作系統(tǒng)(OS),軟件指示處理器(CPU)沿著地址線發(fā)送突發(fā)電力,該地址線標(biāo)識(shí)轉(zhuǎn)換在存儲(chǔ)數(shù)據(jù)的芯片中的位置。該脈沖可以打開或關(guān)閉連接到數(shù)據(jù)線的晶體管。當(dāng)電脈沖到達(dá)地址線時(shí),脈沖流過(guò)閉合的晶體管,并為存儲(chǔ)相當(dāng)于1(導(dǎo)通)位的電容器充電,相反,未充電的電容器表示0(關(guān)斷)位。
1. 信息的記憶位數(shù)組(部分顯示)。
易失性存儲(chǔ)器用作隨機(jī)存取存儲(chǔ)器 (RAM)。只有在通電時(shí)才能保持其內(nèi)容物。為了補(bǔ)充RAM的使用,在早期的嵌入式系統(tǒng)中,只讀存儲(chǔ)器(ROM)通常用于運(yùn)行操作系統(tǒng)和應(yīng)用程序??梢砸宰止?jié)(8 位)信息單位訪問(wèn)任一內(nèi)存源。
非易失性存儲(chǔ)器可保留數(shù)據(jù)。對(duì)于傳統(tǒng) PC、Mac 和服務(wù)器,持久內(nèi)存存儲(chǔ)已用于存儲(chǔ)更大的可尋址字節(jié)容器— 通常基于底層分組(稱為扇區(qū))進(jìn)行組織。物理尺寸和低功耗要求通常不是固定磁盤或固態(tài)設(shè)備 (SSD) 等存儲(chǔ)系統(tǒng)的優(yōu)先事項(xiàng)。對(duì)于尺寸和低功耗至關(guān)重要的小型嵌入式系統(tǒng),情況并非如此。此持久性存儲(chǔ)介質(zhì)是可移動(dòng)的(SD 或 CF 卡,或 USB 閃存驅(qū)動(dòng)器),并且無(wú)論是否存在電源,都應(yīng)保留其內(nèi)容。512 和 4192 KB 的塊是這些小型設(shè)備的常用大小。鑒于許多嵌入式系統(tǒng)外形小巧,設(shè)備內(nèi)存要求和物理空間限制通常決定了可以使用的內(nèi)存類型。
易失性存儲(chǔ)器基礎(chǔ)知識(shí)
易失性存儲(chǔ)器可用于讀取CPU執(zhí)行的指令,從而導(dǎo)致執(zhí)行某些操作,有時(shí)將數(shù)據(jù)寫回內(nèi)存。當(dāng)今功能強(qiáng)大的嵌入式 CPU 可以處理和訪問(wèn) 32 位(甚至 64 位)值的信息。8位計(jì)算的日子早已一去不復(fù)返了。
RAM由一個(gè)或多個(gè)芯片組成,可以與CPU和I / O端口一起駐留在相同的封裝基板中,稱為片上系統(tǒng)(SoC),這在可用電路板空間有限的小型設(shè)備(如無(wú)人機(jī),家用傳感器等)中很常見。
非易失性存儲(chǔ)器基礎(chǔ)知識(shí)
閃存最初被稱為閃存RAM,正在成為首選的永久存儲(chǔ)介質(zhì),取代了旋轉(zhuǎn)磁盤。增岡不二雄博士于1984年在東芝工作時(shí)發(fā)明了閃存。他的同事有泉正治先生想出了閃光燈這個(gè)名字,因?yàn)閺募?xì)胞中擦除數(shù)據(jù)的過(guò)程讓他想起了相機(jī)閃光燈。
閃存是一種非易失性存儲(chǔ)器,經(jīng)過(guò)電編程,可長(zhǎng)期存儲(chǔ)。最初的電可擦除可編程只讀存儲(chǔ)器(EEPROM)器件由列和行的網(wǎng)格組成,每個(gè)交叉點(diǎn)都有晶體管。一層薄薄的氧化物將每個(gè)晶體管與其他晶體管分開。如果一個(gè)晶體管(浮動(dòng)?xùn)艠O)與另一個(gè)晶體管(控制柵極)連接,則電池的值為1。如果此鏈接斷開,則該值變?yōu)?0。為了將電池組的值更改為0,將發(fā)生一個(gè)稱為福勒 - 諾德海姆隧道的過(guò)程,該過(guò)程會(huì)改變電池的電荷水平。當(dāng)電源斷開時(shí),電池應(yīng)保留其最后設(shè)置(編程或擦除)。
認(rèn)為閃存僅用于消費(fèi)者移動(dòng)設(shè)備(如相機(jī)和智能手機(jī))的看法是不正確的。在外形尺寸受限且需要永久數(shù)據(jù)存儲(chǔ)的任何系統(tǒng)中,閃存經(jīng)常使用。閃存要么是駐留的(焊接到電路板上),要么是非駐留的(通過(guò)行業(yè)標(biāo)準(zhǔn)端口(如SD和USB)的可移動(dòng)設(shè)備)。閃存的美妙之處在于,沒(méi)有可能對(duì)可靠性產(chǎn)生負(fù)面影響的活動(dòng)部件,但與任何技術(shù)一樣,也有優(yōu)點(diǎn)和缺點(diǎn),如表所示。

閃存的好壞。
市面上有兩種基本類型的閃存 — NOR 和 NAND。NOR最初設(shè)計(jì)用于取代只讀存儲(chǔ)器、三重定位器和易失性存儲(chǔ)器。它有一套完整的地址行,允許讀取單個(gè)字節(jié)。事實(shí)上,讀取通常與DRAM一樣快,允許程序直接從NOR存儲(chǔ)器運(yùn)行XIP(原位讀?。5?,擦除非常慢,只要不經(jīng)常執(zhí)行擦除操作,就不會(huì)出現(xiàn)問(wèn)題。NOR 最初用于可移動(dòng)的緊湊型閃存 (CF) 卡,是存儲(chǔ)操作系統(tǒng)映像、系統(tǒng)引導(dǎo)加載程序和系統(tǒng)配置信息的不錯(cuò)選擇。
與NOR相比,NAND的開發(fā)旨在實(shí)現(xiàn)更高的容量,更小的占地面積和更低的成本。但是,它僅限于串行接口。因此,單個(gè)字節(jié)不能直接訪問(wèn);讀取、寫入和擦除必須以塊(或塊)為單位執(zhí)行。該技術(shù)不適合替代ROM,但非常適合作為硬盤驅(qū)動(dòng)器的替代品。NAND已成為可移動(dòng)和常駐介質(zhì)的標(biāo)準(zhǔn)閃存技術(shù),因此,它適用于需要低成本、高密度和快速擦除的應(yīng)用。
請(qǐng)注意塊和頁(yè)面之間的區(qū)別。每個(gè)塊由許多頁(yè)面組成,其中頁(yè)面大小通常為小塊(512 字節(jié))或大塊(2048、4096 字節(jié)等)。塊大小很重要,因?yàn)槿绻涗洿笮∈情W存介質(zhì)上使用的基礎(chǔ)塊大小的偶數(shù)部分,則通常會(huì)獲得最佳結(jié)果。對(duì)于所有NAND,數(shù)據(jù)以頁(yè)面形式寫入,但頁(yè)面必須已被刪除(到所有1),并且只能擦除塊。
2. 頁(yè)面和塊。
如果我們沒(méi)有提到記憶單元是如何組織以存儲(chǔ)信息位的,那么關(guān)于NAND的討論將是不完整的。單級(jí)單元 (SLC) 為每個(gè)單元存儲(chǔ)一位信息。隨著存儲(chǔ)容量的增加,多級(jí)單元(MLC)和三級(jí)單元(TLC)已被開發(fā)出來(lái),以為每個(gè)單元存儲(chǔ)多個(gè)位。但這種增加的容量有一些缺點(diǎn)。MLC的寫入性能通常約為SLC的三分之一到一半。其復(fù)雜性的增加也會(huì)產(chǎn)生更多的位錯(cuò)誤,需要更復(fù)雜的糾錯(cuò)碼(EC)來(lái)防止常見的數(shù)據(jù)錯(cuò)誤情況。與SLC和MLC相比,TLC具有更慢的傳輸速度,更高的錯(cuò)誤率,需要更大的ECC,并且耐用性更低。當(dāng)塊寫入最少的次數(shù)時(shí),耐久性更好。
典型的NAND需要一個(gè)控制器來(lái)處理主機(jī)和閃存之間的命令和數(shù)據(jù)移動(dòng)??刂破魈峁┝藞?zhí)行基本操作(如塊讀取、寫入和擦除)的機(jī)制。許多設(shè)計(jì)都包含一個(gè)分立式控制器,該控制器僅提供這些功能,并將其他閃存管理活動(dòng)(例如更換損壞的模塊并確保均勻磨損)留給驅(qū)動(dòng)軟件。一些芯片設(shè)計(jì)人員發(fā)現(xiàn),通過(guò)將帶有NAND閃存的內(nèi)置控制器包含在稱為托管NAND的同一物理封裝中,可以提高效率。這些復(fù)雜的控制器以昂貴的芯片成本卸載了一些計(jì)算密集型軟件管理。
3. 納米閃存與托管納米
這有效地使器件能夠像典型的塊器件一樣工作,為主機(jī)文件系統(tǒng)提供更簡(jiǎn)單的接口。由于托管 NAND 的價(jià)格可與 NAND 本身的價(jià)格相媲美,因此嵌入式主板將常駐管理 NAND 作為嵌入式多媒體存儲(chǔ)卡 (eMMC) 而不是閃存和控制器也就不足為奇了。
雖然它代表了馴服NAND特性的巨大飛躍,但eMMC并不是一項(xiàng)完美的技術(shù)。在對(duì) eMMC 4.3 部件進(jìn)行了一系列性能基準(zhǔn)測(cè)試后,Datalight 的工程團(tuán)隊(duì)觀察到某些部件的性能不佳,尤其是在隨機(jī)讀取時(shí)。對(duì)于一個(gè)特定的 eMMC 部件,對(duì)大于 16 MB 的文件執(zhí)行的隨機(jī) I/O 會(huì)減慢到 200 字節(jié)/秒的傳輸速率,遠(yuǎn)低于順序 I/O 常見的數(shù)兆字節(jié)速率。
最終,適合您的系統(tǒng)設(shè)計(jì)的最佳閃存歸結(jié)為對(duì)其用例最重要的是什么。沒(méi)有一個(gè)閃存部件能夠以最低的價(jià)格提供高質(zhì)量、大存儲(chǔ)容量、非凡的耐用性和“殺手級(jí)”性能??倳?huì)有一些權(quán)衡,應(yīng)該為特定應(yīng)用選擇正確的內(nèi)存部分。
界面
駐留閃存在閃存、數(shù)據(jù)和地址總線之間具有直接接口。為了避免系統(tǒng)設(shè)計(jì)人員和閃存供應(yīng)商之間的混亂,通用閃存接口(CFI)定義了大多數(shù)供應(yīng)商支持并得到聯(lián)合電子設(shè)備工程委員會(huì)(JEDEC)非易失性存儲(chǔ)器小組委員會(huì)認(rèn)可的開放接口標(biāo)準(zhǔn)。因此,可移動(dòng)閃存符合物理、電氣和命令接口標(biāo)準(zhǔn)。這有效地允許各種不同的內(nèi)存供應(yīng)商選擇類似的部件。
這些標(biāo)準(zhǔn)已經(jīng)遷移到小型嵌入式系統(tǒng)。例如,第一個(gè) EIDE/ATA 連接是串行 AT 附件 (SATA) 接口標(biāo)準(zhǔn)的替代品,該標(biāo)準(zhǔn)的最大吞吐量為 133 MB/s。另一個(gè)流行的接口是小型計(jì)算機(jī)系統(tǒng)接口 (SCSI),由于使用 16 條并行線,速度高達(dá) 40 MB/s,因此在更短的時(shí)間內(nèi)移動(dòng)的數(shù)據(jù)比 EIDE 多。為了獲得更快的結(jié)果,Ultra-640 SCSI 可以以 640 MB/s 的速度傳輸數(shù)據(jù)。
令人驚訝的是,對(duì)于小型嵌入式電路板數(shù)據(jù)表,您可能必須四處尋找持久性存儲(chǔ)是否駐留在電路板上。例如,樹莓派3具有可用于可移動(dòng)介質(zhì)的微型SD和USB端口。
軟件數(shù)據(jù)存儲(chǔ)堆棧
對(duì)于非易失性、持久性閃存,需要系統(tǒng)軟件來(lái)驅(qū)動(dòng)其運(yùn)行。該系統(tǒng)軟件提供了軟件服務(wù)的邏輯分離,使應(yīng)用程序能夠?qū)⑽募到y(tǒng)請(qǐng)求作為結(jié)構(gòu)化數(shù)據(jù)元素發(fā)出,這些請(qǐng)求又被轉(zhuǎn)換為塊請(qǐng)求,讓人聯(lián)想到傳統(tǒng)的基于塊的硬盤驅(qū)動(dòng)器中存在的請(qǐng)求。
4. 軟件數(shù)據(jù)存儲(chǔ)堆棧。
Datalight的Reliance Nitro嵌入式文件系統(tǒng)實(shí)際上是一組相關(guān)的軟件模塊,每個(gè)模塊都有明確定義的軟件接口(稱為應(yīng)用程序編程接口或API),可以保護(hù)來(lái)自應(yīng)用程序的請(qǐng)求并確??煽啃?,即使斷電也是如此。Reliance Nitro的可配置事務(wù)模型在數(shù)據(jù)實(shí)際寫入閃存時(shí)提供了微調(diào)的靈活性。
信實(shí)硝基是一種電源故障安全文件系統(tǒng),可以插入到各種工業(yè)嵌入式實(shí)時(shí)操作系統(tǒng)中,如VxWorks,Linux,安卓和Windows嵌入式。對(duì)于物聯(lián)網(wǎng)設(shè)備,可以使用占用小內(nèi)存的物聯(lián)網(wǎng)文件系統(tǒng),即信實(shí)邊緣,該系統(tǒng)可與FreeRTOS和MQX等小型嵌入式操作系統(tǒng)配合使用。
塊設(shè)備驅(qū)動(dòng)程序從文件系統(tǒng)接收塊請(qǐng)求,并用作閃存轉(zhuǎn)換層 (FTL)。根據(jù)嵌入式系統(tǒng)上使用的閃存和接口,F(xiàn)TL 執(zhí)行最初由文件系統(tǒng)執(zhí)行的請(qǐng)求。例如,數(shù)據(jù)照明的閃存FX太拉與NAND或NOR存儲(chǔ)器配合使用,并向系統(tǒng)的閃存控制器發(fā)出命令。
閃存驅(qū)動(dòng)程序不僅負(fù)責(zé)為基本閃存操作(讀取、寫入和擦除)提供支持,還負(fù)責(zé)優(yōu)化內(nèi)存的性能。由于閃存的使用壽命有限,連續(xù)重寫同一塊將導(dǎo)致零件過(guò)早磨損。為了防止這種情況,發(fā)明了磨損均衡算法,將磨損均勻地分布在閃光燈上。事實(shí)上,設(shè)計(jì)不佳的文件系統(tǒng)和塊驅(qū)動(dòng)程序軟件基本上會(huì)破壞良好的閃存。例如,標(biāo)準(zhǔn) FAT 文件系統(tǒng)在介質(zhì)的開頭不斷寫入和重寫文件分配表 (FAT)。如果塊沒(méi)有不斷重新定位,對(duì)這些塊的訪問(wèn)可能會(huì)很快磨損閃存。
由于單個(gè)塊會(huì)隨著時(shí)間的推移而磨損,因此壞塊管理(BBM)軟件是塊驅(qū)動(dòng)程序的另一個(gè)重要部分。BBM 驗(yàn)證寫入數(shù)據(jù),當(dāng)檢測(cè)到寫入失敗時(shí),壞塊將重新映射到專門為壞塊分配保留的備用塊。
您可能會(huì)認(rèn)為,使用托管NAND設(shè)備,您不需要閃存塊驅(qū)動(dòng)程序。數(shù)據(jù)照明的閃存與受管的 NAND 設(shè)備配合使用。由于隨機(jī)磁盤 I/O 非常重要,特別是對(duì)于 Android 嵌入式系統(tǒng),F(xiàn)lashFXe 將隨機(jī) I/O 請(qǐng)求線性化,其方式是將實(shí)際的隨機(jī)讀取和寫入調(diào)度為順序 I/O 塊。因此,隨機(jī) I/O 性能會(huì)顯著提高。通過(guò)減少正在執(zhí)行的寫入次數(shù),可以在某些用例中提高閃存耐久性。
數(shù)據(jù)生命周期
總而言之,重要信息根據(jù)系統(tǒng)的狀態(tài)駐留在內(nèi)存中。首先是啟動(dòng)時(shí)啟動(dòng)。從非易失性閃存中,由整個(gè)系統(tǒng)(RTOS、驅(qū)動(dòng)程序、應(yīng)用程序等)的靜態(tài)副本組成的啟動(dòng)映像被加載到 RAM 中。易失性存儲(chǔ)器被刷新,閃存中的非易失性數(shù)據(jù)再次可用。
接下來(lái)是正常操作。系統(tǒng)運(yùn)行后,必須執(zhí)行日常任務(wù)。對(duì)于基于傳感器的 IoT 設(shè)備,這些應(yīng)用使用本地閃存執(zhí)行工作并依賴于文件系統(tǒng)中的持久數(shù)據(jù)存儲(chǔ)(和檢索)。這通常包括打開文件、讀取和寫入數(shù)據(jù)以及選擇性地執(zhí)行文件夾和其他文件系統(tǒng)操作。
但是存儲(chǔ)在設(shè)備上的數(shù)據(jù)很可能最終會(huì)到達(dá)企業(yè)的其他地方 - 私人或公共。趨勢(shì)是更多的數(shù)據(jù)收集、處理和分析要執(zhí)行,并在本地保存在嵌入式設(shè)備上。平臺(tái)正在不斷發(fā)展,為這些連接的設(shè)備提供安全、設(shè)備管理、數(shù)據(jù)分析、軟件更新和連接服務(wù)。
最后一步是關(guān)閉和系統(tǒng)恢復(fù):當(dāng)系統(tǒng)需要關(guān)閉電源時(shí),有序關(guān)閉很重要。如果應(yīng)用了電源來(lái)完成對(duì)閃存的所有剩余 I/O 請(qǐng)求,則應(yīng)有序地關(guān)閉文件系統(tǒng),并將數(shù)據(jù)信息正確保存到介質(zhì)中。
對(duì)軟件數(shù)據(jù)系統(tǒng)堆棧魯棒性的真正考驗(yàn)是在發(fā)生意外斷電時(shí)重建文件結(jié)構(gòu)所需的時(shí)間,這使得有序關(guān)機(jī)變得不可能?;谌罩镜奈募到y(tǒng)(如 ext4)可能需要一些時(shí)間來(lái)重放日志以重建文件系統(tǒng)。
-
處理器
+關(guān)注
關(guān)注
68文章
20339瀏覽量
255355 -
嵌入式
+關(guān)注
關(guān)注
5210文章
20680瀏覽量
337416 -
存儲(chǔ)器
+關(guān)注
關(guān)注
39文章
7758瀏覽量
172280
發(fā)布評(píng)論請(qǐng)先 登錄
低功耗psram在嵌入式存儲(chǔ)領(lǐng)域的作用
串行mram磁性隨機(jī)存儲(chǔ)器的工作原理與存儲(chǔ)機(jī)制
什么是嵌入式應(yīng)用開發(fā)?
DDR SDRAM是什么存儲(chǔ)器(雙數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器介紹)
雙口SRAM靜態(tài)隨機(jī)存儲(chǔ)器存儲(chǔ)原理
嵌入式和FPGA的區(qū)別
嵌入式系統(tǒng)的定義和應(yīng)用領(lǐng)域
串行接口MRAM存儲(chǔ)芯片面向工業(yè)物聯(lián)網(wǎng)和嵌入式系統(tǒng)的應(yīng)用
RISC-V嵌入式開發(fā)書里面的存儲(chǔ)模型里面的釋放和獲取
盤點(diǎn)嵌入式就業(yè)所需要的技能有哪些?
入行嵌入式應(yīng)該怎么準(zhǔn)備?
MicroBlaze處理器嵌入式設(shè)計(jì)用戶指南
【好書推薦】RT-Thread第18本相關(guān)書籍!RISC-V嵌入式系統(tǒng)設(shè)計(jì) | 技術(shù)集結(jié)
嵌入式存儲(chǔ)器系統(tǒng)的應(yīng)用
評(píng)論