二、多Flash型号量产的解决方案【痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案】上一节介绍了有很多因素会导致 FDCB 不同,这些因素都是多 Flash 型号量产路上的拦路虎,我们有什么方法能规避这些因素差异带来的问题呢?主要有如下两个方案:
2.1 BootROM自识别方案第一个方案是利用 i.MXRT 芯片 BootROM 里的功能,详见痞子衡旧文 《自识别特性(Auto Probe)可以无需FDCB也能从NOR Flash启动》 。这个特性可以让我们不用提供 FDCB,芯片也能正常从 Flash 里启动固件应用程序,这样也就自然不存在量产过程中不同 Flash 里固件差异问题 。但是这个方案也有几个明显的缺点:
2.2 一线模式FDCB启动+二级Configurer程序第二个方案主要是为了解决方案一里的全部缺点,即使用通用的一线低速模式的 FDCB 启动头给 BootROM 去读取启动,然后再设计一个二级的 Configurer 程序(被 BootROM 启动的代码),在这个 Configurer 程序里去做 Flash 差异化的相关事情并将 FlexSPI 模块配置到指定时序模式,最后再由这个 Configurer 程序去启动固件应用程序 。
- 缺点一:Auto Probe 特性在 i.MXRT1010/1020/1050 上不可用,仅在 i.MXRT1060/1170/500/600 上可以用 。
- 缺点二:Auto Probe 特性对于不同 Flash 的支持(尤其是 OctalSPI Flash)可能需要通过烧写 i.MXRT 芯片 OTP 来实现,这样实际上是把 FDCB 差异转化到 OTP 差异上了 。
- 缺点三:Auto Probe 特性仅能处理基本的 FDCB 差异(比如 QE,比如 Dummy Cycle),但是一些性能模式相关的差异不能很好地处理,拓展性不足 。

文章插图
这里的 Configurer 程序设计是关键,而其中最核心的是如何识别当前 Flash 型号,这里要感谢 JEDEC 组织,目前几乎全部主流 Flash 都支持一线模式下 Read JEDEC 命令(0x9F),返回的 Manufacturer ID 就是每个 Flash 厂商向 JEDEC 组织申请的识别码,然后 Memory Type 是各厂商自己定义的型号系列分类 。Configurer 程序结合这两个参数就可以识别当前 Flash 具体型号,底下就是做不同的代码分支去处理不同的 Flash 配置即可 。

文章插图
二级 Configurer 程序说起来很简单,其实具体设计起来还是有很多细节要考量的(比如 FlexSPI 多次配置中系统时钟切换问题、应用程序跳转等),因此痞子衡开源了这个项目(RT-MFB),并且会长期维护下去,希望将来能支持尽可能多的 Flash 型号 。第一版是以 MIMXRT595-EVK 上的两颗 Flash 为原型(IS25WP064A / MX25UW51345G)来做的 。
至此,一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案痞子衡便介绍完毕了,掌声在哪里~~~
- 项目地址:https://github.com/JayHeng/RT-MFB
欢迎订阅文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上 。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦 。

文章插图
经验总结扩展阅读
- 有趣实验 .NET下数据库的负载均衡(续)
- 平衡水溶肥配方
- 小米平衡车实心轮胎怎么装
- 平衡车电池饿死激活方法 平衡车放久了充不进电怎么办
- 极寒慎皮肤绝版了吗
- 吊车平衡阀坏了的表现
- 什么叫平衡常数
- 痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用
- 离心式压缩机的平衡管有什么作用
- SR寄存器BP[x:0]位 痞子衡嵌入式:一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事