痞子衡嵌入式:串行NOR Flash的頁編程模式對於量產效率的影響



  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是串行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 模式設計本質上都一樣(Hyper Flash目前一線寫模式暫時還不支持),我們就以最常見的 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 型號入手,根據手冊里給的 AC 特性數據來量化分析下 Flash 量產時間,擦寫等待時間均選用典型值,然后分別以 50MHz Single SPI 模式 和 最高頻率 QPI/OPI 模式 Page Program 來看兩者帶來的差異有多大。

3.1 四線QSPI Flash

  首先出場的是來自芯成的 IS25WP064A,這是一顆最高工作頻率為 133MHz,頁大小是 256Bytes,總存儲空間大小是 8MB 的 Flash。

  • 50MHz Single SPI SDR 模式下單頁數據傳輸時間 = (8bit + 24bit + 256 * 8bit) / 50Mbps = 41.6us
  • 133MHz QPI SDR 模式下單頁數據傳輸時間 = (8bit + 24bit + 256 * 8bit) / 4 / 133Mbps = 3.91us
程序長度 數據傳輸時間 Program總等待時間 Erase總等待時間 量產總時間T3
50MHz Single SPI SDR 133MHz QPI SDR 50MHz Single SPI SDR 133MHz QPI SDR
4KB 665.6us 62.556us 0.2ms * 16 = 3.2ms 70ms * 1 = 70ms 73.8656ms 73.262556ms
4MB 681.574ms 64.058ms 0.2ms * 16384 = 3.2768s 0.1s * 128 = 12.8s 16.758374s 16.140858s
4MB 681.574ms 64.058ms 0.2ms * 16384 = 3.2768s 0.15s * 64 = 9.6s 13.558374s 12.940858s
8MB 1.36315s 128.115ms 0.2ms * 32768 = 6.5536s 16s 23.91675s 22.681715s

3.2 八線Octal Flash

  其次出場的是來自旺宏的 MX25UM51345G,這是一顆最高工作頻率為 200MHz,頁大小是 256Bytes,總存儲空間大小是 64MB 的 Flash。

  • 50MHz Single SPI SDR 模式下單頁數據傳輸時間 = (8bit + 32bit + 256 * 8bit) / 50Mbps = 41.76us
  • 200MHz OPI SDR 模式下單頁數據傳輸時間 = (16bit + 32bit + 256 * 8bit) / 8 / 200Mbps = 1.31us
程序長度 數據傳輸時間 Program總等待時間 Erase總等待時間 量產總時間T3
50MHz Single SPI SDR 200MHz OPI SDR 50MHz Single SPI SDR 200MHz OPI SDR
4KB 668.16us 20.96us 0.15ms * 16 = 2.4ms 25ms * 1 = 25ms 28.06816ms 27.42096ms
32MB 5.4736s 0.171704s 0.15ms * 131072 = 19.6608s 0.22s * 512 = 112.64s 137.7744s 132.472504s
64MB 10.9471s 0.343409s 0.15ms * 262144 = 39.3216s 150s 200.2687s 189.665009s

3.3 八線Hyper Flash

  最后出場的是來自賽普拉斯的 S26KS512S,這是一顆最高工作頻率為 166MHz,頁大小是 512Bytes,總存儲空間大小是 64MB 的 Flash(這是第一代Hyper Flash,不支持一線寫模式,據說后面新一代會支持)。

  • 50MHz DTR 模式下單頁數據傳輸時間 = (64bit * 4 + 256 * 64bit + 64bit) / 8 / 2 / 50Mbps = 20.88us
  • 166MHz DTR模式下單頁數據傳輸時間 = (64bit * 4 + 256 * 64bit + 64bit) / 8 / 2 / 166Mbps = 6.289us
程序長度 數據傳輸時間 Program總等待時間 Erase總等待時間 量產總時間T3
50MHz DTR 166MHz DTR 50MHz DTR 166MHz DTR
256KB 10.691ms 3.22ms 0.475ms * 512 = 0.2432s 0.93s * 1 = 0.93s 1.18389s 1.17642s
32MB 1.3684s 0.412166s 0.475ms * 65536 = 31.1296s 0.93s * 128 = 119.04s 151.538s 150.582s
64MB 2.7368s 0.824332s 0.475ms * 131072 = 62.2592s 220s 284.996s 283.084s

  從上面的量化結果來看,因為擦除和寫入等待時間較長,相比較下單純數據傳輸時間在總量產時間 T3 里占比太小,因此 Single SPI 模式相比 QPI/OPI 模式的 Page Program 並沒有顯出多大劣勢。那么低速 Single SPI 模式 Page Program 好處體現在哪呢?我們知道影響 Flash 器件最大的因素是擦寫次數(壽命),低速 Single SPI 模式在數據傳輸上的抗干擾能力遠比高速 QPI/OPI 模式要強,對於 Flash 寫入而言,正確性才是最重要的,低速一次寫成功比高速下因為發生傳輸錯誤而重復去擦寫更有利於延長 Flash 使用壽命。

  至此,串行NOR Flash的頁編程模式對於量產效率的影響痞子衡便介紹完畢了,掌聲在哪里~~~

歡迎訂閱

文章會同時發布到我的 博客園主頁CSDN主頁知乎主頁微信公眾號 平台上。

微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM