-
Note:文中貼圖、代碼主要以 i.MXRT1050 為例,其余 i.MXRT1xxx 系列原理類似
支持的Serial NAND
SerialNAND 對應(yīng)的芯片型號很多,如果你在選型時不確定選擇哪一款i.MXRT Serial NAND 時,建議可選下面四款芯片,小編均已實測過:-
Macronix MX35LF2G24AD (120MHz,x4 bits, 2KB Page/128KB Block/2Gb Device,8-bit/544byte ECC, 3.3V)
-
Winbond W25N01GV (104MHz,x4 bits, 2KB Page/128KB Block/1Gb Device,1-bit/528byte ECC, 3.3V)
-
GigaDevice GD5F1GQ5UEYIG (133MHz,x4 bits, 2KB Page/128KB Block/1Gb Device,4-bit/528byte ECC, 3.3V)
-
Micron MT29F1G01ABA (133MHz,x4 bits, 2KB Page/128KB Block/1Gb Device,8-bit/Sector ECC, 3.3V)
需要注意的是,與 《i.MXRT從Raw NAND啟動》 里既可使用純軟件 ECC 也可利用 Flash 自帶硬件ECC特性,不同的是 Serial NAND 啟動必須依賴Flash 自帶硬件 ECC。
Serial NAND硬件連接
目前i.MXRT1010/1024/1064 不支持 Serial NAND 啟動,其余 i.MXRT1xxx 都可以支持的。其中 i.MXRT10xx 系列只支持一組引腳連接組合,而 i.MXRT11xx 則支持多組引腳連接組合。i.MXRT1050 BootROM 支持如下 pinmux 來連接 Serial NAND 去啟動:
如下是IMXRT1050EVK12_Rev.A 板上四線 QSPI Flash 連接設(shè)計,板載默認(rèn) U33 芯片是 Serial NOR Flash,可以換成同封裝 Serial NAND,小編就將其換成了 MX35LF2G24AD 來做測試,當(dāng)然 FLASH_VCC 也相應(yīng)改成了 3.3V:
Serial NAND加載啟動過程
我們知道Serial NAND 中僅能放置 Non-XIP Application(鏈接到內(nèi)部 SRAM 或者 外部 RAM 空間),其啟動加載流程跟 《從 Serial(1-bit SPI)NOR/EEPROM恢復(fù)啟動》加載流程相近(參考文章第 3 小節(jié))。
i.MXRTBootROM 對于 Serial NAND 啟動流程處理和對于 Raw NAND 啟動處理幾乎是一樣的,都是依賴 FCB 和 DBBT 這兩個數(shù)據(jù)結(jié)構(gòu)(當(dāng)然 Serial NAND 和 Raw NAND 里對于這兩個數(shù)據(jù)結(jié)構(gòu)具體成員定義有差異)。關(guān)于 FCB 和 DBBT 的使用,小編在《i.MXRT從Raw NAND啟動》一文中三、四小節(jié)講得很清楚,這里不再贅述。
i.MXRT1050參考手冊 System Boot 章節(jié)里附上了上電啟動時 BootROM 代碼搜索 FCB 和DBBT 的流程,能找到這兩個數(shù)據(jù),應(yīng)用程序就能夠被正常加載。
這里需要特別注意,F(xiàn)CB 和 DBBT 是在配套 Flashloader 執(zhí)行過程中動態(tài)生成的,因為涉及 NAND Flash 里具體壞塊分布信息,所以無法在 PC 端直接制作 FCB 和 DBBT,這就意味著我們不能像 NOR Flash 那樣提前得到一個完整的啟動頭(FCB&DBBT&IVT&BD)的 NAND bootable image。
下載Application進(jìn)Serial NAND
現(xiàn)在假定你已經(jīng)制作好一個 Bootable image 并且使用 blhost 工具與 Flashloader 建立了基本通信,正要開始將 Bootable image 下載進(jìn) Serial NAND。此時我們只需要提供簡化的 12 - 44byte 配置數(shù)據(jù)就可以完成 Serial NAND 的全部配置,下面是適用 MX35LF2G24AD 的 Application 下載更新示例:
// 在 SRAM 里臨時存儲 Serial NAND 配置數(shù)據(jù)(FCB Opt)
blhost -u -- fill-memory 0x20202000 0x4 0xC2000103 // searchCount=2, searchStride = 64 pages, Address type: Block Address, Option Block size: 3 long words
blhost -u -- fill-memory 0x20202004 0x4 0x2020200C // nand opt address
blhost -u -- fill-memory 0x20202008 0x4 0x4004 // image0 從 Block 4 開始,長度最大 4 個 Block
// 在 SRAM 里臨時存儲 Serial NAND 配置數(shù)據(jù)(NAND Opt)
blhost -u -- fill-memory 0x2020200C 0x4 0xC0020023 // Flash size: 2Gbit, 1 Plane, 64 Pages/Block, 2KB Page Size, Max Freq:60MHz
// 使用 Serial NAND 配置數(shù)據(jù)去配置 FlexSPI 接口以及寫入完整 FCB, DBBT 數(shù)據(jù)
blhost -u -- configure-memory 0x101 0x20202000
上述fill-memory 命令中 FCB Opt 配置數(shù)據(jù)組織詳見下表:
上述fill-memory 命令中 NAND Opt 配置數(shù)據(jù)組織詳見下表:上表12 - 44byte 數(shù)據(jù)提供的配置信息主要是 FCB 和NAND 屬性。configure-memory 命令執(zhí)行成功之后,底下只需要將 Bootable image 從 Serial NAND 對應(yīng) Block 地址處開始下載即可,具體步驟如下:
// 擦除 Serial NAND 并將 image 下載進(jìn) Serial NAND
blhost -u -- flash-erase-region 0x4 0x4 0x101 // 從第4個Block開始擦除,范圍為4個Block長度
blhost -u -- write-memory 0x4 bt_image.bin 0x101 // 從第4個Block開始下載含 ivt, bd 的鏡像文件
當(dāng)然以上所有繁雜的命令行操作都可以使用 MCUBootUtility 工具(v5.2.1及以上)來一鍵完成:
進(jìn)入Serial NAND啟動模式
Application已經(jīng)被成功下載進(jìn) Serial NAND 卡之后,此時我們便可以開始設(shè)置芯片從 Serial NAND 啟動。
先確定BOOT_MODE[1:0]=2'b10,即芯片處于 Internal Boot 模式,再來選擇 Boot Device,Boot Device 由 BOOT_CFG1[7:4] 這四個 pin 的輸入狀態(tài)決定,其中 Serial NAND 啟動模式為 4'b11xx。
配置eFuse啟動Serial NAND
設(shè)置好芯片啟動模式是從 Serial NAND 啟動之后,我們還需要最后關(guān)注一下與 Serial NAND 相關(guān)的具體特性配置,主要集中在芯片內(nèi)部 eFuse 0x6e0/0x450 區(qū)域里,根據(jù)前面配置,這里我們只需要設(shè)置BOOT_SEARCH_COUNT bit 為 1,其余保持默認(rèn) 0 即可。
這里單獨解釋下 COL_ADDRESS_WIDTH 默認(rèn) 0 即 12bits,看起來對應(yīng)了 4KB Page size,但是因為 ECC 特性,這樣設(shè)置下的低 2KB page 空間存真實數(shù)據(jù),高 2KB page 空間其實屬于所謂 Spare 空間,會被 Flash 自動用來存放 ECC 校驗碼,不過這個 Spare 空間有效范圍 64byte-128byte 不等(對于 MX35LF2G24AD 則是 128)。
上述所有步驟全部完成之后,復(fù)位芯片你就應(yīng)該能看到你放在 Serial NAND 里的 Application 已經(jīng)正常地啟動了。感興趣的伙伴可以實測一下~
END
更多恩智浦AI-IoT市場和產(chǎn)品信息,邀您同時關(guān)注“NXP客?!蔽⑿殴娞?/span>
? ? ?NXP客棧
恩智浦致力于打造安全的連接和基礎(chǔ)設(shè)施解決方案,為智慧生活保駕護(hù)航。
長按二維碼,關(guān)注我們
恩智浦MCU加油站
這是由恩智浦官方運營的公眾號,著重為您推薦恩智浦MCU的產(chǎn)品信息、開發(fā)技巧、教程文檔、培訓(xùn)課程等內(nèi)容。
長按二維碼,關(guān)注我們
原文標(biāo)題:Serial NAND i.MX RT1xxx啟動
文章出處:【微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351197 -
恩智浦
+關(guān)注
關(guān)注
14文章
5860瀏覽量
107461
原文標(biāo)題:Serial NAND i.MX RT1xxx啟動
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論