0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

影响多Flash型号量产的因素

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2022-11-03 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

对于以i.MX RT 这类没有内部NVM (Non-Volatile Memory) 的 MCU 为主控的项目来说,为其选配一颗 NVM 作为代码存储器是头等大事,而串行 NOR Flash 是最常见的 NVM 选择。

串行 NOR Flash 要能被i.MX RT正常启动,其固定偏移处(0x0/0x400)一般要求放置一个配套启动头(FDCB),系统上电 BootROM 会用 30MHz 1bit SPI SDR 时序模式去读取这个启动头来获取当前 Flash 的相关属性(主要是用户设定的时序模式)从而进一步配置片内 FlexSPI 模块以指定的时序模式去启动 Flash 里的固件应用程序。

到了项目量产阶段,尤其是出货量大的消费类产品,我们往往不会仅选择某一 Flash 厂商产品(价格因素,供货因素等),这时候就不得不考虑一个问题,如果选择的是特性不完全一致的两颗 Flash,那么下载进 Flash 的固件应用程序能不能保持一样(其实主要就是下图中的 FDCB1/2 差异问题怎么解决)?今天就跟大家讨论一下这个问题:

7674f792-5b13-11ed-a3b6-dac502259ad0.png

注:本文主要针对的是普通四线 QuadSPI / 八线 OctalSPI 类型的串行 NOR Flash。

一、影响多Flash型号量产的因素

我们知道导致下载进不同 Flash 里的固件程序,有差异的主要原因是 i.MX RT 配套启动头(FDCB),这个 FDCB 描述了 Flash 的基本信息(Device 容量、速度、读模式命令等),Flash 属性不同,FDCB 也会跟着变化,所以我们先来介绍下有哪些可能的因素会影响 FDCB 内容:

1.1 QE bit位置

首先是 QE bit 使能操作的差异。

很多 Flash 出厂时 QE bit 并没有被使能,量产过程中烧录器有时候也未必去使能 QE bit(一线模式编程相比 Multi I/O 模式编程对量产时间影响不大),这种情况在 FDCB 里需要加上使能 QE bit 操作,而 QE bit 在 Flash 内部寄存器里的定义以及写入命令有好几种,详见旧文《影响下载/启动的常见因素之QE bit》。

1.2 READ命令中Dummy Cycles数

使能 QE bit 是为了能让 Flash 工作在 Multi I/O Fast READ 模式,但这时候 READ 时序里会有 Dummy Cycles 周期(即 Flash 接收到主设备发来的读命令从而准备相应数据的反应时间)。

Flash 的不同工作频率对应的最小 Dummy Cycles 不同,不同厂商关于 Dummy Cycles 数要求也不同,此外如果 Flash 里的默认 Dummy Cycle 不是对应最高工作频率的话,要想让 Flash 工作在最高频率还需要额外设置 Flash 相应寄存器来修改 Dummy Cycle(这里的设置方法也不同),这些 Dummy Cycle 设定都要体现在 FDCB 里,详见旧文《调整Flash工作频率也需同步设Dummy Cycle》。

1.3 地址3B/4B模式切换

对于不高于 16MB 容量的 Flash,在 READ 时序里一般使用三字节地址就行了,但是超过 16MB 的 Flash ,对其访问就会涉及三字节地址以及四字节地址选择问题,因此避不可免地要考虑 Flash 地址模式切换问题,不同厂商的地址模式设计以及切换操作也略有不同,FDCB 里同样要考虑这些,详见旧文 《16MB以上NOR Flash使用注意》。

1.4 QPI/OPI模式进入

如果为了追求极限执行性能,一般还会考虑将 Flash 从 SPI 模式切换到 QPI/OPI 模式,这里不同厂商的模式切换设计也可能略有不同,FDCB 也要负责这个工作,详见旧文《使能串行NOR Flash的QPI/OPI模式》。

1.5 DTR/Continuous read性能模式

