天天看點

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動。

  接着上篇文章 《了解i.MXRT1060系列ROM中串行NOR Flash啟動初始化流程優化點》 繼續聊。對于i.MXRT1050為代表的第一代型号,Flash裡必須要放置使用者FDCB配置塊,存儲在這顆Flash裡的App才能被正常啟動。這個設計在i.MXRT1060為代表的第二代型号裡有了改良,BootROM中增加了一個新特性,叫Auto Probe(自動識别),這個特性可以在不放置使用者FDCB配置塊的情況下App也能被正常啟動。今天痞子衡就跟大家好好聊聊這個特性:

備注:本文主角是i.MXRT1060,内容也基本适用i.MXRT1170,僅細節微小差别。

  先從整體FlexSPI NOR啟動初始化流程圖上來看,自動識别(步驟X)被插入了初始化流程中,安排在FlexSPI外設第一次初始化之後,BootROM此時會盡力嘗試去識别外接的Flash資訊,如果識别成功則會得到一個自識别FDCB配置塊,然後直接跳到FlexSPI NOR第二次初始化流程。如果識别失敗,則繼續按原來方式嘗試讀取使用者FDCB配置塊來擷取外接Flash資訊。

  有了Flash自動識别功能,BootROM可以不必再強制客戶在Flash裡放置FDCB塊,很多時候客戶未必特别了解Flash以及這個FDCB塊結構,不用提供FDCB可以為客戶省去很多耗費在Flash上的研發時間,客戶僅需要全心關注App功能設計。

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  Flash自動識别功能開啟位在fuse_0x450[0](或者BT_CFG[0]引腳),預設是不使能的。想要開啟這個功能需要拉高相關CFG引腳或者燒寫相應Fuse位。

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  雖說是Flash自動識别,但其實還是依賴Fuse裡一些配置的,一共有如下四處配置,BootROM會根據這四處配置去進入Flash自動識别程式進而得到一個比對的FDCB配置塊,是以其實這個功能更準确的說法應該是FDCB自動生成。

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動
痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  關于FDCB自動生成,其實就是利用了BootROM裡那一套經典的FlexSPI NOR驅動(詳見痞子衡之前的文章 《利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可輕松IAP》 裡的2.2和2.3節),自動識别就是根據配置值組合出一個比對的 serial_nor_config_option_t option參數,經由flexSpiNorDriver->get_config()函數運作後便可得到完整的flexspi_nor_config_t config結構體(即FDCB)。

  serial_nor_config_option_t option參數組合規則如下表所示:

FLASH TYPE

FLASH PROBE TYPE

option值

備注

3'b000

3'b111

2'b00

0xc0000001

可進一步dummy cycle設定

2'b01

0xc0603001

2'b10

0xc0403001

2'b11

0xc0803001

3'b001

0xc0100001

0xc0700001

0xc0503001

0xc0903001

3'b010

N/A

0xc0233001

3'b011

0xc0333001

3'b100

0xc0433001

3'b101

0xc0633001

3'b110

未定義

  了解了這個自動識别功能細節之後,讓我們在MIMXRT1060-EVK上測試一下,首先需要将BT_CFG[0]引腳拉高(R325電阻焊上去,預設DNP),這就開啟了自動識别功能。

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  MIMXRT1060-EVK上預設連接配接的是IS25WP064AJBLE,這是一顆經典的133MHz QuadSPI NOR Flash,Fuse裡的初始自動識别配置(FLASH_TYPE = 000 - Device supports 3B read,FLASH BOOT FREQ = 0 - 100MHz)适合這顆Flash,是以無需再燒錄任何Fuse或拉高其他BT_CFG[x]引腳。

  随便選一個例程 \SDK\boards\evkmimxrt1060\demo_apps\led_blinky 。編譯這個 led_blinky 工程(可以選擇 flexspi_nor_debug build,工程選項裡XIP_BOOT_HEADER_ENABLE=1現在可以去掉了),使用 NXP-MCUBootUtility 工具将其一鍵下載下傳進Flash中,下載下傳完成後注意擦除掉Flash前1KB的資料(即沒有FDCB),切換啟動模式後複位闆子,可以看到LED正常閃爍,說明自動識别功能生效了。

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  如果我們将MIMXRT1060-EVK上的Flash改為S26KS512SDPBHI02,這是一顆典型的1.8V HyperFlash,那麼還需要将BT_CFG2[2:0]設為 3'b010 - HyperFlash 1V8才能正常自識别。

  至此,自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動痞子衡便介紹完畢了,掌聲在哪裡~~~

文章會同時釋出到我的 部落格園首頁、CSDN首頁、知乎首頁、微信公衆号 平台上。

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

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  最後歡迎關注痞子衡個人微信公衆号【痞子衡嵌入式】,一個專注嵌入式技術的公衆号,跟着痞子衡一起玩轉嵌入式。

痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動
痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動
痞子衡嵌入式:自識别特性(Auto Probe)可以讓i.MXRT1060無需FDCB也能從NOR Flash啟動

  衡傑(痞子衡),目前就職于恩智浦MCU系統部門,擔任嵌入式系統應用工程師。

  專欄内所有文章的轉載請注明出處:http://www.cnblogs.com/henjay724/

  與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]

  可以關注痞子衡的Github首頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。

  關于專欄文章有任何疑問請直接在部落格下面留言,痞子衡會及時回複免費(劃重點)答疑。

  痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。