0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FDCB1/2 差異問題怎么解決

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-11-03 09:22 ? 次閱讀

對(duì)于以i.MX RT 這類沒有內(nèi)部NVM (Non-Volatile Memory) 的 MCU 為主控的項(xiàng)目來說,為其選配一顆 NVM 作為代碼存儲(chǔ)器是頭等大事,而串行 NOR Flash 是最常見的 NVM 選擇。

串行 NOR Flash 要能被i.MX RT正常啟動(dòng),其固定偏移處(0x0/0x400)一般要求放置一個(gè)配套啟動(dòng)頭(FDCB),系統(tǒng)上電 BootROM 會(huì)用 30MHz 1bit SPI SDR 時(shí)序模式去讀取這個(gè)啟動(dòng)頭來獲取當(dāng)前 Flash 的相關(guān)屬性(主要是用戶設(shè)定的時(shí)序模式)從而進(jìn)一步配置片內(nèi) FlexSPI 模塊以指定的時(shí)序模式去啟動(dòng) Flash 里的固件應(yīng)用程序。

到了項(xiàng)目量產(chǎn)階段,尤其是出貨量大的消費(fèi)類產(chǎn)品,我們往往不會(huì)僅選擇某一 Flash 廠商產(chǎn)品(價(jià)格因素,供貨因素等),這時(shí)候就不得不考慮一個(gè)問題,如果選擇的是特性不完全一致的兩顆 Flash,那么下載進(jìn) Flash 的固件應(yīng)用程序能不能保持一樣(其實(shí)主要就是下圖中的 FDCB1/2 差異問題怎么解決)?今天就跟大家討論一下這個(gè)問題:

7674f792-5b13-11ed-a3b6-dac502259ad0.png

注:本文主要針對(duì)的是普通四線 QuadSPI / 八線 OctalSPI 類型的串行 NOR Flash。

一、影響多Flash型號(hào)量產(chǎn)的因素

我們知道導(dǎo)致下載進(jìn)不同 Flash 里的固件程序,有差異的主要原因是 i.MX RT 配套啟動(dòng)頭(FDCB),這個(gè) FDCB 描述了 Flash 的基本信息(Device 容量、速度、讀模式命令等),F(xiàn)lash 屬性不同,F(xiàn)DCB 也會(huì)跟著變化,所以我們先來介紹下有哪些可能的因素會(huì)影響 FDCB 內(nèi)容:

1.1 QE bit位置

首先是 QE bit 使能操作的差異。

很多 Flash 出廠時(shí) QE bit 并沒有被使能,量產(chǎn)過程中燒錄器有時(shí)候也未必去使能 QE bit(一線模式編程相比 Multi I/O 模式編程對(duì)量產(chǎn)時(shí)間影響不大),這種情況在 FDCB 里需要加上使能 QE bit 操作,而 QE bit 在 Flash 內(nèi)部寄存器里的定義以及寫入命令有好幾種,詳見舊文《影響下載/啟動(dòng)的常見因素之QE bit》。

1.2 READ命令中Dummy Cycles數(shù)

使能 QE bit 是為了能讓 Flash 工作在 Multi I/O Fast READ 模式,但這時(shí)候 READ 時(shí)序里會(huì)有 Dummy Cycles 周期(即 Flash 接收到主設(shè)備發(fā)來的讀命令從而準(zhǔn)備相應(yīng)數(shù)據(jù)的反應(yīng)時(shí)間)。

Flash 的不同工作頻率對(duì)應(yīng)的最小 Dummy Cycles 不同,不同廠商關(guān)于 Dummy Cycles 數(shù)要求也不同,此外如果 Flash 里的默認(rèn) Dummy Cycle 不是對(duì)應(yīng)最高工作頻率的話,要想讓 Flash 工作在最高頻率還需要額外設(shè)置 Flash 相應(yīng)寄存器來修改 Dummy Cycle(這里的設(shè)置方法也不同),這些 Dummy Cycle 設(shè)定都要體現(xiàn)在 FDCB 里,詳見舊文《調(diào)整Flash工作頻率也需同步設(shè)Dummy Cycle》。

