性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

痞子衡
認(rèn)證:普通會(huì)員
作者動(dòng)態(tài)
有時(shí)候MCU片內(nèi)合封Flash就是個(gè)黑盒子!
3天前
有人說高性能MCU片內(nèi)合封Flash不可靠?
5天前
竟有可以從AP直接加載程序啟動(dòng)的MCU!
2星期前
初識(shí)恩智浦MCU里最“浪漫”外設(shè)XBAR
04-15 09:24
MCU偵探社:更換大容量啟動(dòng)Flash,二級(jí)App異常了?
03-21 14:13

i.MXRT四位數(shù)系列Boot配置方式

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是飛思卡爾i.MX RTyyyy系列MCU的Boot配置

在上一篇文章 Boot簡介 里痞子衡為大家介紹了Boot基本原理以及i.MXRTyyyy Boot方式簡介。今天痞子衡就來重點(diǎn)聊一聊i.MXRTyyyy Boot方式具體由哪些配置決定的。

無論是什么芯片里的BootROM,其最核心的功能無非兩個(gè):一、從存放Application的存儲(chǔ)器中加載執(zhí)行;二、通過支持的通信接口接收來自Host的Application數(shù)據(jù)完成更新,所以Boot配置也主要圍繞這兩個(gè)核心功能。

一、Boot行為模式選擇

BOOT_MODE[1:0] pin是決定i.MXRTyyyy Boot行為的最頂層配置,但是與上一篇文章里介紹的Kinetis/LPC/STM32 Boot Mode配置不同的是,i.MXRTyyyy上電永遠(yuǎn)是從ROM里開始啟動(dòng),此處的BOOT_MODE[1:0]決定的僅是BootROM程序的不同行為模式(執(zhí)行代碼分支),而Kinetis/LPC/STM32 Boot Mode側(cè)重的是決定CPU從ROM還是FLASH里啟動(dòng)。

1.1 BOOT_MODE[1:0] Pinout

下表是BOOT_MODE相關(guān)pinout信息,可在參考手冊的External Signals and Pin Multiplexing章節(jié)中找到?! .MXRT105x / i.MXRT106x pinout:

  i.MXRT102x pinout:

1.2 BMOD[1:0]三種模式

BOOT_MODE[1:0] pin狀態(tài)是在POR_B pin上沿時(shí)被自動(dòng)采樣存儲(chǔ)在芯片內(nèi)部的寄存器SRC->SBMR2[25:24]中的,這兩個(gè)bit也叫BMOD[1:0],BootROM其實(shí)是根據(jù)BMOD[1:0]的值來決定Boot行為的。(注意:如果改變了BOOT_MODE[1:0] pins的輸入狀態(tài)而使用ONOFF pin(RESET_B)去軟復(fù)位,Boot行為并不會(huì)改變,因?yàn)锽MOD[1:0]值并未改變)。

從上述Boot MODE pin settings表中我們可以知道,除了BMOD[1:0]=2'b11這種情況是reserved之外,其余三種情況對(duì)應(yīng)三種Boot行為,痞子衡為大家逐一分析,先從最簡單的行為模式(Serial Downloader)說起。

1.2.1 Serial Downloader模式(UART/USB-HID)

Serial Downloader模式顧名思義即串行下載模式,在這種模式下,BootROM通過指定的USB或者UART口來接收來自Host(恩智浦提供了上位機(jī)工具sdphost.exe或者mfgtool或者M(jìn)CUBootUtility)的Application數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在SRAM中執(zhí)行,這種模式其實(shí)就是從SRAM啟動(dòng),但是如果用這種模式去Boot Application缺點(diǎn)很明顯,每次上電都需要將Application重新下載進(jìn)SRAM,無法做到脫機(jī)自動(dòng)Boot,所以顯然這種模式的主要目的并不是從SRAM啟動(dòng)Application,那它到底有什么用?  其實(shí)Serial Downloader模式主要是用來從SRAM中啟動(dòng)Flashloader,恩智浦官方提供了Flashloader程序,F(xiàn)lashloader程序可以用來將你的Application下載進(jìn)i.MXRTyyyy支持的所有外部非易失性存儲(chǔ)器中,為后續(xù)從外部存儲(chǔ)器啟動(dòng)做準(zhǔn)備。除此以外Serial Downloader模式還可以用來查看Fuse值。  關(guān)于Serial Downloader模式以及Flashloader具體如何應(yīng)用,痞子衡會(huì)在下一篇文章里進(jìn)一步介紹。

1.2.2 Boot From Fuses模式

Boot From Fuses模式從名字來看其實(shí)會(huì)讓人誤解,這個(gè)模式并不是從Fuse里加載Application啟動(dòng)的意思,而是根據(jù)Fuse里的一些Boot配置值來決定從哪個(gè)外部存儲(chǔ)器Boot。Fuse是i.MXRTyyyy里一塊特殊的存儲(chǔ)區(qū)域,用于存放全部芯片配置信息,其中有一部分配置信息和Boot相關(guān)。  

在參考手冊Fusemap這一章節(jié),可以看到完整的Fuse Map表,其中偏移0x460處的32bit配置數(shù)據(jù)的bit4是BT_FUSE_SEL,這個(gè)bit至關(guān)重要,決定了Boot From Fuses模式的主要行為,具體表現(xiàn)如下:

BT_FUSE_SEL=0:表明所有外部存儲(chǔ)器中均沒有Application,此時(shí)Boot From Fuses模式等同于Serial Downloader模式。

BT_FUSE_SEL=1:表明有外部存儲(chǔ)器中存在有效Application,此時(shí)BootROM會(huì)根據(jù)Fuse中其他Boot配置信息進(jìn)一步選擇指定的外部存儲(chǔ)器(Boot Device)去Boot。

