大家好,我是痞子衡,是正经搞技术的痞子。今天给大家带来的是痞子衡的开源项目 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. 【题解】[SDOI2016]征途

    Link 题目大意:给定序列,将它划分为\(m\)段使得方差最小,输出\(s^2*m^2\)(一个整数). \(\text{Solution:}\) 这题我通过题解中的大佬博客学到了一般化方差柿子的写 ...

  2. python自动化实现验证码登录过程

    (自动化实现验证码登录,这里内容是入坑后,整合了几个文档的内容)|以下模块是使用时需要用到的首先:安装pillow库,它的作用是对图片进行简单的处理,在pytharm中使用pip install pi ...

  3. GIT 保存日志并建立自己的分支

    以下是我个人在工作中对git的愚见全是大白话说明.也是我踩坑记录吧,防止下次再次踩坑. 再已有的dev(开发分支)新建自己的分支 (featuer)在更新到gitlab 仓库中的过程. 首先要有大致的 ...

  4. JAVA基础 随机点名器案例

    1.1      案例介绍 随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息. 此案例在我们昨天课程学习中,已经介绍,现在我们要做的是对原有的案例进行升级,使用新的技术来实现. 我 ...

  5. 多测师讲解python _练习题002_高级讲师肖sir

    # 1.求出1/1+1/3+1/5--+1/99的和 # 2.用循环语句,计算2-10之间整数的循环相乘的值. # 3.用for循环打印九九乘法表 # 4.求每个字符串中字符出现的个数如:hellow ...

  6. 发布MeteoInfo 1.2.8

    增加了对SYNOP数据的支持(功能从C#版移植过来).数据可以从这里下载:http://weather.cod.edu/digatmos/syn/SYNOP数据搞气象的人应该多少知道些,类似MICAP ...

  7. 【C++入门学习笔记】函数和对象!你需要这一篇文章入门C++!

    一.本篇要学习的内容和知识结构概览   二.知识点逐条分析 1. 混合型语言 C++源文件的文件扩展名为.cpp, 也就是c plus plus的简写, 在该文件里有且只能有一个名为main的主函数, ...

  8. gorm学习地址

    1 gorm curd指南 2 gorm入门指南

  9. selenium基础--登录简单的网站

    import time from selenium import webdriver from lxml import etree from selenium.webdriver import Act ...

  10. oracle统计同一字段0和1

    SELECT 班级表.班级编号,班级表.班级名称,SUM(DECODE(性别, '1', 1)) 女生人数,SUM(DECODE(性别, '0', 1)) 男生人数FROM 学生表, 班级表WHERE ...