)
寫在前面嵌入式開發(fā)中存儲選型一直是個經(jīng)典話題。NOR Flash 簡單可靠、支持XIP但容量上去之后價格確實不太友好。并行NAND容量大、成本低但引腳多、占PCB面積還得配ECC和壞塊管理主控要求也高。SPI NAND Flash算是介于兩者之間的一個折中選擇——SPI接口的簡潔性保留下來了NAND的大容量和成本優(yōu)勢也保留了。最近在看XTX芯天下的XT26G02C一款3.3V 2G-bit SPI NAND。翻了翻數(shù)據(jù)手冊整理了一些技術(shù)要點和開發(fā)注意事項分享給大家。一、基本信息先把核心參數(shù)列出來參數(shù)規(guī)格容量2G-bit256M字節(jié)電壓2.7V ~ 3.6V接口標(biāo)準(zhǔn)SPI / Dual SPI / Quad SPI最高時鐘104MHz最大吞吐量416Mbit/sQuad I/O模式工藝SLC封裝WSON88×6mm工作溫度-40℃ ~ 85℃ECC內(nèi)置8-bit ECC每528字節(jié)存儲組織方面2048個塊每塊64頁每頁2176字節(jié)2048字節(jié)數(shù)據(jù)區(qū) 128字節(jié)備用區(qū)塊大小為136K字節(jié)。二、接口與速率XT26G02C支持三種SPI模式標(biāo)準(zhǔn)SPI單線兼容性最好Dual SPI雙線速率翻倍Quad SPI四線速率最高Quad模式下104MHz時鐘理論峰值416Mbit/s。實際應(yīng)用中對于UI資源加載、OTA升級這類場景這個帶寬基本夠用。而且SPI接口只需要4根信號線CLK、CS#、SIO0、SIO1、SIO2、SIO3加上WP#和HOLD#相比并行NAND的十幾根線PCB走線壓力小很多。三、內(nèi)置ECC降低主控門檻這是這顆芯片比較實用的一個特性。NAND Flash的位翻轉(zhuǎn)問題是繞不開的。傳統(tǒng)做法是在主控端做ECC硬件實現(xiàn)或者軟件實現(xiàn)都有。但不管是哪種都要消耗主控資源——要么外設(shè)要有ECC控制器要么CPU要跑ECC算法。XT26G02C內(nèi)置了硬件ECC模塊糾錯能力每528字節(jié)支持8-bit ECC默認開啟寫入自動生成校驗碼讀取自動糾錯支持4-bit ECC狀態(tài)指示對于主控來說讀出來的數(shù)據(jù)已經(jīng)是糾錯后的干凈數(shù)據(jù)不需要額外處理。這意味著可以用更便宜的MCU省下的算力可以給其他任務(wù)軟件復(fù)雜度降低四、緩存機制與操作時序NAND Flash內(nèi)部結(jié)構(gòu)是存儲陣列 ? 緩存寄存器 ? I/O的架構(gòu)。XT26G02C配備了2K-Byte的數(shù)據(jù)緩存Cache。常用操作指令指令說明13hPage Read to Cache將頁數(shù)據(jù)讀到緩存03h / 0BhRead From Cache從緩存讀取數(shù)據(jù)02hPage Program頁編程D8hBlock Erase塊擦除關(guān)鍵時序參數(shù)操作典型時間頁編程Page Program360μs塊擦除Block Erase3.5ms另外芯片支持內(nèi)部數(shù)據(jù)搬運Internal Data Move功能可以在不占用SPI總線的情況下完成頁數(shù)據(jù)的片內(nèi)拷貝。這個特性在垃圾回收和磨損均衡算法中比較有用。五、安全特性UID與OTPXT26G02C提供了兩個安全相關(guān)的特性128-Bit Unique IDUID每顆芯片出廠時燒錄的唯一標(biāo)識符。可用于設(shè)備認證、防克隆、云端注冊等場景不需要額外燒錄。8K-Byte OTP區(qū)域一次性可編程區(qū)域?qū)懭牒蟛豢筛目涉i定。適合存放設(shè)備序列號MAC地址加密密鑰校準(zhǔn)參數(shù)這兩個特性在生產(chǎn)管理和設(shè)備安全認證方面比較實用。六、開發(fā)注意事項以下是數(shù)據(jù)手冊中提到的幾個關(guān)鍵點在實際開發(fā)中需要注意6.1 壞塊管理NAND Flash出廠時可能存在壞塊使用過程中也可能產(chǎn)生新壞塊。出廠壞塊標(biāo)記位于每個Block第一頁的Spare Area第一個字節(jié)非0xFF即為壞塊有效塊數(shù)NVB不低于2008個驅(qū)動中必須實現(xiàn)壞塊掃描和映射表管理建議在初始化階段完成壞塊掃描建立有效的塊映射表。6.2 電源穩(wěn)定性數(shù)據(jù)手冊明確指出編程或擦除操作完成前不能斷電否則可能導(dǎo)致數(shù)據(jù)丟失。對于電池供電的設(shè)備建議增加掉電檢測PVD功能檢測到電壓下降時利用WP#引腳鎖定寫保護固件中加入電源狀態(tài)監(jiān)控6.3 部分頁編程限制在同一個Page內(nèi)連續(xù)的部分頁編程操作NOP不能超過4次。如果需要修改少量數(shù)據(jù)建議將整個Page讀到緩存在緩存中修改數(shù)據(jù)執(zhí)行Page Program寫回而不是反復(fù)對同一頁進行小數(shù)據(jù)量寫入否則可能觸發(fā)芯片保護機制導(dǎo)致操作失敗。6.4 寫保護功能通過WP#引腳可以實現(xiàn)硬件級別的寫保護。在存儲關(guān)鍵數(shù)據(jù)如啟動代碼、配置參數(shù)的場景下建議合理利用此功能防止異常情況下的數(shù)據(jù)破壞。七、適用場景分析基于上述技術(shù)特征XT26G02C適用于以下場景網(wǎng)絡(luò)通信設(shè)備光貓、路由器等需要存儲固件和配置數(shù)據(jù)的設(shè)備。SPI接口簡化了主控選型2Gbit容量足夠存放多版本固件。智能家居與消費電子智能音箱、IPC攝像頭等產(chǎn)品需要存儲啟動代碼、日志數(shù)據(jù)對PCB面積有要求WSON8封裝比較合適。工業(yè)控制與儀表工業(yè)級溫寬-40℃ ~ 85℃和SLC工藝的可靠性適合工業(yè)環(huán)境。內(nèi)置ECC降低了對主控的要求可以用更低成本的方案。車載電子工作溫度范圍滿足車載需求UID特性有助于設(shè)備管理。八、橫向?qū)Ρ萐PI NAND vs NOR vs 并行NAND對比項NOR Flash并行NANDSPI NANDXT26G02C接口復(fù)雜度低SPI高8/16位并行低SPI引腳數(shù)量少~8pin多40pin少~8pin最大容量通常≤512Mb大數(shù)Gb2Gb可擴展XIP支持支持不支持不支持需ShadowingECC需求不需要主控端實現(xiàn)內(nèi)置硬件ECC單位成本高低中低擦寫壽命~10萬次~5萬次SLC~5萬次SLC適用場景代碼存儲、XIP大容量數(shù)據(jù)固件存儲、數(shù)據(jù)存儲SPI NAND填補了NOR和并行NAND之間的市場空白。對于不需要XIP、但需要幾百MB存儲空間的應(yīng)用來說是一個值得考慮的方案。九、總結(jié)XT26G02C的核心價值在于小封裝 SPI接口WSON88×6mm走線簡單適合PCB面積受限的產(chǎn)品內(nèi)置ECC降低主控端軟硬件要求簡化開發(fā)高速Q(mào)uad SPI104MHz/416Mbit/s滿足大多數(shù)據(jù)吞吐需求SLC工藝可靠性高于MLC/TLC適合工業(yè)場景UID OTP簡化設(shè)備管理和安全認證的實現(xiàn)當(dāng)然SPI NAND也有它的局限——不支持XIP代碼需要先加載到RAM執(zhí)行壞塊管理需要在驅(qū)動層處理部分頁編程有次數(shù)限制。選型時根據(jù)具體項目需求權(quán)衡即可。如果項目需要幾百MB存儲、對PCB面積敏感、主控沒有NAND控制器SPI NAND是一個合理的選擇。本文技術(shù)參數(shù)基于XT26G02C數(shù)據(jù)手冊整理具體以官方最新版本為準(zhǔn)。歡迎交流討論。