許多嵌入式系統(tǒng)利用非易失性存儲(chǔ)器來(lái)存儲(chǔ)引導(dǎo)代碼、配置參數(shù)和系統(tǒng)斷電時(shí)保留的其他數(shù)據(jù)。今天,閃存在大多數(shù)嵌入式系統(tǒng)中扮演著這一角色。鑒于需要閃存的應(yīng)用程序范圍很廣,因此有許多體系結(jié)構(gòu)和功能集可以滿足應(yīng)用程序的不同要求。
常見(jiàn)的閃存技術(shù)包括并行或SPI NOR閃存、SLC NAND和eMMC器件。最近,通用閃存(UFS)也已成為一種選擇。本文探討了這些不同類型的閃存在嵌入式系統(tǒng)啟動(dòng)環(huán)境中的優(yōu)缺點(diǎn)。
嵌入式系統(tǒng)引導(dǎo)的復(fù)雜性
從外部角度來(lái)看,啟動(dòng)嵌入式系統(tǒng)可能看起來(lái)很容易。但是,啟動(dòng)涉及許多步驟,如果需要快速可靠的啟動(dòng),則需要仔細(xì)考慮設(shè)計(jì)。
通常,嵌入式系統(tǒng)啟動(dòng)順序涉及以下步驟:
上電或硬件重置:這是啟動(dòng)嵌入式系統(tǒng)的第一步。它可以打開(kāi)系統(tǒng)電源或觸發(fā)系統(tǒng)的硬件重置。從這一點(diǎn)開(kāi)始,系統(tǒng)開(kāi)始執(zhí)行其代碼。
引導(dǎo) ROM 或引導(dǎo):內(nèi)核跳轉(zhuǎn)到復(fù)位向量并嘗試執(zhí)行第一個(gè)代碼。某些處理器具有小型內(nèi)部啟動(dòng) ROM,可在制造時(shí)進(jìn)行編程。引導(dǎo) ROM 代碼可以執(zhí)行處理器的一些基本初始化,例如設(shè)置時(shí)鐘、堆棧、中斷等。引導(dǎo) ROM 還可以檢測(cè)引導(dǎo)加載程序的存儲(chǔ)位置;例如,在外部 NOR 或 NAND 閃存設(shè)備中。
某些處理器可以引導(dǎo)以直接從外部閃存設(shè)備執(zhí)行代碼。這通常需要處理器的硬件本機(jī)支持與外部閃存設(shè)備通信的特定總線接口,因?yàn)樯形赐瓿绍浖跏蓟?/p>
引導(dǎo)加載程序 XIP 或重影:要使處理器執(zhí)行代碼,必須隨機(jī)訪問(wèn)代碼存儲(chǔ)。如果使用 NOR 閃存設(shè)備來(lái)存儲(chǔ)引導(dǎo)加載程序,則處理器可以直接從閃存設(shè)備運(yùn)行。這種方法通常稱為就地執(zhí)行 (XIP)。如果使用 NAND 或 eMMC 設(shè)備,則首先需要將啟動(dòng)代碼復(fù)制到系統(tǒng)的 RAM。然后處理器可以跳轉(zhuǎn)到 RAM 空間并執(zhí)行。此方法稱為影子或存儲(chǔ)和下載 (SnD)。
此階段的引導(dǎo)加載程序有時(shí)稱為第二階段引導(dǎo)加載程序(例如,用于 Linux 應(yīng)用程序的 U-boot)。它用于設(shè)置系統(tǒng)并加載其余軟件,例如操作系統(tǒng)和文件系統(tǒng)。它還可以通過(guò)引導(dǎo)ROM或硬件尚未本機(jī)支持的外圍設(shè)備執(zhí)行系統(tǒng)初始化并繼續(xù)引導(dǎo)過(guò)程。
引導(dǎo)加載程序初始化后,系統(tǒng)可以開(kāi)始處理基本中斷和簡(jiǎn)單的操作任務(wù)。
內(nèi)核操作系統(tǒng)和/或文件系統(tǒng):這是一個(gè)可選步驟,具體取決于系統(tǒng)。如果嵌入式系統(tǒng)使用操作系統(tǒng)或文件系統(tǒng),則還需要將這些軟件組件加載到RAM內(nèi)存中。由于操作系統(tǒng)和文件系統(tǒng)的軟件尺寸較大,系統(tǒng)完成此步驟并在完全操作模式下運(yùn)行需要更長(zhǎng)的時(shí)間。
加載所有軟件組件后,用戶應(yīng)用程序可以開(kāi)始運(yùn)行: 一個(gè)常見(jiàn)的用例是使用閃存來(lái)存儲(chǔ)第二階段引導(dǎo)加載程序以及操作系統(tǒng)和文件系統(tǒng)軟件。引導(dǎo)加載程序啟動(dòng)后,系統(tǒng)功能有限,并繼續(xù)引導(dǎo)過(guò)程以加載操作系統(tǒng)和文件系統(tǒng)。
不同目標(biāo)應(yīng)用中的優(yōu)先級(jí)
在決定用于啟動(dòng)嵌入式系統(tǒng)的閃存類型之前,請(qǐng)考慮目標(biāo)應(yīng)用要求和用戶期望。表1總結(jié)了不同細(xì)分市場(chǎng)的首要任務(wù)。
表 1.應(yīng)用程序優(yōu)先級(jí)因細(xì)分市場(chǎng)而異。
對(duì)于汽車和工業(yè)應(yīng)用,首要任務(wù)如下:
功能安全:功能安全是關(guān)于消除由于電子系統(tǒng)故障行為引起的危害而導(dǎo)致的不合理風(fēng)險(xiǎn)。這是設(shè)計(jì)汽車或工業(yè)應(yīng)用時(shí)的主要考慮因素。選擇設(shè)計(jì)時(shí)考慮功能安全的設(shè)備有助于達(dá)到所需的汽車或工業(yè)安全標(biāo)準(zhǔn),例如ISO 26262。在需要高級(jí)功能安全的情況下,使用專為功能安全而設(shè)計(jì)的設(shè)備至關(guān)重要。
可靠性:當(dāng)閃存設(shè)備用于存儲(chǔ)啟動(dòng)代碼時(shí),必須在產(chǎn)品的整個(gè)生命周期內(nèi)每次上電時(shí)可靠地讀取正確的數(shù)據(jù)。閃存的數(shù)據(jù)保留時(shí)間對(duì)于通常的靜態(tài)引導(dǎo)加載程序代碼很重要。對(duì)于手機(jī)等消費(fèi)類產(chǎn)品,預(yù)期壽命很短。但是,對(duì)于汽車和工業(yè)應(yīng)用,閃存設(shè)備的使用壽命必須超過(guò)15年,并且需要在系統(tǒng)的整個(gè)生命周期內(nèi)保持?jǐn)?shù)據(jù)完整性。
安全性:隨著設(shè)備的持續(xù)互連,數(shù)據(jù)安全變得越來(lái)越重要。具有強(qiáng)大安全技術(shù)的數(shù)據(jù)存儲(chǔ)可以保護(hù)關(guān)鍵內(nèi)容,例如專有信息和商業(yè)機(jī)密。較新的閃存設(shè)備提供不同級(jí)別的安全性,以保護(hù)數(shù)據(jù)不被覆蓋、意外擦除和復(fù)制到克隆設(shè)備。通過(guò)加密和其他加密技術(shù),閃存設(shè)備可用于受信任的引導(dǎo)鏈。
性能:?jiǎn)?dòng)設(shè)備的性能直接影響系統(tǒng)啟動(dòng)時(shí)間和操作,尤其是在必須保證系統(tǒng)在通電后一定時(shí)間內(nèi)啟動(dòng)并運(yùn)行的應(yīng)用中。對(duì)于用于啟動(dòng)的閃存設(shè)備,性能因素不僅與從設(shè)備中讀取數(shù)據(jù)的速度有關(guān),還與設(shè)備本身通過(guò)系統(tǒng)電源初始化的速度有關(guān)。
耐久性:閃存設(shè)備中的耐久性定義了在保持其指定保留時(shí)間的同時(shí)可以對(duì)內(nèi)存進(jìn)行編程和擦除的次數(shù)。對(duì)于許多嵌入式系統(tǒng),數(shù)據(jù)必須可靠多年,即使閃存被反復(fù)讀取、擦除和編程。
雖然NOR閃存和SLC NAND通常具有10K至100K范圍的耐久性周期,但MLC NAND可能只有5K或更少的周期。TLC NAND甚至可以提供數(shù)百個(gè)左右的周期。通常,閃存單元越密集,在永久單元故障之前可以執(zhí)行的擦除和寫(xiě)入就越少。
NOR 閃存、SLC NAND、eMMC 和 UFS 的比較
根據(jù)其底層技術(shù)的性質(zhì),每種類型的閃存設(shè)備都具有可能適合一種應(yīng)用而不適用于另一種應(yīng)用的特性。表2提供了與嵌入式系統(tǒng)設(shè)計(jì)相關(guān)的特性比較。
表 2.嵌入式系統(tǒng)中使用的不同閃存類型的比較。
表中提到的一些因素通常是眾所周知的,例如密度、支持的溫度范圍和讀取帶寬。根據(jù)特定的引導(dǎo)加載程序,設(shè)計(jì)人員可以選擇適當(dāng)?shù)囊龑?dǎo)設(shè)備。例如,如果引導(dǎo)加載程序的大小非常大,則需要更大的設(shè)備來(lái)存儲(chǔ)這樣的引導(dǎo)加載程序。然而,大多數(shù)引導(dǎo)加載程序,如u-boot,都是兆字節(jié)的數(shù)量級(jí)的,并且在NOR閃存的密度范圍內(nèi)。這意味著用戶可能有許多選項(xiàng)需要考慮。
要考慮的其他重要因素包括設(shè)備初始化時(shí)間、XIP 能力和數(shù)據(jù)可靠性。
設(shè)備初始化:這是設(shè)備通電與可以可靠地輸出數(shù)據(jù)之間的時(shí)間。如果系統(tǒng)需要非常快的啟動(dòng)時(shí)間,初始化時(shí)間可能是一個(gè)重要因素。如果系統(tǒng)需要直接從閃存執(zhí)行代碼(即,而不是陰影到RAM),則在NOR閃存上運(yùn)行是唯一合適的選擇,如下所示。
就地執(zhí)行 XIP:XIP 功能允許系統(tǒng)減小昂貴的 RAM 大小。處理器無(wú)需將代碼影子到 RAM,而是可以直接從 NOR 閃存設(shè)備執(zhí)行。這種方法可以減少處理器支持DRAM器件所需的引腳數(shù)量,從而顯著降低PCB和整體系統(tǒng)成本。
引導(dǎo)要求
不同的應(yīng)用程序?qū)σ龑?dǎo)有不同的要求。在這里,我們從汽車應(yīng)用中選擇一個(gè)示例來(lái)討論具體的啟動(dòng)要求。
圖2顯示了一個(gè)典型的汽車系統(tǒng)。所有子系統(tǒng)都通過(guò)CAN總線或其他網(wǎng)絡(luò)協(xié)議連接。
圖 2:汽車系統(tǒng)框圖。
在汽車應(yīng)用中,CAN總線的啟動(dòng)要求為100 ms。這意味著子系統(tǒng)ECU(電子控制器單元)必須能夠在POR后100毫秒內(nèi)回復(fù)CAN報(bào)文。如果子系統(tǒng)無(wú)法在 100 毫秒內(nèi)啟動(dòng),則可能會(huì)錯(cuò)過(guò)關(guān)鍵的 CAN 消息,這是不可接受的結(jié)果。在設(shè)計(jì)汽車子系統(tǒng)時(shí),除了汽車應(yīng)用的所有常規(guī)要求(如功能安全、溫度范圍等)外,快速啟動(dòng)時(shí)間是需要考慮的重要要求。
對(duì)于需要非常快啟動(dòng)時(shí)間的應(yīng)用,例如上圖所示的汽車機(jī)箱,需要快速內(nèi)存作為啟動(dòng)設(shè)備。可能犯的一個(gè)錯(cuò)誤是將快速讀取帶寬與快速啟動(dòng)時(shí)間相關(guān)聯(lián),因?yàn)檫@只關(guān)注將代碼和數(shù)據(jù)從啟動(dòng)閃存移動(dòng)到 RAM 所需的時(shí)間。但是,如果考慮到設(shè)備初始化時(shí)間和引導(dǎo)加載程序大小,很明顯,從引導(dǎo)閃存讀取時(shí)間并不是引導(dǎo)序列中的主要瓶頸。
現(xiàn)代 NOR 閃存設(shè)備,例如賽普拉斯的 Semper NOR 閃存,提供快速初始化時(shí)間和高帶寬,以最大限度地減少啟動(dòng)。當(dāng)Semper NOR與八進(jìn)制或HyperBus總線協(xié)議中的JEDEC xSPI接口一起使用時(shí),帶寬可以高達(dá)400 MB/s。考慮到 1 MB 到 2 MB 之間的典型 U-boot 大小,400 MB/s 的讀取帶寬相當(dāng)于 5 ms 的讀取時(shí)間,加上 Semper NOR 閃存的最大 300 μs 設(shè)備初始化時(shí)間。將其與大約 100 毫秒的 eMMC 初始化時(shí)間和 50 毫秒的 UFS 初始化時(shí)間進(jìn)行比較。使用Semper NOR閃存的總系統(tǒng)啟動(dòng)明顯低于汽車100 ms啟動(dòng)要求。NOR 閃存器件還符合 ISO 26262 標(biāo)準(zhǔn),并符合 ASIL-B。
在某些應(yīng)用中,例如工業(yè)或物聯(lián)網(wǎng),最好直接在閃存設(shè)備(XIP)上執(zhí)行,而不是將引導(dǎo)加載程序復(fù)制到RAM。將其與使用 eMMC 進(jìn)行存儲(chǔ)和 LPDDR2 RAM 進(jìn)行代碼執(zhí)行的存儲(chǔ)和下載啟動(dòng)方案進(jìn)行比較。DRAM的寬數(shù)據(jù)總線需要多層PCB設(shè)計(jì)來(lái)適應(yīng)。如果處理器直接在 NOR 閃存上運(yùn)行 XIP,例如使用 x8 八通道 SPI 閃存,則引腳數(shù)量會(huì)顯著減少(參見(jiàn)圖 3)。結(jié)果是節(jié)省了多達(dá) 2 到 4 層 PCB 設(shè)計(jì),從而降低了整體系統(tǒng)成本。
圖3.使用 NOR 閃存作為 XIP 設(shè)備。
如前所述,汽車和工業(yè)應(yīng)用要求閃存設(shè)備可靠運(yùn)行超過(guò)15年,并保持存儲(chǔ)數(shù)據(jù)的完整性。通常,SLC NAND和MLC NAND的誤碼率比NOR設(shè)備差。在寫(xiě)入存儲(chǔ)器陣列時(shí)可能發(fā)生位錯(cuò)誤,或者由讀取干擾或其他因素引起的電子泄漏。為了補(bǔ)償丟失數(shù)據(jù)的風(fēng)險(xiǎn),NAND設(shè)備需要高度的ECC校正方案。原始SLC NAND設(shè)備甚至可能需要主機(jī)端的ECC功能。eMMC有自己的控制器來(lái)處理這些功能。SLC NAND和eMMC器件中糾錯(cuò)和壞塊管理的需求增加了整體系統(tǒng)的復(fù)雜性和成本。在滿足功能安全和數(shù)據(jù)可靠性要求時(shí),這也是一個(gè)重要的考慮因素。
NOR 閃存可以提供這些類型的應(yīng)用所需的耐用性。例如,在 Semper NOR 閃存中實(shí)施的 EnduraFlex 技術(shù)在 512 Mb 密度設(shè)備中提供了超過(guò) 100 萬(wàn)個(gè)周期的耐用性,在 1 Gb 設(shè)備中提供了超過(guò) 250 萬(wàn)個(gè)周期的耐用性。這些設(shè)備還可以進(jìn)行分區(qū)和配置,以具有高耐用性和長(zhǎng)保留時(shí)間區(qū)域,從而保證 25 年的數(shù)據(jù)完整性。因此,單個(gè) NOR 閃存設(shè)備能夠靈活地在單個(gè)設(shè)備上存儲(chǔ)引導(dǎo)加載程序代碼和文件系統(tǒng)代碼,兩者在保留和耐久性要求的兩端;即,開(kāi)發(fā)人員可以為引導(dǎo)加載程序代碼配置長(zhǎng)保留區(qū)域,同時(shí)將其他內(nèi)存區(qū)域保留為文件系統(tǒng)的高耐久性區(qū)域。
總之,盡管SLC NAND、eMMC和UFS的每比特成本較低,但NOR閃存器件仍然是嵌入式系統(tǒng)引導(dǎo)設(shè)備的最佳選擇,尤其是在需要非常快的系統(tǒng)啟動(dòng)時(shí)間的應(yīng)用中。NOR 閃存技術(shù)提供了重要的可靠性功能,如快速初始化時(shí)間、XIP 功能以及配置長(zhǎng)保留和高耐久性區(qū)域的靈活性,它正迅速成為需要快速可靠啟動(dòng)的系統(tǒng)的首選非易失性存儲(chǔ)器。
審核編輯:郭婷
-
NOR閃存
+關(guān)注
關(guān)注
0文章
25瀏覽量
14602 -
閃存
+關(guān)注
關(guān)注
16文章
1794瀏覽量
114990 -
嵌入式
+關(guān)注
關(guān)注
5087文章
19148瀏覽量
306156 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7514瀏覽量
164004 -
ROM
+關(guān)注
關(guān)注
4文章
575瀏覽量
85835
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論