大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是串行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主页、知乎主页、微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:串行NOR Flash的页编程模式对于量产效率的影响相关推荐

  1. 串行 spi Flash 跨页编程的注意点

    spi Flash 进行 page program的时候,编程的数据为1-256个字节不等.在Datasheet中,如果编程的数据为256个字节,那么,输入的起始地址需要256个字节对齐,即需要页对齐 ...

  2. 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的QPI/OPI模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的QPI/OPI模式. 我们知道 Flash 读时序里有五大子序列 CMD + ADDR + MO ...

  3. 痞子衡嵌入式:实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形(全加速)...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形. 上一篇文章 <实抓Flash信号波形来看i.MXR ...

  4. 痞子衡嵌入式:实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形(有预取)...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形. 上一篇文章 <实抓Flash信号波形来看i.MXR ...

  5. 痞子衡嵌入式:实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形(无缓存)...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形. 上一篇文章 <i.MXRT中FlexSPI外设对A ...

  6. 痞子衡嵌入式:深扒i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合. 在串行 NOR Flash 热启动过程 ...

  7. 痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案. 对于以 i.MXRT 这类没有内部 NVM (Non-Volati ...

  8. 痞子衡嵌入式:在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺. 恩智浦 MCU SE 团队近期一直在加班加点赶 SBL 项目 ...

  9. 痞子衡嵌入式:聊聊i.MXRT1170上串行NOR Flash双程序可交替启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1060/1010上串行NOR F ...

最新文章

  1. windows7 64位机上安装配置CUDA7.5(或8.0)+cudnn5.0操作步骤
  2. Batch Normalization应该放在ReLU非线性激活层的前面还是后面?
  3. 虚拟化基础架构Windows 2008篇之1-虚拟化基础服务概述
  4. 编码练习——Java-1-基础
  5. webpack-dev-server 本地文件 发布 网站 域名 根目录
  6. 用SpriteBuilder简化quot;耕牛遍地走quot;的动画效果(二)
  7. .Net IOC框架入门之二 CastleWindsor
  8. kepware rest服务器_指南安全的KEPServerEX部署-Kepware.PDF
  9. 计算机终端的串口并口指什么,串并口
  10. Chrome浏览器插件之---FeHelper
  11. TransCAD 交通规划软件
  12. [转]Netlog 的数据库及 LAMP 架构
  13. win10无法被远程计算机,win10无法被远程连接解决方法
  14. GPU设备架构全面解析(持续更新ing)
  15. 安卓系统中默认打开蓝牙 HCI snoop 文件的方法
  16. BFM:总线功能模型 zz
  17. python研究背景和意义_课题设计研究的背景和意义
  18. ddos攻击怎么防御,一文了解如何防御DDoS攻击
  19. msysgit的使用教程
  20. 【pytorch】将模型部署至生产环境:借助TorchScript跟踪法及注释法生成可供C++调用的模块

热门文章

  1. 数据结构——栈的应用
  2. 2022图灵奖出炉!以太网之父鲍勃·梅特卡夫获奖,76岁进入新领域再出发
  3. 用css实现各种导航栏
  4. Drools简单入门
  5. jsp对象的四大作用域的简单介绍
  6. MySQL - 语句优化
  7. MarkDown首行缩进和换行
  8. 每个Web开发者都应读的文章:HTML5设计原理
  9. Python基础知识-pycharm版-对象
  10. sql: substr函数用法