色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-10-30 10:30 ? 次閱讀

大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是導致串行 NOR Flash 在 i.MXRT 下無法正常下載 / 啟動的常見因素之 SFDP。

i.MXRT 系列 MCU 發布已幾年了,基于 i.MXRT 的客戶產品也越來越多,可以說是全面開花了。痞子衡作為 i.MXRT 產品線的系統應用工程師,早期的時候還可以盡情做參考設計,現在基本大量時間都被客戶支持占據了。

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

痞子衡在支持客戶解決串行 NOR Flash 下載啟動問題過程中主要遇到幾個常見因素,這幾個因素可能會影響 Flash 在 i.MXRT 下無法正常使用,今天痞子衡就重點跟大家聊聊 SFDP 這個因素。

一、SFDP 標準簡介

SFDP 又叫 JESD216,是 JEDEC 協會于 2011 年開始推出的串行 Flash 接口標準,類似于 CFI 在并行 NOR Flash 上的標準。SFDP 發展至今已經誕生了如下版本:

時間 標準
2011 JESD216
2013.07 JESD216A
2014.05 JESD216B
2018.08 JESD216C
2018.11 JESD216D
2019.08 JESD216D.01

我們知道串行 Flash 廠商非常多,在 2011 年之前,大家都是各自玩,沒有明確的統一標準(雖然幾個領頭廠商起了示范作用,但各家在具體細節上還是會有差異),這對于 Flash 用戶來說就比較麻煩了,需要把各家 Flash 手冊仔細研讀,不能漏掉任何一個細節。

隨著串行 Flash 市場需求越來越強烈,各個廠商也在鉚足勁給自家 Flash 加特性,這時候 JEDEC 站出來了,拉了幾個主要的 Flash 廠商一起訂個 SFDP 標準,有了這個標準,Flash 用戶就方便多了,尤其是軟件設計人員,開發 Flash 驅動從此有標準可依,甚至一套驅動可以用在所有支持 SFDP 標準的 Flash 上,實現各廠商 Flash 之間輕松切換。

二、部分 Flash 型號不支持 SFDP

因為 SFDP 標準是 2011 年才開始推出,新興 Flash 廠商(比如兆易創新)的產品基本都是支持 SFDP 標準的,而部分老牌 Flash 廠商(比如華邦)則存在老型號和新型號共存的問題。老型號都是 2011 年前設計生產的,不支持 SFDP;2011 年之后設計的新型號基本都是支持 SFDP 的。

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

雖然我們可以在后續開發的過程中也能正常使用非 SFDP 標準的 Flash 以及能通過讀 SFDP 命令查詢出芯片是否支持 SFDP,但最好在 Flash 選型前就能明確知道其 SFDP 情況,這個需要跟 Flash 廠商銷售溝通好。總之,痞子衡推薦大家選用各廠商支持 SFDP 標準的新型號。

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

如果你認真看過痞子衡寫的 i.MXRT 啟動系列文章,你應該知道 i.MXRT 之所以能夠支持市面上幾乎所有的串行 NOR Flash 啟動是靠的 512 byte 的 FDCB 結構體,這個結構體原型即 flexspi_nor_config_t,它可以描述啟動所需的所有 Flash 參數信息

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

但是 Flash 里有無 SFDP 非常影響在 i.MXRT 相關配套工具下的擦寫操作(俗稱下載),因為所有工具(JLink、各 IDE、ROM 配套 Flashloader、痞子衡的 MCUBootUtility)默認都是基于 SFDP 來設計 Flash 下載算法的。

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

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

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

如果 config 是簡化的 serial_nor_config_option_t,Flashloader 會調用 flexspi_nor_get_config()函數去自動填充生成完整的 flexspi_nor_config_t,你可以繼續去看 flexspi_nor_get_config()函數的實現,對于普通四線 QSPI,其就是根據 Flash 里讀回的 SFDP 表內容來做的填充,因此這種方式下 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,對于不含 SFDP 的 Flash 怎么辦呢。其實上面已經給了解決方法,那就是直接提供完整的 FDCB,因此 i.MXRT 相關配套工具下載算法都需要相應改一下,痞子衡在兩個項目上都做了非 SFDP Flash 支持:

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

MCUBootUtility v2.3 更新,參看文章 《MCUBootUtility v2.3 發布,這次不再放過任何一款 Flash》 第 2.3 節

至此,導致串行 NOR Flash 在 i.MXRT 下無法正常下載 / 啟動的常見因素之 SFDP 痞子衡便介紹完畢了,掌聲在哪里~~~

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1635

    瀏覽量

    148080