1.3 地址3B/4B模式切換

對(duì)于不高于 16MB 容量的 Flash,在 READ 時(shí)序里一般使用三字節(jié)地址就行了,但是超過 16MB 的 Flash ,對(duì)其訪問就會(huì)涉及三字節(jié)地址以及四字節(jié)地址選擇問題,因此避不可免地要考慮 Flash 地址模式切換問題,不同廠商的地址模式設(shè)計(jì)以及切換操作也略有不同,F(xiàn)DCB 里同樣要考慮這些,詳見舊文 《16MB以上NOR Flash使用注意》。

1.4 QPI/OPI模式進(jìn)入

如果為了追求極限執(zhí)行性能,一般還會(huì)考慮將 Flash 從 SPI 模式切換到 QPI/OPI 模式,這里不同廠商的模式切換設(shè)計(jì)也可能略有不同,F(xiàn)DCB 也要負(fù)責(zé)這個(gè)工作,詳見舊文《使能串行NOR Flash的QPI/OPI模式》。

1.5 DTR/Continuous read性能模式

當(dāng)然還有一些其它關(guān)于 Flash 性能模式考量,比如 DTR 模式、Continuous read 模式,要想使能這些模式也都需要在 FDCB 里做文章,詳見舊文 《使能串行NOR Flash的DTR模式》、《使能串行NOR Flash的Continuous read模式》。

二、多Flash型號(hào)量產(chǎn)的解決方案

上一節(jié)介紹了有很多因素會(huì)導(dǎo)致 FDCB 不同,這些因素都是多 Flash 型號(hào)量產(chǎn)路上的攔路虎,我們有什么方法能規(guī)避這些因素差異帶來的問題呢?主要有如下兩個(gè)方案:

2.1 BootROM自識(shí)別方案

第一個(gè)方案是利用 i.MXRT 芯片 BootROM 里的功能,詳見舊文 《自識(shí)別特性(Auto Probe)可以無需FDCB也能從NOR Flash啟動(dòng)》。這個(gè)特性可以讓我們不用提供 FDCB,芯片也能正常從 Flash 里啟動(dòng)固件應(yīng)用程序,這樣也就自然不存在量產(chǎn)過程中不同 Flash 里固件差異問題。但是這個(gè)方案也有幾個(gè)明顯的缺點(diǎn):

缺點(diǎn)一:Auto Probe 特性在 i.MXRT1010/1020/1050 上不可用,僅在 i.MXRT1060/1170/500/600 上可以用。

缺點(diǎn)二:Auto Probe 特性對(duì)于不同 Flash 的支持(尤其是 OctalSPI Flash)可能需要通過燒寫 i.MXRT 芯片 OTP 來實(shí)現(xiàn),這樣實(shí)際上是把 FDCB 差異轉(zhuǎn)化到 OTP 差異上了。

缺點(diǎn)三:Auto Probe 特性僅能處理基本的 FDCB 差異(比如 QE,比如 Dummy Cycle),但是一些性能模式相關(guān)的差異不能很好地處理,拓展性不足。

2.2 一線模式FDCB啟動(dòng)+二級(jí)Configurer程序

第二個(gè)方案主要是為了解決方案一里的全部缺點(diǎn),即使用通用的一線低速模式的 FDCB 啟動(dòng)頭給 BootROM 去讀取啟動(dòng),然后再設(shè)計(jì)一個(gè)二級(jí)的 Configurer 程序(被 BootROM 啟動(dòng)的代碼),在這個(gè) Configurer 程序里去做 Flash 差異化的相關(guān)事情并將 FlexSPI 模塊配置到指定時(shí)序模式,最后再由這個(gè) Configurer 程序去啟動(dòng)固件應(yīng)用程序。

7689adcc-5b13-11ed-a3b6-dac502259ad0.png

