<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU啟動那些事(10)- 從Serial NAND啟動


        大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MXRT1xxx系列MCU的Serial NAND啟動

        最近越來越多的客戶在咨詢 i.MXRT1xxx 從 Serial NAND 啟動的事情,讓這個本來比較冷門的啟動設備突然火熱起來。據痞子衡的了解,其實客戶主要目的是在應用里基于 Serial NAND 去做文件系統(看起來隨著技術的發展,就文件系統應用或者多媒體數據存儲方面而言 Raw NAND 已經不是絕對優勢了),然后順便用它做應用代碼啟動。借此機會,今天痞子衡就給大家介紹一下 Serial NAND 上制作、下載、啟動程序的方法:

      • Note:文中貼圖、代碼主要以 i.MXRT1050 為例,其余 i.MXRT1xxx 系列原理類似。

      一、支持的Serial NAND

        Serial NAND 廠商非常多,對應 Serial NAND 芯片型號也很多,如果你在選型時不確定到底該為 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 連接設計,板載默認 U33 芯片是 Serial NOR Flash,我們可以換成同封裝 Serial NAND,痞子衡就將其換成了 MX35LF2G24AD 來做測試,當然 FLASH_VCC 也相應改成了 3.3V:

      三、Serial NAND加載啟動過程

        我們知道 Serial NAND 中僅能放置 Non-XIP Application(鏈接到內部 SRAM 或者 外部 RAM 空間),其啟動加載流程跟 《從 Serial(1-bit SPI) NOR/EEPROM恢復啟動》 加載流程差不多(參考文章第 3 小節)。

        i.MXRT BootROM 中對于 Serial NAND 啟動流程處理和對于 Raw NAND 啟動處理幾乎是一樣的,都是依賴 FCB 和 DBBT 這兩個數據結構(當然 Serial NAND 和 Raw NAND 里對于這兩個數據結構具體成員定義有差異)。關于 FCB 和 DBBT 的使用,痞子衡在《i.MXRT從Raw NAND啟動》一文中三、四小節講得很清楚,這里不再贅述。

        i.MXRT1050 參考手冊 System Boot 章節里畫了上電啟動時 BootROM 代碼搜索 FCB 和 DBBT 的流程,能找到這兩個數據,應用程序就能夠被正常加載。這里需要特別注意,FCB 和 DBBT 是在配套 Flashloader 執行過程中動態生成的,因為涉及 NAND Flash 里具體壞塊分布信息,所以無法在 PC 端直接制作 FCB 和 DBBT,這就意味著我們無法像 NOR Flash 那樣事先得到一個完整的含全部啟動頭(FCB&DBBT&IVT&BD)的 NAND bootable image。

      四、下載Application進Serial NAND

        現在假定你已經制作好一個 Bootable image 并且使用 blhost 工具與 Flashloader 建立了基本通信,正要開始將 Bootable image 下載進 Serial NAND。此時我們只需要提供簡化的 12 - 44byte 配置數據就可以完成 Serial NAND 的全部配置,下面是適用 MX35LF2G24AD 的 Application 下載更新示例:

      // 在 SRAM 里臨時存儲 Serial NAND 配置數據(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 配置數據(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 配置數據去配置 FlexSPI 接口以及寫入完整 FCB, DBBT 數據
      blhost -u -- configure-memory 0x101 0x20202000
      

        上述 fill-memory 命令中 FCB Opt 配置數據組織詳見下表:

        上述 fill-memory 命令中 NAND Opt 配置數據組織詳見下表:

        上表 12 - 44byte 數據提供的配置信息主要是 FCB 和 NAND 屬性。configure-memory 命令執行成功之后,底下只需要將 Bootable image 從 Serial NAND 對應 Block 地址處開始下載即可,具體步驟如下:

      // 擦除 Serial NAND 并將 image 下載進 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 的鏡像文件
      

        當然以上所有繁雜的命令行操作都可以使用 MCUBootUtility 工具(v5.2.1及以上)來一鍵完成:

      五、進入Serial NAND啟動模式

        Application 已經被成功下載進 Serial NAND 卡之后,此時我們便可以開始設置芯片從 Serial NAND 啟動。

        先確定 BOOT_MODE[1:0]=2'b10,即芯片處于 Internal Boot 模式,再來選擇 Boot Device,Boot Device 由 BOOT_CFG1[7:4] 這四個 pin 的輸入狀態決定,其中 Serial NAND 啟動模式為 4'b11xx。

      六、配置eFuse啟動Serial NAND

        設置好芯片啟動模式是從 Serial NAND 啟動之后,我們還需要最后關注一下與 Serial NAND 相關的具體特性配置,主要集中在芯片內部 eFuse 0x6e0/0x450 區域里,根據前面配置,這里我們只需要設置 BOOT_SEARCH_COUNT bit 為 1,其余保持默認 0 即可。

        這里單獨解釋下 COL_ADDRESS_WIDTH 默認 0 即 12bits,看起來對應了 4KB Page size,但是因為 ECC 特性,這樣設置下的低 2KB page 空間存真實數據,高 2KB page 空間其實屬于所謂 Spare 空間,會被 Flash 自動用來存放 ECC 校驗碼,不過這個 Spare 空間有效范圍 64byte-128byte 不等(對于 MX35LF2G24AD 則是 128)。

        上述所有步驟全部完成之后,復位芯片你就應該能看到你放在 Serial NAND 里的 Application 已經正常地啟動了。

        至此,恩智浦i.MXRT1xxx系列MCU的Serial NAND啟動痞子衡便介紹完畢了,掌聲在哪里~~~

      歡迎訂閱

      文章會同時發布到我的 博客園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

      微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。

      posted @ 2023-07-19 22:29  痞子衡  閱讀(480)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 国产高清国产精品国产专区| 国产粉嫩区一区二区三区| 17岁日本免费bd完整版观看| 国产一区二区三中文字幕| 四虎影视库国产精品一区| 米脂县| 国产va免费精品观看精品| 永久免费AV无码网站大全| 男人的天堂av一二三区| 吉安市| 日本污视频在线观看| 日韩精品成人网页视频在线| 亚洲精品二区在线播放| 成人欧美日韩一区二区三区| 国产高清在线男人的天堂| 四虎网址| 亚洲中文久久久精品无码| 免费人成在线视频无码| 在线看片免费不卡人成视频| 午夜免费无码福利视频麻豆| 国产精品激情av在线播放| 日本精品中文字幕在线不卡| 无套内谢少妇毛片在线| 精品国产粉嫩一区二区三区| 美女扒开奶罩露出奶头视频网站| 久久精品熟妇丰满人妻久久| 亚洲熟女国产熟女二区三区| 四虎永久精品免费视频| 人妻综合专区第一页| 国产无人区码一区二区| 国产午夜福利小视频合集 | 免费国产一级 片内射老| 亚洲国产av剧一区二区三区| 亚洲成精品动漫久久精久| 国产精品久久国产精麻豆99网站 | 亚洲色最新高清AV网站| 97久久精品人人澡人人爽| 中文字幕免费不卡二区| 好吊妞| 国产一区| 色综合天天色综合久久网|