關(guān)于Fuse中其他Boot配置信息,文章后面痞子衡會(huì)繼續(xù)講。

1.2.3 Internal Boot模式(Serial NOR/NAND、Parallel NOR/NAND、SD/eMMC、1bit Recovery SPI NOR)

Internal Boot模式其實(shí)跟Boot From Fuses模式(BT_FUSE_SEL=1時(shí))很類似,只是這個(gè)模式下BT_FUSE_SEL的意義有點(diǎn)不同,具體表現(xiàn)如下:

BT_FUSE_SEL=0:BootROM根據(jù)BOOT_CFG[x:0] pins和Fuse中Boot配置綜合決定Boot Device,其中BOOT_CFG[x:0] pins的配置會(huì)覆蓋Fuse中意義相同的Boot配置信息。

BT_FUSE_SEL=1:BootROM完全根據(jù)Fuse中Boot配置信息選擇指定的Boot Device去Boot。

我們可以通過更改BOOT_CFG[x:0] pins輸入狀態(tài)來切換Boot配置,這部分Boot配置在Fuse里也同樣存在,但是使用BOOT_CFG[x:0]來更改Boot配置顯然比燒寫Fuse更方便快捷(也可以認(rèn)為BOOT_CFG[x:0]主要用于產(chǎn)品開發(fā)過程中,待產(chǎn)品開發(fā)結(jié)束后,應(yīng)直接用Fuse來鎖定Boot配置)。關(guān)于BOOT_CFG[x:0] pin具體提供哪些Boot配置,文章后面痞子衡會(huì)繼續(xù)講。

二、Boot Device類型選擇

前面痞子衡講了,無論是Boot From Fuses模式還是Internal Boot模式,最終目的都是為了選擇合適的Boot Device加載啟動(dòng),那么Boot Device到底如何確定?主要取決于BOOT_CFG[x:0] pin以及Fuse里的BOOT_CFG1位?! ?/p>

BOOT_CFG[x:0] pin(在RT105x/RT106x上是12bit,在RT102x上是10bit)跟Boot Device選擇相關(guān)的是BOOT_CFG[7:4]這4個(gè)bit,對(duì)應(yīng)Fuse里是偏移0x450處32bit配置數(shù)據(jù)里的bit4-7(也叫BOOT_CFG1[7:4]),本小節(jié)主要介紹的是BOOT_CFG1[7:4]。

2.1 BOOT_CFG[x:0] Pinout

下表是BOOT_CFG相關(guān)pinout信息,可在參考手冊的External Signals and Pin Multiplexing章節(jié)中找到?! .MXRT105x / i.MXRT106x pinout:

  i.MXRT102x pinout:

2.2 BOOT_CFG1[7:4]六種Device

BOOT_CFG1[7:4]用于選擇具體Boot Device,無論是RT105x/RT106x還是RT102x,它們支持的外部存儲(chǔ)器種類是一樣的,但是這里的具體配置值兩個(gè)芯片上稍稍有些區(qū)別(主要是SD和SEMC NAND不一樣)?! ?/p>

下表是BOOT_CFG1[7:4]具體配置值信息,可在參考手冊的Fusemap章節(jié)中找到?! ?/p>

i.MXRT105x / i.MXRT106x device selection:

  i.MXRT102x device selection:

三、Boot Device具體配置

當(dāng)Boot Device已經(jīng)確定之后,底下就是配置該Device具體屬性了。假設(shè)我們選擇了Serial NOR FLASH,但是Serial NOR只是一類FLASH的統(tǒng)稱,市面上有非常多的Serial NOR芯片,每個(gè)芯片特性可能不完全一樣,那么BootROM怎么知道這些不同的Serial NOR芯片的特性呢?還是通過BOOT_CFG[x:0] pin和Fuse來指定。

3.1 BOOT_CFG[x:0]

BOOT_CFG[x:0] pin其實(shí)是跟Fuse里是偏移0x450處32bit配置數(shù)據(jù)里的bit0-x是對(duì)應(yīng)的。

BOOT_CFG[7:0] pin對(duì)應(yīng)的是Fuse BOOT_CFG1[7:0]

BOOT_CFG[x:8] pin對(duì)應(yīng)的是Fuse BOOT_CFG2[x-8:0]

前面講過BOOT_CFG1[7:4]是用來確定Boot Device類型的,其余bit就是用來配置當(dāng)前選擇的Boot Device的具體信息,因此不同的Boot Device,這些bit的意義是不一樣的。具體在Fuse里統(tǒng)一介紹。

3.2 eFUSE map

前面講過,F(xiàn)use是i.MXRTyyyy里一塊特殊的存儲(chǔ)區(qū)域,用于存放全部芯片配置信息,其中有一部分區(qū)域分配給Boot。參考手冊的Fusemap章節(jié)中可見所有bit具體定義,這里痞子衡僅貼出一部分用于示例:

從上表中我們可以看到i.MXRT105x上BOOT_CFG1,BOOT_CFG2共16bit的完整定義,除了BOOT_CFG1[7:4]前面已經(jīng)介紹過之外,從其余bit的定義來看,確實(shí)是與具體Boot Device屬性相關(guān)的?! ?/p>

這些Boot相關(guān)的Fuse定義,在這里逐一解釋意義不大,需要結(jié)合具體Boot Device一起來看,痞子衡后續(xù)會(huì)在介紹每個(gè)Boot Device啟動(dòng)的文章里再進(jìn)一步分析。

至此,飛思卡爾i.MX RTyyyy系列MCU的Boot配置痞子衡便介紹完畢了,掌聲在哪里~~~

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關(guān)注 41
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