|
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MXRT下FlexSPI driver實現(xiàn)Flash編程時對于中斷支持問題。
2 \1 E/ ?0 E+ J6 m前段時間有客戶在官方社區(qū)反映 i.MXRT1170 下使用官方 SDK 里 FlexSPI 驅(qū)動去擦寫 Flash 時不能很好地支持全局中斷?蛻繇椖坷镉昧藘蓧K NOR Flash,分別掛在不同的 FlexSPI 上,一塊 Flash 用于存儲 XIP 代碼(FlexSPI1),另一塊 Flash 用于存儲項目資源數(shù)據(jù)(FlexSPI2),顯然這樣的設(shè)計原理上是沒有問題的,那為什么使能了中斷會出問題呢?今天痞子衡來分析下這個問題:
5 `2 H$ f$ Z* _$ SNote: 客戶測試的 SDK 版本為 2.12.1,對應(yīng)的 FlexSPI driver 版本為 2.3.6一、為什么擦寫Flash時經(jīng)常需要關(guān)全局中斷?在具體分析客戶問題之前,我們先來聊聊嵌入式應(yīng)用里應(yīng)對 NOR Flash 的擦寫為何大部分情況下都是要關(guān)閉全局中斷(這里假設(shè)執(zhí)行代碼空間與擦寫操作空間在同一個 Flash 上,當(dāng)然是在不同區(qū)域),這其實跟如下兩個特性有關(guān):
* u/ Y1 ?/ u& R$ s u! R% \1.1 RWW特性(Read-While-Write)RWW 特性的意思是在 Flash 執(zhí)行擦寫命令進(jìn)入 Busy 狀態(tài)期間(Flash 內(nèi)部狀態(tài)寄存器 WIP 位變狀態(tài) 1)還能否繼續(xù)響應(yīng)非操作區(qū)域的讀訪問。如果 SR[WIP] = 1 時還能夠支持讀訪問,則該 Flash 支持 RWW,反之則不支持 RWW。 |
|