大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是串行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. 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的Continuous read模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的Continuous read模式. 前面关于串行Flash传输时序的文章 <Fast R ...

  2. 痞子衡嵌入式:串行NOR Flash的Continuous read模式下软复位后i.MXRT无法启动问题解决方案之RESET#

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT上使能NOR Flash的Continuous read模式在软复位后无法正常启动问题的解决经验. 前一篇文章 <在i ...

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

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

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

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

  5. 痞子衡嵌入式:借助Serial Plot软件测量i.MXRT系列FlexSPI驱动Flash页编程执行时间

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列FlexSPI驱动Flash页编程执行时间. 痞子衡之前写过一篇文章 <串行NOR Flash的页编程模式对于量产 ...

  6. 痞子衡嵌入式:导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP. i.MXRT系列MCU发布已两年多了,基于i.MXR ...

  7. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash X ...

  8. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.4)- 串行NOR Flash下载算法(Keil MDK工具篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Keil MDK工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash ...

  9. 痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程. 从外部串行NOR Flash启动问题是i.MXRT系列开发最 ...

随机推荐

  1. [LeetCode] 1074. 元素和为目标值的子矩阵数量

    矩阵前缀和.因为矩阵中可能包含负值,所以这题肯定不会存在什么剪枝,动态规划的可能性.所以这个题也就没什么弯弯绕绕.个人感觉算不上个Hard题目. 最直观的思路就是枚举子矩阵,既枚举矩阵的左上角节点和右 ...

  2. nginx的请求处理

      nginx的请求处理¶ nginx使用一个多进程模型来对外提供服务,其中一个master进程,多个worker进程.master进程负责管理nginx本身和其他worker进程. 所有实际上的业务 ...

  3. Python+Selenium - 下拉列表处理

    下拉列表分两种:select下拉表和非select下拉表. 1.select下拉列表 如下图元素代码展示 可用Select类处理 from selenium.webdriver.support.sel ...

  4. 论文阅读:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    前言 CVPR2016 来自Korea的POSTECH这个团队   大部分算法(例如HCF, DeepLMCF)只是用在大量数据上训练好的(pretrain)的一些网络如VGG作为特征提取器,这些做法 ...

  5. 外部NORFlash是第一个以硬件为基础的信任

    外部NORFlash是第一个以硬件为基础的信任 External NOR Flash memory is first with hardware root-of-trust 英飞凌科技公司宣布了它声称 ...

  6. eclipse 新建项目不可选择Java Project 解决方法

    解决方法一: 鼠标点击file-new-other,弹出选项框,选中java project,点击next,接下来就是正常创建java protect的流程了,这个虽然也可以解决,但每次新建java项 ...

  7. 使用firefox打开网页报错——Error: no display specified

    想在linux环境下打开一个网页,环境描述:在窗口模式下,打Terminal,然后从本地服务器ssh到了另一个服务器,想执行firefox命令打开一个网页,如下 [root@pc207 ~]# fir ...

  8. 【NX二次开发】调整视图大小

    调整视图大小 tag_t tagView; UF_VIEW_ask_work_view(&tagView); UF_VIEW_fit_view(tagView, 0.7);//if NULL_ ...

  9. 服务器硬件和RAID配置

    服务器 硬件和RAID配置 目录 一.RAID 磁盘阵列介绍 1.1.RAID 0(条带化存储) 1.2.RAID 1(镜像存储) 1.3.RAID 5 1.4.RAID 6 1.5.RAID 1+0 ...

  10. Doris开发手记2:用SIMD指令优化存储层的热点代码

    最近一直在进行Doris的向量化计算引擎的开发工作,在进行CPU热点排查时,发现了存储层上出现的CPU热点问题.于是尝试通过SIMD的指令优化了这部分的CPU热点代码,取得了较好的性能优化效果.借用本 ...