許多嵌入式系統(tǒng)利用非易失性存儲器來存儲引導代碼、配置參數(shù)和其他在系統(tǒng)斷電時仍然存在的數(shù)據(jù)。今天,閃存在大多數(shù)嵌入式系統(tǒng)中都扮演著這個角色。鑒于需要 Flash 的應用程序范圍廣泛,因此有多種架構和功能集可以滿足應用程序的不同要求。
常見的閃存技術包括并行或 SPI NOR 閃存、SLC NAND 和 eMMC 設備。最近,通用閃存 (UFS) 也成為了一種選擇。本文探討了這些不同類型閃存在嵌入式系統(tǒng)引導環(huán)境中的優(yōu)缺點。
嵌入式系統(tǒng)啟動的復雜性
從外部的角度來看,啟動嵌入式系統(tǒng)可能看起來很容易。但是,啟動涉及許多步驟,如果需要快速可靠的啟動,則需要仔細考慮設計。

圖 1:嵌入式系統(tǒng)啟動序列的各個階段。
通常,嵌入式系統(tǒng)啟動序列(參見圖 1)包括以下步驟:
上電或硬件復位:這是啟動嵌入式系統(tǒng)的第一步。它可以打開系統(tǒng)電源或觸發(fā)系統(tǒng)的硬件重置。從此時開始,系統(tǒng)開始執(zhí)行代碼。
Boot ROM 或 Bootstrapped:內核跳轉到復位向量并嘗試執(zhí)行第一個代碼。一些處理器有一個小的內部引導 ROM,可以在制造時進行編程。Boot ROM 代碼可以執(zhí)行處理器的一些基本初始化,例如設置時鐘、堆棧、中斷等。boot ROM 還可以檢測引導加載程序的存儲位置;例如,在外部 NOR 或 NAND 閃存設備中。
某些處理器可以引導以直接執(zhí)行來自外部閃存設備的代碼。這通常需要處理器的硬件本身支持與外部閃存設備通信的特定總線接口,因為尚未完成軟件初始化。
Bootloader XIP 或 Shadowing:為了讓處理器執(zhí)行代碼,隨機訪問代碼存儲空間是必要的。如果使用 NOR Flash 設備存儲引導加載程序,處理器可以直接從 Flash 設備運行。這種方法通常稱為就地執(zhí)行 (XIP)。如果使用 NAND 或 eMMC 設備,首先需要將引導代碼復制到系統(tǒng)的 RAM。然后處理器可以跳轉到RAM空間并執(zhí)行。這種方法稱為陰影或存儲和下載 (SnD)。
此階段的引導加載程序有時稱為第二階段引導加載程序(例如,用于 Linux 應用程序的 U-boot)。它用于設置系統(tǒng)并加載剩余的軟件,例如操作系統(tǒng)和文件系統(tǒng)。它還可以通過引導 ROM 或硬件尚未原生支持的外圍設備執(zhí)行系統(tǒng)初始化并繼續(xù)引導過程。
引導加載程序初始化后,系統(tǒng)可以開始處理基本的中斷和簡單的操作任務。
內核操作系統(tǒng)和/或文件系統(tǒng):這是一個可選步驟,具體取決于系統(tǒng)。如果嵌入式系統(tǒng)使用操作系統(tǒng)或文件系統(tǒng),這些軟件組件也需要加載到 RAM 內存中。由于操作系統(tǒng)和文件系統(tǒng)的軟件體積較大,系統(tǒng)完成此步驟并在完全運行模式下運行需要更長的時間。
加載所有軟件組件后,用戶應用程序可以開始運行:一個常見用例是使用 Flash 存儲第二階段引導加載程序以及操作系統(tǒng)和文件系統(tǒng)軟件。引導加載程序啟動后,系統(tǒng)功能有限,并繼續(xù)引導過程以加載操作系統(tǒng)和文件系統(tǒng)。
不同目標應用程序的優(yōu)先級
在決定用于啟動嵌入式系統(tǒng)的閃存類型之前,請考慮目標應用程序要求和用戶期望。表 1 總結了不同細分市場的首要任務。