收藏 人收藏

    評論

    相關推薦

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

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

    請問ADS1299EEGFE-PDK支不支持QSPI?

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

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

    pcm1865支不支持i2s出4路音頻流呢,調試了一通也沒有調試出來,出來的四路流是兩兩重復的,0和2通道出的流是一樣的。 另外1865的DSP2數字混合器怎么來選擇要混合那幾個通道呢? 講
    發表于 10-30 07:00

    INA149不支持單電源供電嗎?

    從INA149的數據手冊看,是可以單電源供電的,但是我用INA149的TINA模型仿真了下,發現單15V供電的時候,輸出恒為1V,輸入共模電壓20V,輸入差模電壓125mV,但是我改成+-15V供電就能輸出! 我想知道這是因為模型的原因還是INA149就不支持單電源供電!!!!!!
    發表于 09-14 07:07

    iPhone16不支持微信?蘋果最新回應

    來源:青春上海 編輯:感知芯視界 Link 有網傳消息稱“iPhone16可能不支持微信”,對此記者致電蘋果官方熱線,接線的蘋果中國區技術顧問表示,第三方言論關于iOS系統或者蘋果設備能否再使用微信
    的頭像 發表于 09-05 09:00 ?611次閱讀

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

    OPA569并聯使用用作電流驅動,輸入頻率20K的正選電壓信號,要求輸出20K的正選電流信號。用示波器測試負載電阻兩端的電壓波形振蕩比較厲害,當降低頻率是可以改善很多。是不支持這么高頻率嗎?
    發表于 08-07 06:50

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

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

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

    在STM32L4R5ZIT6中移植cherryUSB,出現如下報錯,顯示不支持DMA模式: This dwc2 version does not support dma mode, so
    發表于 07-25 08:32

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

    文檔里面說ESP32-C3可以使用USB來下載固件,并用USB當console口。 但在ESP-IDF 4.3(VSCODE)下配置USB端口時,說不支持。 我是查了文檔說支持才設計硬件用USB口
    發表于 06-20 06:19

    請問esp32-c3不支持pcnt嗎?

    我在esp32-c3開發板上測試pcnt,編譯報錯找不到相關的函數,查看sdk源碼發現要配置CONFIG_SOC_PCNT_SUPPORTED才會編譯pcnt.c,查看examples里面的項目也說了只支持ESP32 和ESP32-S2,請問是不支持ESP32-C3嗎?為
    發表于 06-18 07:27

    STVD是不是不支持C99?

    內容如標題所示,麻煩有懂的朋友告訴下我,這個問題花費我很多時間了。 不知道STVD是不是不支持C99??
    發表于 05-16 08:04

    Mbed支不支持NUCLEO-H743ZI嗎?

    我只在Mbed網頁版上看到了支持NUCLEO-H743ZI2,沒看到NUCLEO-H743ZI,不知道Mbed支不支持。 之后又下了一個安裝版的Mbed Studio里面如果選擇Mbed5的話能通過
    發表于 04-10 07:08

    flash loader v2.8.0不支持STM32L431CBT6嗎?

    請問是否flash loader v2.8.0不支持STM32L431CBT6這個顆芯片?我用的是PA9/PA10做燒寫串口。
    發表于 04-08 07:16

    ST-LINK/V2無法下載HEX文件到stm32g070cb中,是不支持嗎?

    用 ST-LINK/V2無法下載HEX文件到stm32g070cb中,是不支持嗎? 連接上了,不過沒有識別,下載會報錯。 下載前可以連接上,不過沒有識別,如下圖:
    發表于 03-29 06:20

    STM32G070KB不支持無源HSE嗎?

    看了下手冊,只有OSC_IN,沒有OSC_OUT,是不是不支持外部高速無源晶振? 數據手冊也和參考手冊沒有指出G070K不支持無源HSE,有誰知道嗎
    發表于 03-13 08:08
    主站蜘蛛池模板: 国产成人高清在线观看播放| 99热在线观看精品| 一本道mw高清码二区三区| 成人免费视频无遮挡在线看| 久草在线福利资站免费视频| 四虎精品久久| 高清一区二区亚洲欧美日韩| 亚洲 欧美 国产 综合 在线| yellow日本动漫高清| 男女啪啪抽搐呻吟高潮动态图| 伊人久久综合网站| 好男人午夜www视频在线观看| 我要色导航| 国产精品无码人妻99999| 日日啪无需播放器| 亚洲免费网站观看视频| 国产色精品久久人妻无码看片| 日日摸夜夜嗷嗷叫日日拍| 成人AV精品视频| 色爱AV综合区| 国产精品青青青高清在线密亚| 脱jk裙的美女露小内内无遮挡| 国产精品成人影院在线观看| 免费观看激烈日板子| 97人人看碰人免费公开视频| 国产九色在线| 亚洲AVAV天堂AV在线网爱情 | 免费欧美大片| 扒开美女下面粉嫩粉嫩冒白浆| 日本粉嫩学生毛绒绒| 一个人免费视频在线观看高清版| 成人免费观看www视频| 日本最新免费区中文| 18videosex性欧美黑色| 免费视频网站嗯啊轻点| pkf女尸studiosxnxx| 视频在线免费观看| 黑人巨大两根一起挤进欧美| 最近中文字幕MV高清在线视频| 国产69精品久久久久观看软件| 校花在公车上被内射好舒服|