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

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

3天内不再提示

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

恩智浦MCU加油站 来源:恩智浦MCU加油站 2025-06-05 10:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来源:痞子衡嵌入式

有些客户应用会采用多颗 i.MXRT 芯片设计一主多从的硬件架构(目的不一,或仿多核 MCU 系统、或拓展 GPIO 数量),因为 i.MXRT 片内无非易失性存储器,这时候为整个系统配置合适的启动设备保证每个 i.MXRT 都能加载程序正常启动是头等大事。

因为 i.MXRT 支持的启动设备类型众多,此处我们暂讨论连接在 FlexSPI 外设上的 NOR Flash 作为启动设备。熟悉 i.MXRT 的 朋友都知道,其片内 ROM 功能强大,这种情况下系统可采用的 Flash 连接启动方式并不单一,今天痞子衡就和大家讨论下这个话题并且给大家介绍一种创新方法:

Note:本篇是上篇,主要介绍理论方法,下篇为具体实践。

一、多i.MXRT系统启动的传统设计

1.1 每个i.MXRT独享一个Flash

首先介绍得是大家直觉里第一反应的方案,那就是每个 i.MXRT 都有专属 Flash,互不干扰,这种方案没啥好说的,就是简单粗暴,但是它也有明显的优缺点:

- 优点:

1. 系统启动快,多 i.MXRT 同时启动

2. 每个 i.MXRT 均可以 XiP 启动

3. 每个 i.MXRT 单独更新专属 Flash(可同时进行,OTA 加速且程序版本管理简单)

- 缺点:

1. 硬件设计稍复杂,PCB 面积大,Flash 数量多导致成本高

2. 程序烧写流程增多(需烧写多颗 Flash),量产不便

0db87a3e-3c2b-11f0-b715-92fbcf53809c.png

1.2 仅主i.MXRT连接一个Flash

当主从系统里从 i.MXRT 数量多到一定程度,上述方法里的缺点就被无限放大了,Flash 数量扎眼,量产时间过长,这时候项目经理一定会跳出来让你降成本(Flash成本,产线时间成本),于是你就开始想办法减少 Flash 数量。

此时我们可以借助 i.MXRT 的 ROM ISP 功能,由主 i.MXRT 先启动运行 Flash 里的 bootloader ,然后由 bootloader 来读取 Flash 里的应用程序并通过 ISP 接口直接加载到从 i.MXRT 的内部 SRAM 里运行(多个从 i.MXRT 可按序串行下载也可并行下载,从 bootloader 设计角度来说一般是按序串行下载),当然这种方式同样有明显的优缺点:

- 优点:

1. 简化了硬件设计,PCB 面积减小,仅需一颗 Flash

2. 简化了程序烧写流程(仅需烧写一颗 Flash),方便量产

- 中性:

1. 仅有主 i.MXRT 可以 XiP 启动,从 i.MXRT 都只能 Non-XiP 启动

2. 主 i.MXRT 统一负责 OTA 升级任务(loading 较大)

- 缺点:

1. 需要额外设计符合 ROM ISP 协议的 bootloader 让主 i.MXRT 执行去加载从 i.MXRT 程序

2. 整个系统启动时间变长(如果从 i.MXRT 程序由 bootloader 按序串行下载,UART 接口速度慢)

3. 如果从 i.MXRT 程序不同,Flash 里会分区域存储不同程序,带来复杂的 OTA 版本管理问题

0de280ae-3c2b-11f0-b715-92fbcf53809c.png

二、共享Flash启动的创新方法

上述改进方法达到了降硬件成本的目的,但是也带来了一个无法避免的系统整体启动时间过长的问题(bootloader 实现 ROM ISP 功能如果选择 USB 接口,需要额外加 Hub,还是存在硬件成本问题;如果选择 UART 接口,速度较低,程序加载时间无法忍受)。

有没有更好的方法?痞子衡既然这么问了,那就一定是有!我们可以创新地把一颗 Flash 同时连到多个 i.MXRT 上,主 i.MXRT 能够控制所有从 i.MXRT 的 POR_B 电平。系统上电,主 i.MXRT 先 Non-XIP 启动,然后主 i.MXRT 逐一释放从 i.MXRT 的 POR_B 让它们分时占用 Flash 去 Non-XIP 启动,现在我们再来分析下它的优缺点:

- 优点:

1. 简化了硬件设计,PCB 面积减小,仅需一颗 Flash

2. 简化了程序烧写流程(仅需烧写一颗 Flash),方便量产

- 中性:

1. bootloader 可有可无,即使有也非常简单,无需承担程序加载任务

2. 整个系统启动时间可控(分时复用 Flash 启动,FlexSPI 接口加载速度较高)

3. 系统里仅有一个 i.MXRT(可主可从)可以 XiP 启动,其余 i.MXRT 都只能 Non-XiP 启动

4. 每个 i.MXRT 均可承担 OTA 升级任务,具有一定灵活性

- 缺点:

