查看: 280|回复: 0

[分享] 多i.MXRT主从系统**享一颗Flash启动的方法全讲解(上)

[复制链接]
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 200 天

    连续签到: 9 天

    [LV.7]常住居民III

    47

    主题

    6562

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    10381
    最后登录
    2025-7-31
    发表于 2025-6-5 15:29:27 | 显示全部楼层 |阅读模式
    有些客户应用会采用多颗 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),量产不便
    640 (2).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 版本管理问题
    640 (1).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 版本管理问题
    640.png

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-31 15:19 , Processed in 0.082234 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表