大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是序列NOR Flash的頁程式設計模式對於量產效率的影響。
任何嵌入式產品最終都繞不開量產效率話題,尤其是對於主控是非內建 Flash 型 MCU(比如恩智浦的 i.MXRT 系列、意法半導體的 H7 系列等),單片量產時間直接決定了工廠生產效率,對於那種百萬級出貨量的消費類產品,任何關於量產時間的重大優化都能帶來明顯受益(據說產線都是按分鐘來計費的)。
目前市面上的量產方案主要如下三類,其中方案二是最通用靈活的方式,因為其下載演算法可由使用者自由調整,所以這種量產方案下產品最終 Flash 型號選擇上相對不受限。
- 方案一:利用專門的程式設計器直接對 Flash 進行離線燒錄,不需要連線目標 MCU;
- 方案二:利用通用的偵錯程式連線目標 MCU 板卡對 Flash 進行線上燒錄;
- 方案三:利用目標 MCU 裡的廠商/自定義 Bootloader 對 Flash 進行線上燒錄;
說到下載演算法設計,就離不開 Flash 擦寫命令模式,其中寫命令是 Page Program(頁程式設計),即一次性寫入一個 Page 大小的資料塊到 Flash 中。我們知道關於 Flash 讀命令有非常多的模式(Single, Dual, Quad, Octal, SPI/QPI, SDR/DTR等),而對於 Flash 寫命令,從手冊裡看模式寥寥無幾,為什麼寫命令模式這麼少?不同寫命令模式有何區別?痞子衡今天從其對量產時間/效率的影響角度跟大家聊一聊:
一、量產過程中時間組成
下圖是我們們前面提到的量產方案二的功能示意簡圖,這裡目標 MCU 是以恩智浦 i.MXRT 系列來示例的,偵錯程式就以 Segger J-Link 為例,上位機量產軟體即 Segger J-Flash。量產時間一共由三部分時間共同決定:
- 時間一:上位機軟體 J-Flash 排程時間(將使用者程式二進位制檔案分包通過 USB 口傳送給偵錯程式硬體,並與偵錯程式實時互動);
- 時間二:硬體偵錯程式 J-Link 中轉時間(偵錯程式從 USB 口收到上位機傳來的一包包使用者程式資料後,通過 SWD/JTAG 口轉存到目標 MCU - i.MXRT 的內部 RAM 中);
- 時間三:目標 MCU - i.MXRT 執行下載演算法時間(執行下載演算法中的擦寫函式,將 RAM 中快取的使用者程式資料寫入 Flash 中);
最終量產總時間並不是簡單的三部分時間之和,這三部分時間之間實際上是互有交疊的,簡單地說,量產過程是以流水線方式進行的。時間一、二主要取決於 Segger 的設計,我們輕易無法改動,而時間三是我們可以量化和分析改進的地方,本文要討論的也是這個時間三。
二、Flash頁程式設計模式
常用的 NOR Flash 一共有三類:QSPI、OctalFlash、HyperFlash,這三類 Flash 關於 Page Program 模式設計本質上都一樣,我們就以最常見的 QSPI 為例來介紹。下圖是典型的 QSPI Flash IS25WP064A 支援的全部三種寫模式:Single SPI Page Program(命令地址資料全在 IO0 上傳輸),Quad Input Page Program(命令地址在 IO0 上傳輸,資料在 IO[x:0] 上傳輸)、QPI Page Program(命令地址資料全在 IO[x:0] 上傳輸)。
- 注:四線 Flash,QPI 模式是傳輸效率最高的模式,八線 Flash,OPI 模式是傳輸效率最高的模式。
單從頁資料傳輸的角度而言,QPI Page Program 效率最高,Single SPI Page Program 效率最低,相同 Flash 工作頻率下,前者所花時間僅後者的 1/4(如果是Octal/Hyper Flash,則是 1/8)。按道理在量產過程中應儘可能選擇 QPI/OPI 模式並以最高 Flash 工作頻率去做 Page Program,但實際量產過程中往往是 Single SPI 模式且較低 Flash 工作頻率去 Page Program 用得更多,這是為什麼?繼續往下看。
三、不同型別Flash量產時間分析
帶著上一節留下的疑問,我們從幾個實際 Flash 型號入手,量化分析下 Flash 量產時間,分別以 50MHz Single SPI 模式 和 最高頻率 QPI/OPI 模式 Page Prorgam 來看兩者帶來的差異有多大。
3.1 四線QSPI Flash
程式長度 | 資料傳輸時間 | Program總等待時間 | Erase總等待時間 | 量產總時間T3 | ||
---|---|---|---|---|---|---|
50MHz Single SPI | 133MHz QPI | 50MHz Single SPI | 133MHz QPI | |||
4KB | 665.6us | 62.556us | 0.2ms * 16 | 70ms * 1 | 73.8656ms | 73.262556ms |
4MB | 681.574ms | 64.058ms | 0.2ms * 16384 | 0.1s * 128 | 16.758374s | 16.140858s |
4MB | 681.574ms | 64.058ms | 0.2ms * 16384 | 0.15s * 64 | 13.558374s | 12.940858s |
8MB | 1.36315s | 128.115ms | 0.2ms * 32768 | 16s | 23.91675s | 22.681715s |
3.2 八線Octal Flash
程式長度 | 資料傳輸時間 | Program總等待時間 | Erase總等待時間 | 量產總時間T3 | ||
---|---|---|---|---|---|---|
50MHz Single SPI | 200MHz OPI | 50MHz Single SPI | 200MHz OPI | |||
4KB | 668.16us | 20.88us | 0.15ms * 16 | 25ms * 1 | 28.06816ms | 27.42088ms |
32MB | 5.4736s | 0.171049s | 0.15ms * 131072 | 0.22s * 512 | 137.7744s | 132.471849s |
64MB | 10.9471s | 0.342098s | 0.15ms * 262144 | 150s | 200.2687s | 189.663698s |
從上面的量化結果來看,因為擦除和寫入等待時間較長,相比較下單純資料傳輸時間在總量產時間 T3 裡佔比太小,因此 Single SPI 模式相比 QPI/OPI 模式的 Page Program 並沒有顯出多大劣勢。那麼低速 Single SPI 模式 Page Program 好處體現在哪呢?我們知道影響 Flash 器件最大的因素是擦寫次數(壽命),低速 Single SPI 模式在資料傳輸上的抗干擾能力遠比高速 QPI/OPI 模式要強,對於 Flash 寫入而言,正確性才是最重要的,低速一次寫成功比高速下因為發生傳輸錯誤而重複去寫更有利於延長 Flash 使用壽命。
至此,序列NOR Flash的頁程式設計模式對於量產效率的影響痞子衡便介紹完畢了,掌聲在哪裡~~~
歡迎訂閱
文章會同時釋出到我的 部落格園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。