痞子衡嵌入式:MCUBootUtility v2.3发布,这次不再放过任何一款Flash
--
痞子衡的 NXP-MCUBootUtility 开源项目自2018年8月27日第一笔提交至今已有21个月,目前累计代码已近50000行。相信这个工具为大家开发 i.MXRT 项目提供了一些便利,听闻也有不少客户用这个工具做量产,这是痞子衡坚持维护这个项目的最大意义所在。
时光飞逝,距离上一个版本(v2.2)发布已有半年了,这一次痞子衡为大家带来了全新版本v2.3,新版本除了一些常规新i.MXRT型号支持以及bugfix之外,痞子衡特别花了大功夫彻底解决了NOR Flash支持问题,以后不管是什么Flash统统一网打尽。痞子衡是怎么做到的?且往下看。
一、v2.3更新记录
二、关于NOR Flash支持的更新
这次关于NOR Flash支持的更新一共有三条,每条都很关键。
> 特性: 支持512字节完整的FDCB配置作为FlexSPI NOR模型
> 改进: 提供保留源image文件里的FDCB头的选项设置
> 修复: 有时候配置flash时无法显示其Page/Sector/Block Size信息
2.1 正确显示Flash信息
先说bugfix,客户经常反映使用工具连接i.MXRT芯片配置Flash时,明明Flash模型选对了,但是在工具左下角Device Status窗口里看到的Page/Sector/Block Size全都是"- - - - - - - - ",导致底下无法继续烧写image文件,这个问题从v1.0版本开始就一直存在,并不是工具本身的问题,而是工具依赖的Flashloader机制问题,这次痞子衡用了一个workaround解决了它,这个workaround就是如果无法得到正确的Flash Size属性,就直接用默认的256Byte Page,4KB Sector,128KB Block,这样不影响后续操作。
2.2 保留原image的FDCB
再来说改进,我们知道工具从v1.1开始支持含i.MXRT启动头(包含FDCB)的image文件,因为恩智浦SDK里的XIP工程默认都会包含启动头,工具对于这个启动头里的FDCB处理(一键启动操作里)一直都是解析出来直接抛弃,因为工具会自动生成一个可用的FDCB来替代它,让我们在板子上实际操作看一下:
以MIMXRT685-EVK (Rev.E)板子为例,板子ISP模式设为USB ISP,然后插上USB OTG(J7),打开工具,使用默认Flash模型来配置连接(默认Keep FDCB没有选中),然后将工具自带的 \NXP-MCUBootUtility-2.3.0\apps\NXP_MIMXRT685-EVK_Rev.E\led_blinky_0x08001000_fdcb.srec 文件下载进去。
打开 led_blinky_0x08001000_fdcb.srec 文件与工具回读的内容进行比对,可以发现两者的FDCB是不完全相同的,这证明工具确实没有保留原image文件里的FDCB。
但是有时候这个FDCB头是客户精心设计的,他就想让工具保留这个FDCB头,对于v2.2以下版本只能在通用编程器界面下载bin文件,一键启动操作里不支持,现在v2.3版本里一键启动操作也可以支持了,就在Flash模型配置页面的【Keep FDCB】设置,勾选它,然后重新连接下载即可。
2.3 完整FDCB配置连接
最后重点聊一聊本次的最重大更新,完整FDCB配置连接。在Flash模型配置页面,以前都只能设置一些精简的option参数来配置Flash,这种方式仅能支持含SFDP表的Flash,并且很多FlexSPI属性配置都无法设(比如DQS信号来源等),全新v2.3版本增加了Complete_FDCB选项,选择这个,便可以进一步点击【Complete FDCB Configuration (512bytes)】按钮进到FDCB配置页面。
在FDCB配置页面,你可以尽情设置那些参数,这些参数都来源于恩智浦SDK包源文件里的 flexspi_mem_config_t 结构体,每个参数具体定义详见芯片手册的ROM章节,使用这个完整FDCB配置的朋友需要对FlexSPI外设有一定了解。
使用完整FDCB配置的最大好处是无论Flash是否含有SFDP,我们现在都可以正常访问配置了,比如我们可以用工具目录下预存的 \NXP-MCUBootUtility-2.3.0\gen\fdcb_file\cfg_fdcb_RTxxx_1bit_sdr_flashB.bin 来重新连接,事实上这个fdcb配置文件几乎适用所有挂在RT600 FlexSPI PortB上的Flash型号(假设Flash默认工作在1bit SDR模式),因为它配置的是1bit SDR模式来访问Flash。
至此,这次更新的主要特性便介绍完了。MCUBootUtility项目地址为 https://github.com/JayHeng/NXP-MCUBootUtility, 虽然当前版本(v2.3.0)功能已经非常完备,你还是可以在此基础上再添加自己想要的功能。如此神器,还不快快去下载试用?
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。
痞子衡嵌入式:MCUBootUtility v2.3发布,这次不再放过任何一款Flash的更多相关文章
- 痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程. 从外部串行NOR Flash启动问题是i.MXRT系列开发最 ...
- 痞子衡嵌入式:了解i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1060系列ROM中串行NOR Flash启动初始化流程优化点. 前段时间痞子衡写了一篇 <深入i.MXRT1050系 ...
- 痞子衡嵌入式:在i.MXRT1170上启动含DQS的Octal Flash可不严格设Dummy Cycle (以MT35XU512为例)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Octal或Hyper Flash上DQS信号与Dummy Cycle联系. 关于在 i.MXRT 上启动 NOR Flash 时如何设 ...
- 痞子衡嵌入式:导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP. i.MXRT系列MCU发布已两年多了,基于i.MXR ...
- 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(4) - 轮询Flash配置参数
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(4)之轮询Flash配置参数. 文接上篇 <超级下载算法(RT-UFL)开发笔记(3) - 统一FlexSP ...
- 痞子衡嵌入式:i.MXRT连接特殊Octal Flash时(OPI DTR模式下反转字节序)下载与启动注意事项(以MX25UM51245为例)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是OPI DTR模式下反转字节序的Octal Flash在i.MXRT下载与启动注意事项. 在恩智浦官方参考设计板 MIMXRT595-E ...
- 痞子衡嵌入式:MCUBootUtility v2.4发布,轻松更换Flashloader文件
-- 痞子衡维护的NXP-MCUBootUtility工具距离上一个版本(v2.3.1)发布过去2个月了,这一次痞子衡为大家带来了版本升级v2.4.0,这个版本主要有一个非常重要的更新需要跟大家特别说 ...
- 痞子衡嵌入式:MCUBootUtility v3.0发布,开始支持LPC, Kinetis啦
-- 痞子衡维护的NXP-MCUBootUtility工具距离上一个版本(v2.4.0)发布过去2个半月了,这一次痞子衡为大家带来了全新版本v3.0.0,从这个版本开始,NXP-MCUBootUtil ...
- 痞子衡嵌入式:MCUBootUtility v3.3发布,可配合SBL项目使用
-- 痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v3.0.0)发布过去4个多月了,期间痞子衡其实断断续续做个几个小版本更新,这一次痞子衡为大家带来了稳定版本v3.3.0,顺 ...
随机推荐
- [bzoj2088]P3505 [POI2010]TEL-Teleportation
洛谷 bzoj 用了分层图的思想 题意 给一张图,要求你再尽可能的多连边,使得从1到2至少要经过5条边 没啥复杂的公式,讲解都在注释里 #include<cstdio> #include& ...
- Java并发编程实战 03互斥锁 解决原子性问题
文章系列 Java并发编程实战 01并发编程的Bug源头 Java并发编程实战 02Java如何解决可见性和有序性问题 摘要 在上一篇文章02Java如何解决可见性和有序性问题当中,我们解决了可见性和 ...
- P2308 添加括号(dfs记录dp路径)
传送门 \(一看肯定是区间DP(因为和和合并石子很相似,都要加n-1次)\) \(转移方程为(其中he[i][j]是i到j的和)\) \[dp[i][j]=min(dp[i][j],dp[i][k]+ ...
- SQL SERVER 函数举例
需求说明 将字符串按照指定的分隔符进行分割,并将结果按照从后往前的顺序倒序排列,拼接后的结果用‘/’符连接.(也可以按照指定符号分割为多个列,修改最后一部分即可) 创建测试表及数据 /* 创建一张测试 ...
- 5.7.17版本mysqlbinlog实时拉取的二进制日志不完整的原因分析
问题描述: 同事使用mysqlbinlog工具的--read-from-remote-server --raw选项,从远程实例实时拉取二进制日志时,发现得到的二进制日志文件大小与远程实例上的源文件大小 ...
- CF-612D The Union of k-Segments 差分
D. The Union of k-Segments 题意 给出n个线段,以及一个数字k,让求出有哪些线段:线段上所有的点至少被覆盖了k次. 思路 假如忽略掉线段的左右端点范围,肯定是使用差分来维护每 ...
- python第七天--文件练
目的: 将不同人物说的话分别保存下来 以==========分段 代码: f=open('record.txt','r',encoding='UTF-8') zyf=[] smy=[] count=1 ...
- [hdu5375 Gray code]DP
题意:给一个二进制码,其中有一些位上为'?',对每个问号确定是'0'还是'1',最后以它对应的格雷码来取数,第i位为1则取第i个数,求取得的数的和的最大值. 思路:二进制码B转换成格雷码G的方法是,G ...
- iOS中的事件响应链、单例模式、工厂模式、观察者模式
学习内容 欢迎关注我的iOS学习总结--每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summary iOS中事件传递和相应机制 i ...
- 题解 洛谷P1562 【还是N皇后】
原题:洛谷P1562 这个题的原理和8皇后的原理是一模一样的,就是必须要用n个皇后把每一个行填满,同时满足每一列,每一行,每一条对角线只有一个棋子.但如果按照原来的方法暴打的话只有60分(优化亲测无效 ...