• 正文
    • 一、RT片內(nèi)Flash簡介
    • 二、SFDP對于燒錄工具的重要性
    • 三、Winbond NOR Flash的SFDP操作
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

有人說高性能MCU片內(nèi)合封Flash不可靠?

15小時前
287
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MXRT1024/1064片內(nèi)4MB Flash的SFDP表易丟失導(dǎo)致的燒錄異常。

我們知道 i.MXRT 系列本身并沒有片內(nèi)非易失性存儲器作為啟動設(shè)備,所以硬件工程師第一件事便是為 i.MXRT 搭配一顆外置代碼存儲器,而串行 NOR Flash 往往是代碼存儲器的第一選擇。既然這是剛需,為何不直接合封一顆經(jīng)典的 NOR Flash 進芯片內(nèi)部呢?是的,恩智浦也考慮到了這一點,這便有了 i.MXRT1024/1064 這兩顆內(nèi)置 Flash 的型號(至于沒有給 i.MXRT 全系列強制標(biāo)配 NOR Flash,也跟代碼存儲器類型以及容量、速度需求不一有關(guān))。

近期有一個 RT1064 客戶反饋,在給產(chǎn)品做量產(chǎn)時出現(xiàn)芯片無法正常使用 J-Link 或者恩智浦官方下載工具下載程序到片內(nèi) Flash 的現(xiàn)象,恰好痞子衡手頭有一塊官方 RT1064-EVK 板卡也無法燒錄程序,經(jīng)過痞子衡的一番摸索,發(fā)現(xiàn)片內(nèi) Flash 竟然沒有有效的 SFDP 表,這是怎么回事?且聽痞子衡細(xì)說:

一、RT片內(nèi)Flash簡介

1.1 W25Q32JV

芯片合封技術(shù)實際上并不是什么新鮮事,對于 RT1024/1064 來說,就是將 RT1020/RT1060 的 Die 與選定的一顆 NOR Flash Die 封裝在一起,RT 與 Flash 之間的信號連接在片內(nèi)完成。

那么 RT1024/1064 內(nèi)置的 NOR Flash 到底來自哪家供應(yīng)商呢?這可以借助 SDK_2_16_000_EVK-MIMXRT1064boardsevkmimxrt1064driver_examplesflexspinor_internalpolling_transfer 例程簡單修改一下代碼,讀回 Flash 的 JEDEC ID 得知是來自全球排名第一的 NOR Flash 廠商 Winbond 的 W25Q32JV-IQ/JQ(4MB, 四線, 133MHz SDR,3.3V)。

1.2 RT1024片內(nèi)連接

在 RT1024 上使用了如下 PAD 連接到了片內(nèi) Flash,這些 PAD 同時也是外部引腳。(注意其中 GPIO_SD_B1_05 并沒有被 BootROM 初始化,因為片內(nèi) Flash 不能直接高速啟動)

1.3 RT1064片內(nèi)連接

在 RT1064 上使用了如下 PAD 連接到了片內(nèi) Flash,這些 PAD 僅是內(nèi)部引腳,沒有引到外部。(不過在 BGA 225 封裝的 RT1060X 型號上被引出了)

二、SFDP對于燒錄工具的重要性

JESD216 是一個關(guān)于串行 NOR Flash 的標(biāo)準(zhǔn),它“規(guī)范”了 NOR Flash 廠商的產(chǎn)品。這里的“規(guī)范”兩字加了引號,因為這個標(biāo)準(zhǔn)比較有意思,并不是先有標(biāo)準(zhǔn),再有 Flash 產(chǎn)品,而是先有各大廠商的 Flash 產(chǎn)品出來,然后 JESD216 才開始總結(jié)這些不同廠商的產(chǎn)品特性,企圖形成一個看起來比較統(tǒng)一的規(guī)范。

目前主流 NOR Flash 廠商產(chǎn)品都是支持 JESD216 標(biāo)準(zhǔn)的,這體現(xiàn)在如下 Read SFDP (0x5A) 命令時序統(tǒng)一上。JESD216 標(biāo)準(zhǔn)定義了一個 256 字節(jié)大小的 SFDP 表,這個表收納了該 Flash 的幾乎全部特性(速度、容量、寄存器分布、命令集等等),對于軟件驅(qū)動開發(fā)者來說尤其重要。

SFDP 表結(jié)構(gòu)大概是這樣,一開始是 signature 以及 version,然后是 Flash 各種屬性信息??吹竭@你就能明白為啥 SFDP 對于燒錄工具的重要性了,燒錄工具依賴底層的 Flashloader,而 Flashloader 一般設(shè)計上是追求通用的,所以其會先獲取 Flash SFDP 表進行解析得到 Flash 全部信息,然后根據(jù)這些信息加載合適的軟件驅(qū)動去讀寫擦 Flash。因此如果得不到正確的 SFDP 表,那么依賴通用 Flashloader 的燒錄工具便無法正常工作。J-Link 以及恩智浦官方燒錄工具都是基于通用 Flashloader 思想設(shè)計的。

三、Winbond NOR Flash的SFDP操作

翻開以 W25Q32JV 為代表的 Winbond NOR Flash 數(shù)據(jù)手冊,我們從其模塊框圖可以得知 Flash 內(nèi)部存儲顆粒由三種類型組成, 地址范圍 0x000000 - 0x3FFFFF 的 Memory Block,地址范圍 0x000000 - 0x0000FF 的 SFDP,地址范圍 0x001000 - 0x0030FF 的 Security Registers。對于 Memory Block 的讀寫擦操作我們再熟悉不過了,那后兩種類型該用什么命令操作呢?

繼續(xù)查看數(shù)據(jù)手冊,找到了如下關(guān)于 Security Registers 的專用讀寫擦命令時序。上一節(jié)介紹了 Read SFDP 命令,似乎 SFDP 這個地址空間僅支持讀操作,那么 SFDP 數(shù)據(jù)是如何在 Flash 出廠時被寫入的呢?到底是直接固化(隨芯片 TO)?還是 OTP 一次性專用后門命令擦寫的?帶著這個疑惑,痞子衡咨詢了 Winbond 技術(shù)人員,他們告知其實 Security Registers 擦寫命令可以同樣擦寫 SFDP 空間。

即 Security Registers 讀寫擦命令時序里地址參數(shù) A15-12 設(shè) 4'b0000 時,實際操作得就是 SFDP 空間(雖然手冊里沒有明說這一點)?;谶@個消息,痞子衡找了一個正常的 RT1064-EVK 板卡讀出其有效的 SFDP 表數(shù)據(jù),然后將該 SFDP 表寫入異常的 RT1064-EVK 板卡,這時候下載工具就能夠正常燒錄了。所以 RT1024/RT1064 芯片發(fā)生這種異常,要么是出廠漏燒了 SFDP 表,要么是 SFDP 被用戶誤擦除過。

至此,i.MXRT1024/1064片內(nèi)4MB Flash的SFDP表易丟失導(dǎo)致的燒錄異常痞子衡便介紹完畢了,掌聲在哪里~~~

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

碩士畢業(yè)于蘇州大學(xué)電子信息學(xué)院,目前就職于恩智浦(NXP)半導(dǎo)體MCU系統(tǒng)部門,擔(dān)任嵌入式系統(tǒng)應(yīng)用工程師。痞子衡會定期分享嵌入式相關(guān)文章