加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 一、整體初始化流程
    • 二、初始化流程差異
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

i.MXRT1060在串行NOR Flash啟動(dòng)初始化流程上做了哪些優(yōu)化?

2020/12/14
130
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是 i.MXRT1060 系列 ROM 中串行 NOR Flash 啟動(dòng)初始化流程優(yōu)化點(diǎn)。

前段時(shí)間痞子衡寫了一篇 《深入 i.MXRT1050 系列 ROM 中串行 NOR Flash 啟動(dòng)初始化流程》,那篇文章如果你認(rèn)真讀,你會(huì)發(fā)現(xiàn)為了能讓 i.MXRT 系列盡可能地支持來自不同廠商的不同串行 NOR Flash 型號(hào),而且還得發(fā)揮 Flash 最好性能,BootROM 可謂煞費(fèi)苦心,做了很多精心設(shè)計(jì)。

i.MXRT1060 是在 i.MXRT1050 之后發(fā)布的,相比 i.MXRT1050 在 FlexSPI NOR 啟動(dòng)初始化上有了一些優(yōu)化點(diǎn),今天痞子衡就跟大家聊一聊這些優(yōu)化點(diǎn)(或者說差異的地方):

  • 備注:本文主角是 i.MXRT1060,但內(nèi)容也基本適用 i.MXRT1170,僅細(xì)節(jié)微小差別。

?

一、整體初始化流程

跟上一篇文章一樣,痞子衡重畫了 i.MXRT1060 的 FlexSPI NOR 啟動(dòng)流程圖,從流程上來看,其和 i.MXRT1050 有兩處主要差異,第一個(gè)是步驟 0(冗余 App 啟動(dòng)支持)和步驟 X(Auto Probe),除此以外,還有一些微小差異(JEDEC 硬件復(fù)位,延時(shí)等待策略等)。

?

二、初始化流程差異

本文不會(huì)介紹步驟 X(Auto Probe 特性),主要是說一下其他差異,步驟 X 是個(gè)特別重要的改進(jìn),痞子衡會(huì)另起一文單獨(dú)介紹。

?

2.1 冗余 App 啟動(dòng)

第一個(gè)要提的便是新增的冗余 App 啟動(dòng)支持,即步驟 0,痞子衡之前寫過一篇文章 《利用 i.MXRT1060,1010 上新增的 FlexSPI 地址重映射(Remap)功能可安全 OTA》,這篇文章的第二節(jié)講了 i.MXRT1060 上多了一個(gè) Remap 功能,這個(gè)功能使得 Flash 里可以存放多份相同鏈接地址的 XIP App(偏移 0x0 處固定放 App1;偏移 0x100000 處(這個(gè)地址用戶自定義)放了 App2),借助 Remap 功能可以將 Flash 里 App2 在內(nèi)存映射地址上直接覆蓋到 App1 處,不需要物理上的實(shí)際搬移。

fuse 0x6e0[15:13] - xSPI_FLASH_IMAGE_SIZE,第二份 App 的實(shí)際位置,即填入 Remap 功能的 ADDR_END 寄存器的值。
fuse 0x6e0[23:16] - FLEXSPI_NOR_SEC_IMAGE_OFFSET,第二份 App 的實(shí)際大小,即填入 Remap 功能的 ADDR_OFFSET 寄存器的值。

?

BootROM 中支持冗余 App 啟動(dòng),并不是常見的 OTA 用意,而是防 App 誤損壞導(dǎo)致設(shè)備無法啟動(dòng),因此 App1 固定在偏移 0x0 地址,App2 永遠(yuǎn)是覆蓋 App1,這意味著 App2 必須跟 App1 一樣都是包含 FDCB, IVT, BootData 等完整啟動(dòng)頭的 App。BootROM 上電永遠(yuǎn)先嘗試啟動(dòng) App1,如 App1 無法啟動(dòng),則嘗試啟動(dòng) App2。我們知道,多份 App 都損壞是小概率事件。

  • 備注 1:這個(gè)功能在 i.MXRT1010 上同樣存在,畢竟 i.MXRT1010 支持 Remap。備注 2:這個(gè)功能雖存在于 i.MXRT1170 上,但步驟移到了 FlexSPI 第二次初始化之后。

?

2.2 延時(shí)等待策略

在 i.MXRT1050 FlexSPI NOR 啟動(dòng)初始化步驟 4 里的善后工作里,有一個(gè)借助調(diào)用 microseconds_delay()做延時(shí)以使 FlexSPI 外設(shè)以及 Flash 完全準(zhǔn)備好的操作,這個(gè)操作在 i.MXRT1060 上被從步驟 4 移到了步驟 1 前后,即復(fù)位 Flash 前做一次,復(fù)位 Flash 后再做一次。

  • 備注 1:復(fù)位 Flash 前的那一次延時(shí)操作,實(shí)際 hold time 要減去 3ms(如 hold time 設(shè)置小于 3ms,則只減 3ms),因?yàn)閺?fù)位 Flash 前屬于系統(tǒng)上電啟動(dòng),ROM 本身執(zhí)行到開始訪問 Flash 就需要時(shí)間,所以 Flash 差不多有近 3ms 的上電等待時(shí)間了。備注 2:hold time 在 fuse 中的位置從 i.MXRT1050 上的 0x450[3:2]被移到了 i.MXRT1060 上的 0x6e0[5:4]。

?

2.3 JEDEC 標(biāo)準(zhǔn)復(fù)位

i.MXRT1060 在復(fù)位 Flash 上多了一個(gè) JEDEC 標(biāo)準(zhǔn)的硬件復(fù)位選項(xiàng),也包含在步驟 1 里面,這個(gè)復(fù)位僅針對(duì) Adesto ATXP 系列為代表的 Flash 有效,需要 Flash 本身支持 JEDEC 制定的硬件復(fù)位功能。

至此,i.MXRT1060 系列 ROM 中串行 NOR Flash 啟動(dòng)初始化流程優(yōu)化點(diǎn)痞子衡便介紹完畢了,掌聲在哪里~~~

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

碩士畢業(yè)于蘇州大學(xué)電子信息學(xué)院,目前就職于恩智浦(NXP)半導(dǎo)體MCU系統(tǒng)部門,擔(dān)任嵌入式系統(tǒng)應(yīng)用工程師。痞子衡會(huì)定期分享嵌入式相關(guān)文章