登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
园子
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
痞子衡嵌入式:在含多个i.MXRT的主从系统中共享一颗Flas ...
痞子衡嵌入式:在含多个i.MXRT的主从系统中共享一颗Flash启动的方法与实践(上篇)
[ 复制链接 ]
恙髡
前天 22:19
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是
多个i.MXRT共享一颗Flash启动的方法
。
有些特殊的客户应用会采用多颗 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),量产不便
复制代码
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 版本管理问题
复制代码
二、一种共享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 版本管理问题
复制代码
至此,多个i.MXRT共享一颗Flash启动的方法痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园、CSDN、微信公众号、知乎、与非网、电子技术应用AET、电子星球、51CTO 平台上。
微信搜索"
痞子衡嵌入式
"或者扫描下面二维码,就可以在手机上第一时间看了哦。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
如何优雅的使用RabbitMQ
分布式锁1 Java常用技术方案
浅谈我对DDD领域驱动设计的理解
游戏编程十年总结(下)
【前端性能】高性能滚动 scroll 及页面渲染优化
验证码对抗之路及现有验证机制介绍
从零开始入门 K8s | 手把手带你理解 etcd
中文写程序,何陋之有?
公司的中场
NHibernate之旅(2):第一个NHibernate程序
谈谈如何从本质上理解sql语句, 存储过程,ORM之间的联系和取舍。
Android 系统缺陷不完全点评
.net环境下跨进程、高频率读写数据
FFmpeg开发笔记(六十二)Windows给FFmpeg集成H.266编码器vvenc
第二个iPhone应用程序:“Say Hello”
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
Windows 8 Metro app开发初体验
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
代码
教程
安全
问答
签约作者
程序园优秀签约作者
发帖
恙髡
前天 22:19
关注
0
粉丝关注
5
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9998
喝岖
9998
森萌黠
9998
4
姨番单
9998
5
裒噎
9998
6
里豳朝
9998
7
愤血冒
9998
8
澹台忆然
9998
9
少屠
9998
10
蜴间囝
9998
查看更多