表 1. 應用優(yōu)先級因細分市場而異。
對于汽車和工業(yè)應用,首要任務如下:
功能安全:功能安全是關于消除由于電子系統(tǒng)故障行為引起的危險而導致的不合理風險。這是設計汽車或工業(yè)應用時的主要考慮因素。選擇以功能安全為設計理念的設備有助于實現(xiàn)所需的汽車或工業(yè)安全標準,例如 ISO 26262。在需要高級功能安全的情況下,使用專為功能安全而設計的設備至關重要。
可靠性:當使用閃存設備存儲引導代碼時,在產(chǎn)品的整個生命周期內,每次上電時都必須可靠地讀取正確的數(shù)據(jù)。Flash 的數(shù)據(jù)保留時間對于通常是靜態(tài)的引導加載程序代碼很重要。對于手機等消費產(chǎn)品,預期壽命很短。但是,對于汽車和工業(yè)應用,閃存設備必須使用 15 年以上,并且需要在系統(tǒng)的整個生命周期內保持數(shù)據(jù)完整性。
安全性:隨著設備的不斷互聯(lián),數(shù)據(jù)安全變得越來越重要。采用強大安全技術的數(shù)據(jù)存儲可以保護專有信息和商業(yè)機密等關鍵內容。較新的閃存設備提供不同級別的安全性,以防止數(shù)據(jù)被覆蓋、無意擦除和復制到克隆設備。通過加密和其他加密技術,閃存設備可以用于可信引導鏈。
性能:啟動設備的性能直接影響系統(tǒng)啟動時間和操作,尤其是在必須保證系統(tǒng)在上電后一定時間內啟動并運行的應用程序中。對于用于啟動的閃存設備,性能因素不僅與從設備中讀取數(shù)據(jù)的速度有關,還與系統(tǒng)電源對設備本身的初始化速度有關。
耐用性:閃存設備中的耐用性定義了存儲器可以被編程和擦除多少次,同時仍保持其指定的保留時間。對于許多嵌入式系統(tǒng),數(shù)據(jù)必須可靠多年,即使 Flash 被反復讀取、擦除和編程。
雖然 NOR 閃存和 SLC NAND 通常具有 10K 到 100K 范圍內的耐用周期,但 MLC NAND 可能只有 5K 或更少的周期。TLC NAND 甚至只能提供數(shù)百個周期。通常,閃存單元越密集,在永久單元故障之前可以執(zhí)行的擦除和寫入操作就越少。
NOR Flash、SLC NAND、eMMC、UFS的比較
根據(jù)其底層技術的性質,每種類型的閃存設備都具有可能適用于一種應用而不適用于另一種應用的特性。表 2 提供了與嵌入式系統(tǒng)設計相關的特性比較。

表 2. 嵌入式系統(tǒng)中使用的不同 Flash 類型的比較。
表中提到的一些因素通常是眾所周知的,例如密度、支持的溫度范圍和讀取帶寬。根據(jù)特定的引導加載程序,設計人員可以選擇合適的引導設備。例如,如果引導加載程序的大小非常大,則需要更大的設備來存儲這樣的引導加載程序。然而,大多數(shù)引導加載程序,例如 u-boot,都在兆字節(jié)的數(shù)量級,并且在 NOR 閃存的密度范圍內。這意味著用戶可能有很多選擇需要考慮。
其他需要考慮的重要因素包括設備初始化時間、XIP 功能和數(shù)據(jù)可靠性。
設備初始化:這是從設備上電到能夠可靠輸出數(shù)據(jù)的時間。如果系統(tǒng)需要非??斓膯訒r間,那么初始化時間可能是一個重要因素。如果系統(tǒng)需要直接從 Flash 執(zhí)行代碼(即,而不是映射到 RAM),則在 NOR Flash 上運行是唯一合適的選擇,如下所示。
eXecute In Place XIP:XIP 功能允許系統(tǒng)減少昂貴的 RAM 大小。處理器可以直接從 NOR 閃存設備執(zhí)行,而不是將代碼映射到 RAM。這種方法可以減少處理器支持 DRAM 設備所需的引腳數(shù)量,從而顯著降低 PCB 和整體系統(tǒng)成本。
引導要求
不同的應用程序對啟動有不同的要求。在這里,我們從汽車應用中選擇一個示例來討論特定的啟動要求。
圖 2 顯示了一個典型的汽車系統(tǒng)。所有子系統(tǒng)都通過 CAN 總線或其他網(wǎng)絡協(xié)議連接。

