在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

Flash不支持SFDP,如何下載適用i.MXRT

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-10-30 10:30 ? 次閱讀

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是導(dǎo)致串行 NOR Flash 在 i.MXRT 下無(wú)法正常下載 / 啟動(dòng)的常見(jiàn)因素之 SFDP。

i.MXRT 系列 MCU 發(fā)布已幾年了,基于 i.MXRT 的客戶產(chǎn)品也越來(lái)越多,可以說(shuō)是全面開(kāi)花了。痞子衡作為 i.MXRT 產(chǎn)品線的系統(tǒng)應(yīng)用工程師,早期的時(shí)候還可以盡情做參考設(shè)計(jì),現(xiàn)在基本大量時(shí)間都被客戶支持占據(jù)了。

因?yàn)?i.MXRT 系列都沒(méi)有內(nèi)置 Flash(RT1064, RT1024 等 SIP 型號(hào)除外),因此為其搭配一塊串行 NOR Flash 去啟動(dòng)是客戶項(xiàng)目的第一個(gè)頭等大事,而串行 NOR Flash 廠商非常多,客戶選擇余地很大,因此我們不得不與客戶一起同茫茫 Flash 型號(hào)打交道,痞子衡也常常調(diào)侃自己已淪為 Flash 測(cè)試工程師。

痞子衡在支持客戶解決串行 NOR Flash 下載啟動(dòng)問(wèn)題過(guò)程中主要遇到幾個(gè)常見(jiàn)因素,這幾個(gè)因素可能會(huì)影響 Flash 在 i.MXRT 下無(wú)法正常使用,今天痞子衡就重點(diǎn)跟大家聊聊 SFDP 這個(gè)因素。

一、SFDP 標(biāo)準(zhǔn)簡(jiǎn)介

SFDP 又叫 JESD216,是 JEDEC 協(xié)會(huì)于 2011 年開(kāi)始推出的串行 Flash 接口標(biāo)準(zhǔn),類(lèi)似于 CFI 在并行 NOR Flash 上的標(biāo)準(zhǔn)。SFDP 發(fā)展至今已經(jīng)誕生了如下版本:

時(shí)間 標(biāo)準(zhǔn)
2011 JESD216
2013.07 JESD216A
2014.05 JESD216B
2018.08 JESD216C
2018.11 JESD216D
2019.08 JESD216D.01

我們知道串行 Flash 廠商非常多,在 2011 年之前,大家都是各自玩,沒(méi)有明確的統(tǒng)一標(biāo)準(zhǔn)(雖然幾個(gè)領(lǐng)頭廠商起了示范作用,但各家在具體細(xì)節(jié)上還是會(huì)有差異),這對(duì)于 Flash 用戶來(lái)說(shuō)就比較麻煩了,需要把各家 Flash 手冊(cè)仔細(xì)研讀,不能漏掉任何一個(gè)細(xì)節(jié)。

隨著串行 Flash 市場(chǎng)需求越來(lái)越強(qiáng)烈,各個(gè)廠商也在鉚足勁給自家 Flash 加特性,這時(shí)候 JEDEC 站出來(lái)了,拉了幾個(gè)主要的 Flash 廠商一起訂個(gè) SFDP 標(biāo)準(zhǔn),有了這個(gè)標(biāo)準(zhǔn),F(xiàn)lash 用戶就方便多了,尤其是軟件設(shè)計(jì)人員,開(kāi)發(fā) Flash 驅(qū)動(dòng)從此有標(biāo)準(zhǔn)可依,甚至一套驅(qū)動(dòng)可以用在所有支持 SFDP 標(biāo)準(zhǔn)的 Flash 上,實(shí)現(xiàn)各廠商 Flash 之間輕松切換。

二、部分 Flash 型號(hào)不支持 SFDP

因?yàn)?SFDP 標(biāo)準(zhǔn)是 2011 年才開(kāi)始推出,新興 Flash 廠商(比如兆易創(chuàng)新)的產(chǎn)品基本都是支持 SFDP 標(biāo)準(zhǔn)的,而部分老牌 Flash 廠商(比如華邦)則存在老型號(hào)和新型號(hào)共存的問(wèn)題。老型號(hào)都是 2011 年前設(shè)計(jì)生產(chǎn)的,不支持 SFDP;2011 年之后設(shè)計(jì)的新型號(hào)基本都是支持 SFDP 的。

華邦目前是串行 Flash 第一大廠商,痞子衡遇到好幾個(gè) i.MXRT 客戶,選用的華邦 NOR Flash,但 Flash 里不支持 SFDP,因此客戶支持稍微復(fù)雜一些。關(guān)于 SFDP 支持問(wèn)題,痞子衡特別聯(lián)系過(guò)華邦銷(xiāo)售人員,得到了他們的答復(fù),華邦 NOR Flash 家族里 W25QxxJV 和 W25QxxJW 系列都是新型號(hào),全部支持 SFDP;而 W25QxxFV 和 W25QxxFW 系列屬于老型號(hào),大多沒(méi)有 SFDP,但是也有如下部分型號(hào)支持 SFDP:

