电子产业一站式赋能平台

PCB联盟网

搜索
查看: 28|回复: 0
收起左侧

i.MXRT也可以从主处理器加载程序启动!

[复制链接]

24

主题

24

帖子

-1881

积分

限制会员

积分
-1881
发表于 昨天 18:37 | 显示全部楼层 |阅读模式
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是主从系统中i.MXRT系列MCU从主处理器接收App数据包超时机制
在痞子衡旧文 《RT四位数Boot模式》 里的 1.2.1 Serial Downloader 模式、《RT三位数Boot模式》 里的 1.2.2 Serial Boot 模式里都介绍到了 i.MXRT 芯片内置 ROM 程序里支持与主机进行数据交互,而交互的通信协议均是 blhost 协议(这最早来自于飞思卡尔 Kinetis 系列 ROM ),有了这个功能,我们便可以直接将应用程序灌进 i.MXRT 内部 SRAM 去加载执行,这个功能在多处理器系统里(尤其是 i.MXRT 作为协处理器)大有用处。
最近有一个客户设计了高通 AR1 + 恩智浦 i.MXRT600 的主从系统,RT600 作为协处理器直接通过 SPI 接口从主处理器 AR1 接收应用程序 App 并加载到自身内部 SRAM 执行,这样硬件上便可省去 RT600 的专属非易失性存储器。客户已经将 blhost 协议代码集成进了 AR1 程序里,但在实际测试过程中发现有一定概率导致 RT600 程序加载失败,RT600 ROM 会返回 kStatus_AbortDataPhase(0x5A,0xA3),这是怎么回事?今天痞子衡就来聊聊这个话题:
一、i.MXRT与主机交互方法我们首先简单回顾下 i.MXRT 内置 ROM 程序配套的与主机交互方法,有如下三种。其中方法一是比较常用的,把 PC 当作主机,因为 UART/USB 接口可以直接从 PC 引出,这种方式一般集成在上位机 GUI 工具里(比如恩智浦官方的 SPT 以及痞子衡的 NXP-MCUBootUtility)。方法二本质上和方式一差不多,主机仍然是 PC,只不过通信接口是 SPI/I2C,因为无法直接从 PC 引出,需要有一个桥接板,恩智浦一共做了三种不同的桥接实现。方式三就是本文提及的客户所用到的方法,把主处理器当作主机,因为处理器接口丰富,所以不管哪种通信方式均可以直连。
因为方式一和方式二均可以直接使用恩智浦提供的配套工具链,因此 blhost 协议实现细节以及注意事项都被包在了工具链里面,客户使用起来基本不会遇到问题。而方式三需要客户自己移植实现 blhost 协议到主处理器代码里,这可能会遇到一些协议细节上的设计问题。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表