日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

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

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-10-30 10:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

一、SFDP 標準簡介

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

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

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

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

二、部分 Flash 型號不支持 SFDP

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

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

雖然我們可以在后續(xù)開發(fā)的過程中也能正常使用非 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,為后續(xù)擦寫操作做準備。

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,你可以繼續(xù)去看 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 發(fā)布,這次不再放過任何一款 Flash》 第 2.3 節(jié)

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

審核編輯 黃昊宇

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

    關注

    10

    文章

    1761

    瀏覽量

    155947
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    i.MXRT1173跨界處理器能支持2GB NOR閃存嗎?

    does nxp i.MXRT1173 crossover processor can support 2GB NOR flash.If yes what need to be taken
    發(fā)表于 04-23 08:25

    MIMX9302xxxxD不支持多核中間件嗎?

    ) 對于多核中間件,它說: 此可選組件不支持 MIMX9302xxxxD。但是,它確實支持以下評估設備:MCIMX93-EVK,因此可供選擇。選中后,相應的支持將添加到配置的包中。 If I
    發(fā)表于 04-09 06:07

    VisionFive 不支持.mp4視頻嗎?

    我嘗試通過 gst-play-1.0 和 gst-launch-1.0 播放.mp4視頻,但它們做得不好。VisionFive 不支持.mp4視頻嗎? 播放視頻有正確的說明嗎?我現在不知道該怎么辦
    發(fā)表于 03-31 06:40

    RISC-V不支持 Nx嗎?

    目前看起來nxRISC-V 不支持。因此,我無法在我的 VisionFive2 上構建 grafana。 如果有人想對我的功能請求投贊成票,這里是鏈接: GitHub Please support
    發(fā)表于 02-04 06:27

    恩智浦i.MXRT1180的FlexSPI NOR啟動連接方式

    最近屬于i.MXRT11xx陣營的第二代旗艦i.MXRT1180正式發(fā)布了,今天咱們就來介紹它的FlexSPI NOR啟動連接方式,在閱讀本文前最好把FlexSPI NOR啟動連接方式(RT1060)先看完,對i.MXRT1xx
    的頭像 發(fā)表于 11-08 10:20 ?6572次閱讀
    恩智浦<b class='flag-5'>i.MXRT</b>1180的FlexSPI NOR啟動連接方式

    nuclei studio生成的c語言文件是不支持c的語法嗎?

    nuclei studio 生成的c語言文件感覺不支持c的語法,因為剛使用這個軟件,還請各位大佬幫忙看看
    發(fā)表于 10-20 11:02

    FlashDB 的TSDB不支持寫粒度為128,是出于什么考慮有這樣的限制?

    FlashDB 的TSDB不支持寫粒度為128,是出于什么考慮有這樣的限制? 如果我希望把這個數據庫移植到這樣的一個mcu上,我們應該怎么做,有些建議嗎。 感謝各位大佬指點。
    發(fā)表于 09-23 08:19

    at_device(8266)不支持web服務器嗎?

    我現在想用esp8266 at device 做一個網頁服務器 但是文件系統(tǒng)什么都做好了 運行webnet_test 顯示下邊的錯誤 查了論壇 說at不支持服務器 但是是20年的帖子了 現在有支持嗎 如果不支持是不是換rw00
    發(fā)表于 09-23 06:09

    請問各位dayu200是不是不支持燒錄64位的OpenHarmony

    我自己編譯了OpenHarmony5.0.2的鏡像,發(fā)現如果使用arm64參數編譯為64位版本,燒錄后卡在開機動畫無法開機,如果編譯為32位就可以正常。請問dayu200不支持64位系統(tǒng)嗎?
    發(fā)表于 08-16 17:39

    為什么同PIN腳的POE(以太網供電)AT標準的網絡變壓器不支持四線對供電?

    Hqst盈盛(華強盛)電子導讀:今天就POE(以太網供電)AT標準(即IEEE 802.3at,又稱PoE+)的網絡變壓器設計上僅支持兩線對供電,不支持四線對供電給我的粉絲朋友們做下詳細分析,不當之處,敬請斧正,謝謝!
    的頭像 發(fā)表于 08-09 15:41 ?2359次閱讀
    為什么同PIN腳的POE(以太網供電)AT標準的網絡變壓器<b class='flag-5'>不支持</b>四線對供電?

    PSOC4模塊不支持同時多連接嗎?

    所有 PSOC4模塊都不支持同時多連接嗎?
    發(fā)表于 06-27 08:23

    請問STM32U5不支持ST-LINK v2怎么辦?

    STM32U5不支持ST-LINK v2怎么辦?
    發(fā)表于 06-09 07:59

    MC SDK為什么不支持H743?

    MC SDK FOC為什么不支持H743,看樣子只支持H745H755。如何利用MCSDK生成可以在H743中運行的FOC控制代碼。
    發(fā)表于 06-06 07:44

    多個i.MXRT共享一顆Flash啟動的方法與實踐(下)

    在 《多個i.MXRT共享一顆Flash啟動的方法與實踐(上)》 一文里痞子衡給大家從理論上介紹一種多 i.MXRT 共享 Flash 啟動的方法,但是理論雖好,如果沒有經過實踐驗證切
    的頭像 發(fā)表于 06-05 10:04 ?1311次閱讀
    多個<b class='flag-5'>i.MXRT</b>共享一顆<b class='flag-5'>Flash</b>啟動的方法與實踐(下)

    多個i.MXRT共享一顆Flash啟動的方法與實踐(上)

    有些客戶應用會采用多顆 i.MXRT 芯片設計一主多從的硬件架構(目的不一,或仿多核 MCU 系統(tǒng)、或拓展 GPIO 數量),因為 i.MXRT 片內無非易失性存儲器,這時候為整個系統(tǒng)配置合適的啟動設備保證每個 i.MXRT
    的頭像 發(fā)表于 06-05 10:01 ?1275次閱讀
    多個<b class='flag-5'>i.MXRT</b>共享一顆<b class='flag-5'>Flash</b>啟動的方法與實踐(上)
    古丈县| 东辽县| 南澳县| 安吉县| 永兴县| 华池县| 龙海市| 高碑店市| 西青区| 乌兰察布市| 正定县| 深圳市| 罗定市| 白玉县| 白沙| 叶城县| 济南市| 额敏县| 阜南县| 慈利县| 云南省| 耒阳市| 临沂市| 衡南县| 秦皇岛市| 绥江县| 鄂州市| 呼和浩特市| 易门县| 炉霍县| 台安县| 温泉县| 德清县| 泰和县| 永丰县| 金门县| 宁武县| 泰和县| 贞丰县| 绥阳县| 垫江县|