雖然我們可以在后續(xù)開(kāi)發(fā)的過(guò)程中也能正常使用非 SFDP 標(biāo)準(zhǔn)的 Flash 以及能通過(guò)讀 SFDP 命令查詢出芯片是否支持 SFDP,但最好在 Flash 選型前就能明確知道其 SFDP 情況,這個(gè)需要跟 Flash 廠商銷(xiāo)售溝通好。總之,痞子衡推薦大家選用各廠商支持 SFDP 標(biāo)準(zhǔn)的新型號(hào)。

三、不支持 SFDP 的 Flash 如何適用 i.MXRT 下載

如果你認(rèn)真看過(guò)痞子衡寫(xiě)的 i.MXRT 啟動(dòng)系列文章,你應(yīng)該知道 i.MXRT 之所以能夠支持市面上幾乎所有的串行 NOR Flash 啟動(dòng)是靠的 512 byte 的 FDCB 結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體原型即 flexspi_nor_config_t,它可以描述啟動(dòng)所需的所有 Flash 參數(shù)信息。

i.MXRT 在啟動(dòng)時(shí)首先會(huì)用 1bit SDR 時(shí)序模式去獲取用戶放在 Flash 開(kāi)始或偏移 0x400 處(因 i.MXRT 型號(hào)而異)的 FDCB,然后根據(jù) FDCB 里的信息去進(jìn)一步配置啟動(dòng),因此 Flash 里有無(wú) SFDP 其實(shí)不影響啟動(dòng),只要在 FDCB 里描述清楚即可。

但是 Flash 里有無(wú) SFDP 非常影響在 i.MXRT 相關(guān)配套工具下的擦寫(xiě)操作(俗稱(chēng)下載),因?yàn)樗泄ぞ撸↗Link、各 IDE、ROM 配套 Flashloader、痞子衡的 MCUBootUtility)默認(rèn)都是基于 SFDP 來(lái)設(shè)計(jì) Flash 下載算法的。

僅以 ROM 配套 Flashloader 為例,其上位機(jī)工具是 blhost.exe,它有如下經(jīng)典的命令序列。這個(gè)序列就是利用用戶提供簡(jiǎn)化的串行 Flash 配置值 0xc0000007(描述一般的四線 QSPI)來(lái)初始化 FlexSPI 以及 Flash,為后續(xù)擦寫(xiě)操作做準(zhǔn)備。

blhost -u -- fill-memory 0x20202000 4 0xc0000007
blhost -u -- configure-memory 0x9 0x20202000

configure-memory 命令底層到底是什么樣的邏輯呢?讓我們找到任何一個(gè) SDK 包,在 /SDK_2.x.x_MIMXRTxxxx-EVK/middleware/mcu-boot/src/memory/src/flexspi_nor_memory.c 里可以找到如下函數(shù) flexspi_nor_mem_config(),它就是其底層邏輯,在這個(gè)函數(shù)里我們可以看到,F(xiàn)lashloader 會(huì)判斷傳來(lái)的 config 值到底是簡(jiǎn)化的 serial_nor_config_option_t,還是完整的 flexspi_nor_config_t。

如果 config 是簡(jiǎn)化的 serial_nor_config_option_t,F(xiàn)lashloader 會(huì)調(diào)用 flexspi_nor_get_config()函數(shù)去自動(dòng)填充生成完整的 flexspi_nor_config_t,你可以繼續(xù)去看 flexspi_nor_get_config()函數(shù)的實(shí)現(xiàn),對(duì)于普通四線 QSPI,其就是根據(jù) Flash 里讀回的 SFDP 表內(nèi)容來(lái)做的填充,因此這種方式下 SFDP 不可缺。

status_t flexspi_nor_mem_config(uint32_t *config)
{
status_t status = kStatus_InvalidArgument;
bool isNorConfigOption = false;

serial_nor_config_option_t *option = (serial_nor_config_option_t *)config;
flexspi_nor_config_t *norConfig = (flexspi_nor_config_t *)config;

if (option->option0.B.tag == kSerialNorCfgOption_Tag)
{
status = flexspi_nor_get_config(s_flexspiNorContext.instance, &s_flexspiNorConfigBlock, option);
// ...
isNorConfigOption = true;
}
else if (norConfig->memConfig.tag == FLEXSPI_CFG_BLK_TAG)
{
memcpy(&s_flexspiNorConfigBlock, norConfig, sizeof(flexspi_nor_config_t));
isNorConfigOption = true;
}
// ...

if (isNorConfigOption)
{
status = flexspi_nor_flash_init(s_flexspiNorContext.instance, &s_flexspiNorConfigBlock);
// ...
}

return status;
}