当然还有一些其它关于 Flash 性能模式考量,比如 DTR 模式、Continuous read 模式,要想使能这些模式也都需要在 FDCB 里做文章,详见旧文 《使能串行NOR Flash的DTR模式》、《使能串行NOR Flash的Continuous read模式》。

二、多Flash型号量产的解决方案

上一节介绍了有很多因素会导致 FDCB 不同,这些因素都是多 Flash 型号量产路上的拦路虎,我们有什么方法能规避这些因素差异带来的问题呢?主要有如下两个方案:

2.1 BootROM自识别方案

第一个方案是利用 i.MXRT 芯片 BootROM 里的功能,详见旧文 《自识别特性(Auto Probe)可以无需FDCB也能从NOR Flash启动》。这个特性可以让我们不用提供 FDCB,芯片也能正常从 Flash 里启动固件应用程序,这样也就自然不存在量产过程中不同 Flash 里固件差异问题。但是这个方案也有几个明显的缺点:

缺点一: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),但是一些性能模式相关的差异不能很好地处理,拓展性不足。

2.2 一线模式FDCB启动+二级Configurer程序

第二个方案主要是为了解决方案一里的全部缺点,即使用通用的一线低速模式的 FDCB 启动头给 BootROM 去读取启动,然后再设计一个二级的 Configurer 程序(被 BootROM 启动的代码),在这个 Configurer 程序里去做 Flash 差异化的相关事情并将 FlexSPI 模块配置到指定时序模式,最后再由这个 Configurer 程序去启动固件应用程序。

7689adcc-5b13-11ed-a3b6-dac502259ad0.png

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

76a3adee-5b13-11ed-a3b6-dac502259ad0.png

二级Configurer 程序说起来很简单,其实具体设计起来还是有很多细节要考量的(比如 FlexSPI 多次配置中系统时钟切换问题、应用程序跳转等),因此痞子衡开源了这个项目(RT-MFB),并且会长期维护下去,希望将来能支持尽可能多的 Flash 型号。第一版是以 MIMXRT595-EVK 上的两颗 Flash 为原型(IS25WP064A / MX25UW51345G)来做的。

项目地址:https://github.com/JayHeng/RT-MFB

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1715

    浏览量

    154701
  • 存储器
    +关注

    关注

    39

    文章

    7714

    浏览量

    170849