這里的Configurer 程序設(shè)計(jì)是關(guān)鍵,而其中最核心的是如何識(shí)別當(dāng)前 Flash 型號(hào),這里要感謝 JEDEC 組織,目前幾乎全部主流 Flash 都支持一線模式下 Read JEDEC 命令(0x9F),返回的 Manufacturer ID 就是每個(gè) Flash 廠商向 JEDEC 組織申請(qǐng)的識(shí)別碼,然后 Memory Type 是各廠商自己定義的型號(hào)系列分類。Configurer 程序結(jié)合這兩個(gè)參數(shù)就可以識(shí)別當(dāng)前 Flash 具體型號(hào),底下就是做不同的代碼分支去處理不同的 Flash 配置即可。

76a3adee-5b13-11ed-a3b6-dac502259ad0.png

二級(jí)Configurer 程序說起來很簡(jiǎn)單,其實(shí)具體設(shè)計(jì)起來還是有很多細(xì)節(jié)要考量的(比如 FlexSPI 多次配置中系統(tǒng)時(shí)鐘切換問題、應(yīng)用程序跳轉(zhuǎn)等),因此痞子衡開源了這個(gè)項(xiàng)目(RT-MFB),并且會(huì)長(zhǎng)期維護(hù)下去,希望將來能支持盡可能多的 Flash 型號(hào)。第一版是以 MIMXRT595-EVK 上的兩顆 Flash 為原型(IS25WP064A / MX25UW51345G)來做的。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7408

    瀏覽量

    163425
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3544

    瀏覽量

    93492
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3228

    瀏覽量

    57513
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HP 8568B有2個(gè)信號(hào)輸入,輸入12之間的電平有差異?

    5.7 dB以補(bǔ)償MLP損失。我有一個(gè)當(dāng)前面板校準(zhǔn)器將N型輸入2設(shè)置為-10.0 dBm時(shí),如果校準(zhǔn)器(50歐姆?)連接到輸入1(75歐姆),是否會(huì)有很大差異?我估計(jì)可能是+1.6 dB。這個(gè)顯示
    發(fā)表于 09-20 11:16

    AD7865AS-2和ad7865ASZ-2有什么差異?

    的情況采集回來的數(shù)據(jù)有大概4倍的差異,請(qǐng)問是正常的,還是有什么地方需要注意的?以下數(shù)據(jù)為對(duì)某4個(gè)通道采樣后的量化數(shù)據(jù)(二者工作的狀態(tài)相同,工作電壓和硬件電路相同):AD7865AS-2 AD7865ASZ-2 81962049
    發(fā)表于 10-25 15:57

    Flash下Dummy Cycle設(shè)置方法的差異

    今天痞子衡給大家介紹的是同一廠商不同系列Flash型號(hào)下Dummy Cycle設(shè)置方法的差異?! ∩弦黄恼?《在i.MXRT啟動(dòng)頭FDCB里調(diào)整Flash工作頻率也需同步設(shè)Dummy Cycle
    發(fā)表于 12-13 06:29

    介紹i.MXRT啟動(dòng)頭FDCB里的lookupTable

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MXRT啟動(dòng)頭FDCB里的lookupTable。一個(gè)MCU內(nèi)部通常有很多外設(shè)模塊,這些外設(shè)模塊是各MCU廠商做差異化產(chǎn)...
    發(fā)表于 02-17 07:47

    SPI和I2C的差異是什么?

    SPI具有哪些特點(diǎn)?有哪些工作模式?SPI和I2C的差異是什么?
    發(fā)表于 02-17 06:15

    CS1256,1/2 VS使用手動(dòng)測(cè)量模式嗎? 其與 BIM內(nèi)短 有差異嗎?

    1. 1/2 VS用于內(nèi)短進(jìn)行失調(diào)校正,此時(shí)TMODE[7:6]需要配置成手動(dòng)測(cè)量模式嗎?2. 1/2
    發(fā)表于 04-18 11:35

    NUCLEO-WL55JC1和NUCLEO-WL55JC2開發(fā)板有什么物理上的差異

    NUCLEO-WL55JC1和NUCLEO-WL55JC2開發(fā)板之間的物理差異是什么?
    發(fā)表于 12-15 07:07

    AD7655可以獲取A1、B1、A2、B2的采樣值,但是數(shù)值存在差異的原因?

    AD7655可以獲取A1、B1、A2、B2的采樣值,但是數(shù)值存在差異; 四個(gè)通道同時(shí)采集0V時(shí),A1
    發(fā)表于 12-07 06:26

    單片機(jī)GD32F1系列與GD32F2系列型號(hào)差異化對(duì)比分析

    本文檔對(duì)比了GD32F1與GD32F2相關(guān)型號(hào),介紹了其內(nèi)部模塊之間的差異化,如DMA、ADC、GPIO、IIC等。
    發(fā)表于 08-28 17:27 ?10次下載

    STEP 7 Safety V17 指令--EV1oo2DI:帶有差異分析的 1oo2 評(píng)估

    該指令將對(duì)兩個(gè)單通道傳感器進(jìn)行 1oo2 評(píng)估和差異分析。 如果輸入 IN1 和 IN2 的信號(hào)狀態(tài)均為 1 并且未存儲(chǔ)
    的頭像 發(fā)表于 06-25 16:23 ?5275次閱讀

    從頭開始認(rèn)識(shí)i.MXRT啟動(dòng)頭FDCB里的lookupTable

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MXRT啟動(dòng)頭FDCB里的lookupTable。一個(gè)MCU內(nèi)部通常有很多外設(shè)模塊,這些外設(shè)模塊是各MCU廠商做差異化產(chǎn)...
    發(fā)表于 12-20 19:46 ?8次下載
    從頭開始認(rèn)識(shí)i.MXRT啟動(dòng)頭<b class='flag-5'>FDCB</b>里的lookupTable

    AN031 GD32F1系列和GD32F2系列差異

    AN031 GD32F1系列和GD32F2系列差異
    發(fā)表于 02-27 18:26 ?0次下載
    AN031 GD32F<b class='flag-5'>1</b>系列和GD32F<b class='flag-5'>2</b>系列<b class='flag-5'>差異</b>

    AD400/AD4004/AD4004/AD4008: 16-Bit, 2 MSPSP/1 MSPSP/500 kSPS, 精密, Psedo差異, SAR ADCs數(shù)據(jù)表 ADI

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)AD400/AD4004/AD4004/AD4008: 16-Bit, 2 MSPSP/1 MSPSP/500 kSPS, 精密, Psedo差異, SAR
    發(fā)表于 10-09 19:07
    AD400/AD4004/AD4004/AD4008: 16-Bit, <b class='flag-5'>2</b> MSPSP/<b class='flag-5'>1</b> MSPSP/500 kSPS, 精密, Psedo<b class='flag-5'>差異</b>, SAR ADCs數(shù)據(jù)表 ADI

    陶瓷電容溫度系數(shù)淺析:1類和2類電容有何差異?如何標(biāo)識(shí)?

    陶瓷電容溫度系數(shù)淺析:1類和2類電容有何差異?如何標(biāo)識(shí)?
    的頭像 發(fā)表于 12-08 17:30 ?1102次閱讀
    陶瓷電容溫度系數(shù)淺析:<b class='flag-5'>1</b>類和<b class='flag-5'>2</b>類電容有何<b class='flag-5'>差異</b>?如何標(biāo)識(shí)?

    Python2與Python3的差異

    Python2與Python3是兩個(gè)不同的版本,它們?cè)谡Z法、功能和性能等方面存在一些差異。下面是對(duì)Python2和Python3的詳盡、詳實(shí)、細(xì)致的比較,分為以下幾個(gè)方面: 語法差異
    的頭像 發(fā)表于 11-23 16:48 ?828次閱讀