上面這種 0xc0000007 搞定一切四線 QSPI 的方式僅適用于含 SFDP 的 Flash,對(duì)于不含 SFDP 的 Flash 怎么辦呢。其實(shí)上面已經(jīng)給了解決方法,那就是直接提供完整的 FDCB,因此 i.MXRT 相關(guān)配套工具下載算法都需要相應(yīng)改一下,痞子衡在兩個(gè)項(xiàng)目上都做了非 SFDP Flash 支持:

J-Link 下載算法源工程,可以參考 /boards/msft_rt600_xproject/flash_algo_b0_silicon/Keil_JLink 這個(gè)源工程

MCUBootUtility v2.3 更新,參看文章 《MCUBootUtility v2.3 發(fā)布,這次不再放過(guò)任何一款 Flash》 第 2.3 節(jié)

至此,導(dǎo)致串行 NOR Flash 在 i.MXRT 下無(wú)法正常下載 / 啟動(dòng)的常見(jiàn)因素之 SFDP 痞子衡便介紹完畢了,掌聲在哪里~~~

審核編輯 黃昊宇

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

    關(guān)注

    10

    文章

    1656

    瀏覽量

    150558
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    S32Gx系列是否不支持通過(guò)USB接口下載固件?

    S32Gx 系列是否不支持通過(guò) USB 接口下載固件? 似乎只能通過(guò) UART 到 USB 進(jìn)行下載。是這樣嗎?
    發(fā)表于 04-11 07:04

    i.MX8MMini中的Cortex-M4不支持SDIO嗎?

    的 FreeRTOS,我們從 NXP 論壇獲取了信息,并正在努力為 RTOS 構(gòu)建環(huán)境 我們注意到,在構(gòu)建完成后移植無(wú)線驅(qū)動(dòng)程序時(shí)。 RTOS 的當(dāng)前源代碼不包括 SDIO 驅(qū)動(dòng)程序。 i.MX8MMini 中的 Cortex-M4 不支持 SDIO 嗎? 如果
    發(fā)表于 04-03 06:45

    DLP3010 cyusbserial.dll庫(kù)不支持64嗎?

    sdk自帶得cyusbserial.dll庫(kù)不支持64位,只能在32位運(yùn)行,我從git上下載了cyusbserial后,編譯通過(guò),但是鏈接不上設(shè)備,大家有遇到相關(guān)的問(wèn)題么,或者能提供一版能使用的cyusbserial.dll的64位庫(kù)么
    發(fā)表于 02-21 08:36

    沒(méi)有hyper-v,Hyper-V無(wú)支持:解決系統(tǒng)不支持Hyper-V問(wèn)題

    ? ? 在當(dāng)今數(shù)字化轉(zhuǎn)型的浪潮中,企業(yè)對(duì)于管理效率和精度的要求日益提高。批量管理工具作為一種創(chuàng)新的管理手段,正逐漸成為企業(yè)提升競(jìng)爭(zhēng)力的重要法寶。今天就為大家介紹Hyper-V無(wú)支持:解決系統(tǒng)不支持
    的頭像 發(fā)表于 02-10 10:38 ?2503次閱讀
    沒(méi)有hyper-v,Hyper-V無(wú)<b class='flag-5'>支持</b>:解決系統(tǒng)<b class='flag-5'>不支持</b>Hyper-V問(wèn)題

    PCM1680 does not support a board-to-board interface不支持板對(duì)板的是怎么解讀?

    The PCM1680 does not support a board-to-board interface不支持板對(duì)板的是怎么解讀
    發(fā)表于 12-11 07:31

    請(qǐng)問(wèn)ADS1299EEGFE-PDK支不支持QSPI?

    不支持QSPI,如果支持,芯片上的線接哪幾個(gè)引腳。
    發(fā)表于 11-21 07:36

    pcm1865支不支持i2s出4路音頻流呢?

    pcm1865支不支持i2s出4路音頻流呢,調(diào)試了一通也沒(méi)有調(diào)試出來(lái),出來(lái)的四路流是兩兩重復(fù)的,0和2通道出的流是一樣的。 另外1865的DSP2數(shù)字混合器怎么來(lái)選擇要混合那幾個(gè)通道呢? 講
    發(fā)表于 10-30 07:00

    INA149不支持單電源供電嗎?

    從INA149的數(shù)據(jù)手冊(cè)看,是可以單電源供電的,但是我用INA149的TINA模型仿真了下,發(fā)現(xiàn)單15V供電的時(shí)候,輸出恒為1V,輸入共模電壓20V,輸入差模電壓125mV,但是我改成+-15V供電就能輸出! 我想知道這是因?yàn)槟P偷脑蜻€是INA149就不支持單電源供電!!!!!!
    發(fā)表于 09-14 07:07

    iPhone16不支持微信?蘋(píng)果最新回應(yīng)

    來(lái)源:青春上海 編輯:感知芯視界 Link 有網(wǎng)傳消息稱(chēng)“iPhone16可能不支持微信”,對(duì)此記者致電蘋(píng)果官方熱線,接線的蘋(píng)果中國(guó)區(qū)技術(shù)顧問(wèn)表示,第三方言論關(guān)于iOS系統(tǒng)或者蘋(píng)果設(shè)備能否再使用微信
    的頭像 發(fā)表于 09-05 09:00 ?722次閱讀

    OPA569是不支持這么高頻率嗎?

    OPA569并聯(lián)使用用作電流驅(qū)動(dòng),輸入頻率20K的正選電壓信號(hào),要求輸出20K的正選電流信號(hào)。用示波器測(cè)試負(fù)載電阻兩端的電壓波形振蕩比較厲害,當(dāng)降低頻率是可以改善很多。是不支持這么高頻率嗎?
    發(fā)表于 08-07 06:50

    STM32G4系列到底支不支持位帶操作

    印象中不止一次有人詢問(wèn)STM32G4系列到底支不支持位帶操作。
    的頭像 發(fā)表于 07-29 09:45 ?1973次閱讀
    STM32G4系列到底支<b class='flag-5'>不支持</b>位帶操作

    在STM32L4R5ZIT6中移植cherryUSB,顯示不支持DMA模式為什么?

    在STM32L4R5ZIT6中移植cherryUSB,出現(xiàn)如下報(bào)錯(cuò),顯示不支持DMA模式: This dwc2 version does not support dma mode, so
    發(fā)表于 07-25 08:32

    為什么在ESP-IDF 4.3(VSCODE)下配置USB端口時(shí)說(shuō)不支持

    文檔里面說(shuō)ESP32-C3可以使用USB來(lái)下載固件,并用USB當(dāng)console口。 但在ESP-IDF 4.3(VSCODE)下配置USB端口時(shí),說(shuō)不支持。 我是查了文檔說(shuō)支持才設(shè)計(jì)硬件用USB口
    發(fā)表于 06-20 06:19

    請(qǐng)問(wèn)esp32-c3不支持pcnt嗎?

    我在esp32-c3開(kāi)發(fā)板上測(cè)試pcnt,編譯報(bào)錯(cuò)找不到相關(guān)的函數(shù),查看sdk源碼發(fā)現(xiàn)要配置CONFIG_SOC_PCNT_SUPPORTED才會(huì)編譯pcnt.c,查看examples里面的項(xiàng)目也說(shuō)了只支持ESP32 和ESP32-S2,請(qǐng)問(wèn)是不支持ESP32-C3嗎?為
    發(fā)表于 06-18 07:27

    STVD是不是不支持C99?

    內(nèi)容如標(biāo)題所示,麻煩有懂的朋友告訴下我,這個(gè)問(wèn)題花費(fèi)我很多時(shí)間了。 不知道STVD是不是不支持C99??
    發(fā)表于 05-16 08:04
    主站蜘蛛池模板: 久久精品国产精品亚洲婷婷 | 热久久国产 | 四虎成人免费网站在线 | 日本高清在线3344www | 日韩在线天堂免费观看 | 日本免费一区视频 | 六月丁香啪啪六月激情 | 国产一级特黄老妇女大片免费 | 扒开末成年粉嫩的小缝强文 | 永久免费看mv网站入口 | 黄视频网站免费看 | 老头天天吃我奶躁我的动图 | 天天色国产| 欧美大片一区 | 69精品在线| 国产精品午夜国产小视频 | 韩国美女丝袜一区二区 | 午夜影院在线观看视频 | 三级理论手机在线观看视频 | 高清欧美日本视频免费观看 | 666精品国产精品亚洲 | 凹厕所xxxxbbbb偷拍视频 | 日日操夜夜操狠狠操 | 欧美国产一区二区二区 | 久久综合狠狠综合久久综合88 | 中文字幕一精品亚洲无线一区 | 国产一区二区三区影院 | 四虎网站在线播放 | 国产精品视频第一区二区三区 | 亚洲福利视频一区二区三区 | 欧洲天堂网| 色中色综合网 | 大尺度视频在线 | 迅雷www天堂在线资源 | 国产成人毛片亚洲精品不卡 | 亚洲精品久久久久午夜福 | 国产成人永久免费视频 | 女生张开腿让男人桶 | 精品人人| 欧美性狂猛bbbbbbxxxx | 久久理论片 |