痞子衡嵌入式:RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计

你们好,我是痞子衡,是正经搞技术的痞子。今天给你们带来的是痞子衡的开源项目 RT-UFL。git

痞子衡在近两年多的i.MXRT客户项目支持过程当中,遇到的一个至关高频的问题就是制做i.MXRT下载算法。咱们知道i.MXRT没有内置非易失性存储器,通常都要外挂一块存储器用于加载启动,最经常使用的是经过FlexSPI外设外挂串行NOR Flash,挂了NOR Flash咱们既能够离线启动,也能够在线调试,而在线调试就必然离不开下载算法。github

由于是外挂Flash,因此下载算法须要根据Flash的链接以及型号而定,这就须要根据客户板子实际状况来制做匹配的下载算法。下载算法对于了解其原理的人来讲,制做一个并不难,可是对于不了解的人来讲却又不容易。从咱们i.MXRT原厂技术支持角度,重复的工做咱们又不太想一次次去作,基于此,痞子衡发起了一个开源项目,命名为 RT-UFL,就是设计一个超级下载算法。这个项目目前还处于研发阶段,若是你们有更好的建议和想法,欢迎在文章下面留言。算法

项目地址:https://github.com/JayHeng/RT-UFL微信

1、简介

RT-UFL 是一个适用全平台i.MXRT的通用Flash下载算法项目,项目的最终目标是作到一个.FLM文件适用全部的i.MXRT开发板,且不论其链接的哪款Flash型号。.net

RT-UFL 主要是为了解决以下七大痛点:设计

1. 每个i.MXRT型号都须要一个单独的下载算法文件.
2. 同一个i.MXRT型号搭配不一样属性的Flash也须要不一样的算法文件.
3. 同一个i.MXRT型号搭配相同特性的Flash但Flash出厂设置不一样(有无SFDP、QE默认状态灯)也须要不一样的算法文件.
4. Flash链接到i.MXRT不一样的FlexSPI引脚上也可能须要不一样的算法文件.
5. 若是下载算法公共设计部分有不可忽视的缺陷,须要总体更新所有i.MXRT型号对应的下载算法.
6. 对于下载算法的发布,没有一个统一的版本管理.
7. 在量产过程当中,若是更换了Flash型号,则须要对应更换算法文件,对于工厂流程来讲有点麻烦.

RT-UFL 从设计上分为三层:调试

  • 最底层是Driver层:即Low-level驱动,对于i.MXRT来讲,就是FlexSPI模块的驱动。
  • 中间是Adapter层:这一层是最核心的,它实现了全i.MXRT平台、全Flash型号的自适应支持。
  • 最顶层是API层:这属于下载算法模板,其实由集成开发环境(Keil、JLink)决定了,不可更改。

2、特性

为了使 RT-UFL 成为一个超级下载算法,它至少要包含以下八个特性:code

1. 能够跑在全部i.MXRT型号下.
2. 能够支持能用做i.MXRT可启动设备的全部类型Flash.
3. 能够擦写连在i.MXRT可启动FleXSPI引脚上的Flash.
4. 能够自动识别链接的Flash类型(QuadSPI, Octal-SPI, Hyperbus).
5. 能够自动检测Flash中有无SFDP及其版本.
6. 能够支持不含SFDP表的Flash.
7. 能够自动识别Flash的默认QE状态并开启QE.
8. 能够输出一些有效的Flash信息以便后续启动.

痞子衡会记录 RT-UFL 项目开发过程全部疑难点及其解决方法,和你们分享下载算法设计背后的奥秘,后续文章敬请期待!blog

欢迎订阅

文章会同时发布到个人 博客园主页CSDN主页知乎主页微信公众号 平台上。开发

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就能够在手机上第一时间看了哦。

相关文章
相关标签/搜索