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

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

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

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

一、简介

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

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)决定了,不可更改。

二、特性

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

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 项目开发过程所有疑难点及其解决方法,和大家分享下载算法设计背后的奥秘,后续文章敬请期待!

欢迎订阅

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

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

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

  1. 痞子衡嵌入式:借助Serial Plot软件测量i.MXRT系列FlexSPI驱动Flash页编程执行时间

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列FlexSPI驱动Flash页编程执行时间. 痞子衡之前写过一篇文章 <串行NOR Flash的页编程模式对于量产 ...

  2. 痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案. 对于以 i.MXRT 这类没有内部 NVM (Non-Volati ...

  3. 痞子衡嵌入式:超级下载算法RT-UFL v1.0发布,附J-Link下安装教程

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> 历时 8 个月终于迎来了 v1.0 版发布,因为是第一个正式版,为了保证质 ...

  4. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM内核下

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(1)之执行在不同CM内核下. 文接上篇 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计&g ...

  5. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记番外(1) - JLinkScript妙用

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记番外篇之JLinkScript妙用. JLinkScript 文件是配套 J-Link 调试器使用的脚本,这个脚本适 ...

  6. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在恩智浦MCUXpresso IDE下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  7. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在IAR EW for Arm下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  8. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Keil MDK下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  9. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

随机推荐

  1. 剑指Offer(四):重建二叉树

    一.前言 刷题平台:牛客网 二.题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6, ...

  2. OneWire应用 单总线温度传感器DS18系列

    OneWire DS18S20, DS18B20, DS1822 Temperature DS18B20 The DS18B20 digital thermometer provides 9-bit ...

  3. Python中list的合并

    ①差集 方法一: if __name__ == '__main__':     a_list = [{'a' : 1}, {'b' : 2}, {'c' : 3}, {'d' : 4}, {'e' : ...

  4. Code Forces 1030E

    题目大意: 给你n个数,你可以交换一个数的任意二进制位,问你可以选出多少区间经过操作后异或和是0. 思路分析: 根据题目,很容易知道,对于每个数,我们可以无视它的1在那些位置,只要关注它有几个1即可, ...

  5. 跟着动画学习 TCP 三次握手和四次挥手

    TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地 ...

  6. ISCSI共享

    共享存储 ISCSI共享 服务端 软件安装 Install epel-release: # yum install epel-release Install scsi-target-utils rpm ...

  7. pandas常用方法总结

    In [49]: frame2 Out[49]: year state pop debt one 2000 Ohio 1.5 NaN two 2001 Ohio 1.7 NaN three 2002 ...

  8. MATLAB利用solve函数解多元一次方程组

    matlab求解多元方程组示例: syms k1 k2 k3; [k1 k2 k3] = solve(-3-k3==6, 2-k1-k2+2*k3==11, 2*k1+k2-k3+1==6)或者用[k ...

  9. go读取键盘输入两种方式

    一种scanf var x intfmt.Println("input a int number")fmt.Scan(&x)fmt.Printf("读取到内容:% ...

  10. springboot配置定时任务并发执行

    @Configuration public class ScheduleConfig implements SchedulingConfigurer { @Override public void c ...