原文标题:一种灵活的i.MX RT下多串行NOR Flash型号选择的量产方案

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32L012实现外部flash下载算法

    外部flash或者内置的片上flash,都是编译器通过调用写好的FLM文件来实现下载,单片机内部的安装pack包就会有(官方实现),外部flash的情况比较复杂,例如用的哪种flash
    的头像 发表于 10-09 17:38 1193次阅读
    CW32L012实现外部<b class='flag-5'>flash</b>下载算法

    NAND Flash的基本原理和结构

    NAND Flash是什么?NAND Flash(闪存)是一种非易失性存储器技术,主要用于数据存储。与传统的DRAM或SRAM不同,NAND Flash在断电后仍能保存数据。它通过电荷的存储与释放来实现数据的存储。
    的头像 发表于 09-08 09:51 5795次阅读
    NAND <b class='flag-5'>Flash</b>的基本原理和结构

    地平线征程6E正式开启量产交付

    2025年8月,高速NOA计算方案最优解——地平线征程6E正式开启量产交付,首批量产车型包括埃安霸王龙、名爵MG4、荣威M7 DMH以及奇瑞等品牌热门车型,这也标志着征程6系列全阶量产
    的头像 发表于 09-02 09:18 597次阅读

    模光纤传输速率受哪些因素影响

    模光纤的传输速率受多种因素影响,这些因素共同决定了其在实际应用中的性能表现。以下是主要影响因素的详细分析: 1. 光纤类型与规格 模光纤
    的头像 发表于 08-25 09:53 917次阅读
    <b class='flag-5'>多</b>模光纤传输速率受哪些<b class='flag-5'>因素</b>影响

    SPI NOR FLASH是什么,与SPI NAND Flash的区别

    SPI NOR FLASH是什么?   SPI NOR FLASH是一种非易失性存储器,它通过串行接口进行数据传输,具有读写速度快、可靠性高、体积小等优点。它采用类似SRAM的存储方式,每个存储单元
    的头像 发表于 08-21 09:26 1106次阅读

    XMC1302如何退出工厂量产模式?

    你好,XMC1302如何退出工厂量产模式,芯片无法通过外部访问,jlink 串口ttl miniwiggler都无法访问链接,无法识别芯片id和bmi,麻烦出个详细教程,如何将芯片退出量产模式,可以进行读写,和如何直接使用量产
    发表于 08-11 07:46

    FLASH烧写/编程白皮书

    白皮书:如何烧写Flash——不同场景不同需求下的选择认识Flash NAND vs. NOR如何烧写/编程不同方案比较
    发表于 07-28 16:05 0次下载

    AS32X601芯片Flash擦写调试技术解析

    本文聚焦于 国科安芯推出的AS32X601 芯片的 Flash 擦写调试工作,深入剖析其片内 Flash 存储器架构,详述 Flash 控制器功能与运作机制。通过对 Flash 指令集
    的头像 发表于 07-22 13:47 517次阅读
    AS32X601芯片<b class='flag-5'>Flash</b>擦写调试技术解析

    多个i.MXRT共享一颗Flash启动的方法与实践(下)

    在 《多个i.MXRT共享一颗Flash启动的方法与实践(上)》 一文里痞子衡给大家从理论上介绍一种 i.MXRT 共享 Flash 启动的方法,但是理论虽好,如果没有经过实践验证切实可行,不过是纸上谈兵,所以今天痞子衡就找了
    的头像 发表于 06-05 10:04 1033次阅读
    多个i.MXRT共享一颗<b class='flag-5'>Flash</b>启动的方法与实践(下)

    FLASH的工作原理与应用

    14FLASHFLASH的工作原理与应用OWEIS1什么是FLASH?Flash闪存是一种非易失性半导体存储器,它结合了ROM(只读存储器)和RAM(随机访问存储器)的优点,具有电子可擦除和可编程
    的头像 发表于 05-27 13:10 1471次阅读
    <b class='flag-5'>FLASH</b>的工作原理与应用

    MCU片上Flash

        MCU片上Flash是微控制器内部集成的非易失性存储器,主要用于存储程序代码、常量数据及系统配置信息。其核心特性与功能如下: 一、定义与类型‌ 片上Flash采用浮栅晶体管技术,具备断电数据
    的头像 发表于 05-06 14:26 862次阅读

    如何使用双Flash固化FPGA

    前言文档内容适配技术问题说明:1.MES2L676-100HP开发板如何固化到两颗flash;2.MES2L676-100HP开发板如何加快上电后flash加载速度(SPIX8模式)01简介
    的头像 发表于 04-14 09:52 831次阅读
    如何使用双<b class='flag-5'>Flash</b>固化FPGA

    调试时Memory窗口中Flash内容不更新的原因和解决办法

    调试时在代码中对Flash进行写操作时(比如Bootloader对Code Flash进行升级操作,Application对Data Flash进行写操作),Memory窗口中Flash
    的头像 发表于 04-01 09:18 978次阅读
    调试时Memory窗口中<b class='flag-5'>Flash</b>内容不更新的原因和解决办法

    TPA3221 PBTL使用,量产时出现开关机烧IC

    有没有使用TPA3221 PBTL 2L接法的量产板,做测试板比顺利,进入小批量时出现开关机烧IC,现象是IC的OUT直接输出PVDD电压。PVDD电源28V。不能确定是关机烧还是开机烧。有没有量产TPA3221的朋友,求图。
    发表于 01-23 16:37