|

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是串行NOR Flash的页编程模式对于量产时间的影响。
' d0 P, i, c5 C% E1 r) V. K; _0 b任何嵌入式产品最终都绕不开量产效率话题,尤其是对于主控是非内置 Flash 型 MCU(比如恩智浦的 i.MXRT 系列、意法半导体的 H7 系列等),单片量产时间直接决定了工厂生产效率,对于那种百万级出货量的消费类产品,任何关于量产时间的重大优化都能带来明显受益(据说产线都是按分钟来计费的)。4 L# K0 W8 A0 `* l$ \1 @- }
目前市面上的量产方案主要如下三类,其中方案二是最通用灵活的方式,因为其下载算法可由用户自由调整,所以这种量产方案下产品最终 Flash 型号选择上相对不受限。
" e* E: K7 C! l2 ?4 C. N方案一:利用专门的编程器直接对 Flash 进行离线烧录,不需要连接目标 MCU;方案二:利用通用的调试器连接目标 MCU 板卡对 Flash 进行在线烧录;方案三:利用目标 MCU 里的厂商/自定义 Bootloader 对 Flash 进行在线烧录;说到下载算法设计,就离不开 Flash 擦写命令模式,其中写命令是 Page Program(页编程),即一次性写入一个 Page 大小的数据块到 Flash 中。我们知道关于 Flash 读命令有非常多的模式(Single, Dual, Quad, Octal, SPI/QPI, SDR/DTR等),而对于 Flash 写命令,从手册里看模式寥寥无几,为什么写命令模式这么少?不同写命令模式有何区别?痞子衡今天从其对量产时间/效率的影响角度跟大家聊一聊:
: i9 j/ ?9 y! Y7 P6 d# Z- L一、量产过程中时间组成下图是咱们前面提到的量产方案二的功能示意简图,这里目标 MCU 是以恩智浦 i.MXRT 系列来示例的,调试器就以 Segger J-Link 为例,上位机量产软件即 Segger J-Flash。量产时间一共由三部分时间共同决定:
" x( j. U. ]* L6 ^9 v时间一:上位机软件 J-Flash 调度时间(将用户程序二进制文件分包通过 USB 口发送给调试器硬件,并与调试器实时交互);时间二:硬件调试器 J-Link 中转时间(调试器从 USB 口收到上位机传来的一包包用户程序数据后,通过 SWD/JTAG 口转存到目标 MCU - i.MXRT 的内部 RAM 中);时间三:目标 MCU - i.MXRT 执行下载算法时间(执行下载算法中的擦写函数,将 RAM 中缓存的用户程序数据写入 Flash 中);最终量产总时间并不是简单的三部分时间之和,这三部分时间之间实际上是互有交叠的,简单地说,量产过程是以流水线方式进行的。时间一、二主要取决于 Segger 的设计,我们轻易无法改动,而时间三是我们可以量化和分析改进的地方,本文要讨论的也是这个时间三。 |
|