圖 2:汽車系統(tǒng)框圖。
在汽車應用中,CAN 總線的啟動要求為 100 ms。這意味著子系統(tǒng) ECU(電子控制器單元)必須能夠在 POR 后 100 毫秒內回復 CAN 消息。如果子系統(tǒng)無法在 100 毫秒內啟動,它可能會錯過關鍵的 CAN 消息,這是不可接受的結果。在設計汽車子系統(tǒng)時,除了汽車應用的所有常見要求(如功能安全、溫度范圍等)之外,快速啟動時間是一個重要的要求。
對于需要非??斓膯訒r間的應用,例如上述汽車案例,需要快速存儲器作為啟動設備。可能犯的一個錯誤是將快速讀取帶寬與快速啟動時間聯(lián)系起來,因為這只關注將代碼和數(shù)據(jù)從啟動閃存移動到 RAM 所需的時間。但是,如果考慮到設備初始化時間和引導加載程序大小,很明顯,從引導閃存讀取時間并不是引導序列中的主要瓶頸。
現(xiàn)代 NOR 閃存設備,例如賽普拉斯的 Semper NOR 閃存,提供快速的初始化時間和高帶寬,以最大限度地減少啟動。當 Semper NOR 與八通道或 HyperBus 總線協(xié)議中的 JEDEC xSPI 接口一起使用時,其帶寬可高達 400 MB/s??紤]到典型的 U-boot 大小在 1 MB 到 2 MB 之間,400 MB/s 的讀取帶寬轉換為 5 ms 的讀取時間,加上 Semper NOR Flash 的最大 300 μs 設備初始化時間。將此與大約 100 ms 的 eMMC 初始化時間和 50 ms 的 UFS 初始化時間進行比較。使用 Semper NOR 閃存的總系統(tǒng)啟動明顯低于汽車 100 毫秒啟動要求。NOR 閃存器件還符合 ISO 26262 標準,并符合 ASIL-B。
在工業(yè)或物聯(lián)網(wǎng)等某些應用中,希望直接在閃存設備 (XIP) 上執(zhí)行,而不是將引導加載程序復制到 RAM。將此與使用 eMMC 進行存儲并使用 LPDDR2 RAM 進行代碼執(zhí)行的存儲和下載啟動方案進行比較。DRAM 的寬數(shù)據(jù)總線需要多層 PCB 設計才能適應。如果處理器使用例如 x8 Octal SPI Flash 直接在 NOR Flash 上運行 XIP,則引腳數(shù)會顯著減少(參見圖 3)。結果是節(jié)省了多達 2 到 4 層 PCB 設計,從而降低了整體系統(tǒng)成本。

圖 3. 使用 NOR Flash 作為 XIP 設備。
如前所述,汽車和工業(yè)應用要求閃存設備能夠可靠運行 15 年以上并保持存儲數(shù)據(jù)的完整性。通常,SLC NAND 和 MLC NAND 的誤碼率比 NOR 設備差。位錯誤可能發(fā)生在寫入存儲器陣列時,或由于讀取干擾或其他因素引起的電子泄漏。為了彌補丟失數(shù)據(jù)的風險,NAND 設備需要高度的 ECC 校正方案。原始 SLC NAND 設備甚至可能需要主機端的 ECC 功能。eMMC 有自己的控制器來處理這些功能。SLC NAND 和 eMMC 設備中對糾錯和壞塊管理的需求增加了整體系統(tǒng)的復雜性和成本。這也是滿足功能安全和數(shù)據(jù)可靠性要求的重要考慮因素。
NOR Flash 可以提供這些類型的應用所需的耐用性。例如,在 Semper NOR 閃存中實施的 EnduraFlex 技術在 512 Mb 密度設備中提供超過 100 萬次的耐久性循環(huán),在 1 Gb 設備中提供超過 250 萬次循環(huán)的耐久性。這些設備還可以進行分區(qū)和配置以具有高耐用性和長保留時間區(qū)域,從而保證 25 年的數(shù)據(jù)完整性。因此,單個 NOR 閃存設備能夠靈活地在單個設備上存儲引導加載程序代碼和文件系統(tǒng)代碼,同時滿足保留和耐用性要求;即,開發(fā)人員可以為引導加載程序代碼提供長保留區(qū)域,同時將其他內存區(qū)域保留為文件系統(tǒng)的高耐久性區(qū)域。
總之,雖然 SLC NAND、eMMC 和 UFS 的每比特成本較低,但 NOR 閃存器件仍然是嵌入式系統(tǒng)啟動設備的最佳選擇,尤其是在需要非常快的系統(tǒng)啟動時間的應用中。憑借 NOR 閃存技術提供重要的可靠性特性,例如快速初始化時間、XIP 功能以及配置長保留和高耐久性區(qū)域的靈活性,它正迅速成為需要快速可靠啟動的系統(tǒng)的首選非易失性存儲器。
審核編輯:郭婷
電子發(fā)燒友App













評論