1. 如果从 i.MXRT 程序不同,Flash 里会分区域存储不同程序,带来复杂的 OTA 版本管理问题

0df3cc9c-3c2b-11f0-b715-92fbcf53809c.png

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

    关注

    147

    文章

    18646

    浏览量

    388298
  • FlaSh
    +关注

    关注

    10

    文章

    1718

    浏览量

    154783
  • 存储器
    +关注

    关注

    39

    文章

    7716

    浏览量

    170932
  • 芯片设计
    +关注

    关注

    15

    文章

    1131

    浏览量

    56490

原文标题:多i.MXRT主从系统中共享一颗Flash启动的方法全讲解(上)

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    在 《多个i.MXRT共享一颗Flash启动方法
    的头像 发表于 06-05 10:04 1043次阅读
    <b class='flag-5'>多个</b><b class='flag-5'>i.MXRT</b><b class='flag-5'>共享</b><b class='flag-5'>一颗</b><b class='flag-5'>Flash</b><b class='flag-5'>启动</b>的<b class='flag-5'>方法</b>与<b class='flag-5'>实践</b>(下)

    Flash下Dummy Cycle设置方法的差异

    今天痞子衡给大家介绍的是同厂商不同系列Flash型号下Dummy Cycle设置方法的差异。  篇文章 《在
    发表于 12-13 06:29

    i.MXRT设计更新Segger J-Link Flash下载算法文件

    给大家分享的是为i.MXRT设计更新Segger J-Link Flash下载算法文件。  想要在Flash中调试,基本是离不开Flash下载算法的,毕竟要先将代码烧写进
    发表于 12-15 06:11

    i.MXRT系列FlexSPI驱动Flash页编程执行时间

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT系列FlexSPI驱动Flash页编程执行时间。  痞子衡之前写过篇文章 《串行NOR Flash的页
    发表于 12-21 07:30

    i.MXRT使能NOR Flash的Continuous read模式在软复位后无法正常启动怎么解决?

    i.MXRT使能NOR Flash的Continuous read模式在软复位后无法正常启动怎么解决?
    发表于 01-19 07:19

    IAR开发环境下i.MXRT的串行NOR Flash下载算法设计

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是IAR开发环境下i.MXRT的串行NOR Flash下载算法设计。  在i.MXRT硬件那些事系列之《在串行NOR Flas
    发表于 01-26 07:46

    i.MXRT使能NOR Flash的Continuous read模式在软复位后无法正常启动问题的解决

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT使能NOR Flash的Continuous read模式在软复位后无法正常启动问题的解决经验。  先
    发表于 01-26 06:52

    FlexSPI复位方式不当会导致i.MXRT系列下OTFAD加密启动失败怎么解决?

    FlexSPI复位方式不当会导致i.MXRT系列下OTFAD加密启动失败怎么解决?
    发表于 02-07 08:11

    介绍i.MXRT启动头FDCB里的lookupTable

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT启动头FDCB里的lookupTable。个MCU内部通常有很多外设模块,这些外设模块是各MCU厂商做差异化产...
    发表于 02-17 07:47

    J-Link工具下i.MXRT的串行NOR Flash下载算法设计

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 J-Link 工具下 i.MXRT 的串行 NOR Flash 下载算法设计。 、J-Link 各版本对 i.MXRT
    的头像 发表于 12-08 10:07 1720次阅读

    Flash不支持SFDP,如何下载适用i.MXRT

    i.MXRT 系列都没有内置 Flash(RT1064, RT1024 等 SIP 型号除外),因此为其搭配块串行 NOR Flash启动
    的头像 发表于 10-30 10:30 1419次阅读

    痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)...

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项。  痞子衡前段时间写过篇小文《为i.MXRT
    发表于 10-29 10:36 0次下载
    痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在<b class='flag-5'>Flash</b>调试注意事项(<b class='flag-5'>i.MXRT</b>500为例)...

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

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT使能NOR Flash的Continuous read模式在软复位后无法正常启动问题的解决经验。  先
    发表于 12-02 12:51 1次下载
    痞子衡嵌入式:串行NOR <b class='flag-5'>Flash</b>的Continuous read模式下软复位后<b class='flag-5'>i.MXRT</b>无法<b class='flag-5'>启动</b>问题解决方案之SW Reset...

    i.MXRT提升代码执行性能的十八般武艺

    SBL 项目是支持全系列 i.MXRT 平台的,为了具体化问题,我们就选取 i.MXRT1062 型号为例,官方配套 MIMXRT1060-EVK 板子搭配了一颗四线串行 NOR
    的头像 发表于 05-23 09:31 1852次阅读

    深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程

    我们知道外部串行NOR Flash是接到i.MXRT的FlexSPI外设引脚上,有时串行NOR Flash启动也叫FlexSPI NOR启动
    的头像 发表于 06-02 17:43 2362次阅读
    深入<b class='flag-5'>i.MXRT</b>1050系列ROM中串行NOR <b class='flag-5'>Flash</b><b class='flag-5'>启动</b>初始化流程