痞子衡嵌入式:JLink命令行以及JFlash对于下载算法的作用地址范围认定
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是JLink命令行以及JFlash对于下载算法的作用地址范围认定。
最近痞子衡在给一个 RT1170 客户定制一个 Infineon MirrorBit 类型 64MB Flash 的 SEGGER 下载算法,做完之后在 JFlash 下测试小数据下载没有问题,但是大数据下载就报了地址范围不适用的错误,所以今天我们就来深挖一下自制下载算法时作用地址设定问题:
- Note: 本文所测试 JLink 版本为 V7.94f
一、地址范围设定
关于 SEGGER 下载算法制作,痞子衡之前写过两篇文章:《串行NOR Flash下载算法(MDK工具篇) 一文讲得是如何制作 FLM 算法文件(MDK 算法与 SEGGER 算法是通用的),《串行NOR Flash下载算法(J-Link工具篇)》 一文讲得是配套 XML 文件写法。
XML 文件里的 BaseAddr 和 MaxSize 参数设定的地址范围主要用于选定适用的 FLM 算法文件(即 Loader),而生成 FLM 算法文件源工程里的 FlashDev.c 文件里的 FLASH_BASE_ADDRESS 和 FLASH_BASE_SIZE 参数则是算法在运行过程中用于判断的有效下载数据地址范围。
- Note:关于 XML 添加方法详见痞子衡旧文 《从JLink V7.62开始优化了手动增加新MCU型号支持方法》
二、测试地址范围
有了以上理论基础,现在我们测试一下地址范围设定对下载的影响。我们基于恩智浦 MIMXRT1170-EVKB 评估板,选用一颗 64MB NOR Flash 连在 FlexSPI1 外设上(AHB 映射起始地址为 0x3000_0000,FLM 下载算法里 FLASH_BASE_ADDRESS 固定设为 0x3000_0000)。
2.1 JLink命令行下测试
先在 JLink 命令行下用 LoadFile 命令做测试,该命令支持所有主流格式的程序文件。为了方便设定下载起始地址,我们就用 .bin 格式做测试。
命令格式 LoadFile <FileName>, [<Addr> (.bin only)].
命令解释 Load data file into target memory. Supported ext.: *.bin, *.mot, *.hex, *.srec, *.elf, *.out, *.axf
如果 XML, FLM, LoadFile 地址范围都设定无误,命令执行时后台会弹出下载进度条窗口,表明 FLM 算法被成功调用且在正常擦写 Flash。
现在我们尝试设定不同地址范围(下表里设定的非 0x3000_0000 - 0x33FF_FFFF 有效 64MB Flash 空间范围之外的测试地址需要是真正的无效存储空间地址,不能是 MCU 片内的 SRAM 映射地址),做更多测试,结果如下:
XML范围设定 | FLM范围设定 | LoadFile地址 | 测试结果 |
---|---|---|---|
0x3000_0000 - 0x33FF_FFFF | 设定范围内 | 正常下载 | |
设定范围外 | Writing target memory failed. | ||
0x4000_0000 - 0x43FF_FFFF | 0x3000_0000 - 0x33FF_FFFF | XML范围内 | Writing target memory failed. |
FLM范围内 | Writing target memory failed. | ||
0x3000_0000 - 0x37FF_FFFF | 0x3000_0000 - 0x33FF_FFFF | XML且FLM范围内 | 正常下载 |
XML范围内但FLM范围外 | Writing target memory failed. | ||
0x3000_0000 - 0x33FF_FFFF | 0x3000_0000 - 0x31FF_FFFF | XML且FLM范围内 | 正常下载 |
XML范围内但FLM范围外 | Writing target memory failed. | ||
0x3000_0000 - 0x31FF_FFFF | 0x3000_0000 - 0x33FF_FFFF | XML且FLM范围内 | 正常下载 |
XML范围外但FLM范围内 | Writing target memory failed. | ||
0x3000_0000 - 0x37FF_FFFF | 0x3000_0000 - 0x33FF_FFFF内 | 正常下载 | |
0x3400_0000 - 0x37FF_FFFF内 | 实际下载到Addr-0x4000000处 |
上述测试结果表明,仅当程序下载地址在 XML 和 FLM 共同指向的范围内,且属于有效的 Flash 空间时,下载才正常进行。此外,表格最后一项测试表明,即使超出实际连接的 Flash 最大空间,下载也没有报错,这是因为 MCU 发送给 Flash 操作命令地址溢出了,地址溢出部分被 Flash 自动忽略了。
- Note:要实现表格最后一项测试效果,在制作 FLM 下载算法时,配置 MCU 存储接口外设(对于 i.MXRT1170 来说是 FlexSPI)的 AHB 空间必须与 FlashDev.c 里设定一致,且这个空间不超过芯片系统分配给外设的最大 AHB 空间。
2.2 JFlash下测试
再在 JFlash 界面下做测试,打开软件,创建工程时 Target Device 需要设定为 XML 文件 ChipInfo 中 Name,这样可指定使用自制 FLM 文件。这里也可以看到界面里 Flash banks 自动就识别到了 XML 所设定的地址范围。
- Note1:JFlash 认定的起始地址一定是 XML 中 BaseAddr。
- Note2:当 XML 中 BaseAddr 与 FLM 中 FLASH_BASE_ADDRESS 一致时,JFlash 认定的空间长度由 XML 中 MaxSize 和 FLM 中 FLASH_BASE_SIZE 共同决定,两者取其小。
- Note3:当 XML 中 BaseAddr 与 FLM 中 FLASH_BASE_ADDRESS 不一致时,JFlash 认定的空间长度由 XML 中 MaxSize 决定。
JFlash 下测试结果本质上其实和 JLink 命令下行为一致,我们可以理解为 JFlash 底层调用得就是 JLink 命令实现,只不过界面里做了更多检查与附加功能。且上述 Note 表明 JFlash 在加载算法时对地址空间长度做了预处理,所以当程序下载地址超出 JFlash 认定范围时,JFlash 会弹框提示:
至此,JLink命令行以及JFlash对于下载算法的作用地址范围认定痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。
痞子衡嵌入式:JLink命令行以及JFlash对于下载算法的作用地址范围认定的更多相关文章
- 痞子衡嵌入式:串行NOR Flash的页编程模式对于量产时间的影响
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是串行NOR Flash的页编程模式对于量产时间的影响. 任何嵌入式产品最终都绕不开量产效率话题,尤其是对于主控是非内置 Flash 型 ...
- 痞子衡嵌入式:一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事(SR寄存器BP[x:0]位)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事. 痞子衡最近在支持一个 i.MXRT1170 欧 ...
- 痞子衡嵌入式:串行NOR Flash的Continuous read模式下软复位后i.MXRT无法启动问题解决方案之RESET#
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT上使能NOR Flash的Continuous read模式在软复位后无法正常启动问题的解决经验. 前一篇文章 <在i ...
- 痞子衡嵌入式:串行NAND Flash的两大特性导致其在i.MXRT FlexSPI下无法XiP
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串行NAND Flash的两大特性导致其在i.MXRT FlexSPI下无法XiP. 在嵌入式世界里,当我们提起XiP设备(支持代码原地 ...
- 痞子衡嵌入式:串行EEPROM接口事实标准及SPI EEPROM简介
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是EEPROM接口标准及SPI EEPROM. 痞子衡之前写过一篇文章 <SLC Parallel NOR简介>,介绍过并行N ...
- 痞子衡嵌入式:串行NOR Flash的DQS信号功能简介
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是串行NOR Flash的DQS信号功能. 串行NOR Flash在嵌入式里的应用相当广泛,既可用作数据存储也可以用作代码(XiP)存储, ...
- 痞子衡嵌入式:解锁i.MXRTxxx上FlexSPI模块自带的地址重映射(Remap)功能
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT三位数系列隐藏的FlexSPI Remap功能. 前段时间痞子衡写了一篇文章 <利用i.MXRT1060,1010上新 ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash X ...
- 痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项. 痞子衡前段时间写过一篇小文<为i.MXRT设计更 ...
- 痞子衡嵌入式:导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP. i.MXRT系列MCU发布已两年多了,基于i.MXR ...
随机推荐
- 渐变边框文字效果?CSS 轻松拿捏!
今天,有个群友问了我这么一个问题,如果不想切图,是否有办法实现带渐变边框的字体效果?如下所示: 本文,就将尝试一下,在 CSS 中,我们可以如何尽可能的实现这种渐变边框字体效果. 元素叠加 首先,比较 ...
- P10244 String Minimization 题解
P10244 String Minimization 题意 给你四个长度为 \(n\) 的字符串,分别是 \(abcd\). 你可以选择一个 \(i\) 然后交换 \(a[i]\) 和 \(c[i]\ ...
- DASCTF 2023六月挑战赛|二进制专项 PWN (下)
DASCTF 2023六月挑战赛|二进制专项 PWN (下) 1.can_you_find_me 检查保护 意料之中 64位ida逆向 只有add,和del功能不能show 先看add吧 最多申请10 ...
- holiday week2
本周进度总结: 本周完成了小学期内容 LOL打了近20把,rank几乎不变 平均每天用6h+在编程学习上,更进一步了解了C++,我相信我有更进一步的编程水平,可以编写更多的东西 JAVA还没开始学 别 ...
- 同时使用mp和mybatis,我的type-aliases-package失效了
mybatis: #mapper配置文件 mapper-locations: classpath:mapper/*.xml type-aliases-package: com.sky.entity c ...
- app专项测试:app弱网测试(网络测试流程)
app专项测试:app弱网测试(网络测试流程) 一.网络测试的一般流程 step1:首先要考虑网络正常的情况 ① 各个模块的功能正常可用 ② 页面元素/数据显示正常 step2:其次要考虑无网络的情况 ...
- canvas实现截图功能
开篇 最近在做一个图片截图的功能. 因为工作时间很紧张, 当时是使用的是一个截图插件. 周末两天无所事事,来写一个简单版本的截图功能. 因为写的比较简单,如果写的不好,求大佬轻一点喷 读取图片并获取图 ...
- 对比python学julia(第二章)--(第三节)玫瑰曲线—数学之美
3.1.问题描述 在数学世界中有一些美丽的曲线图形,有螺旋线.摆线.双纽线.蔓叶线且.心脏线.渐开线.玫瑰曲线.蝴蝶曲线-- 这些形状各异.简有繁别的数学曲线图形为看似枯燥的数学公式披上精彩纷呈的美丽 ...
- 对比python学julia(第一章)--(第一节)万事开头也不难
自1989年被创立以后,历经30多年的发展,Python已经如日中天,在运维.大数据.云计算.web.科学计算上混的风生水起,并且于2020.2021年蝉联TIOBE年度编程语言首座.以至于,如今不会 ...
- 1、Git简介
1.1.概述 Git 是一个开源免费的分布式版本控制系统,用于快速高效地管理各种小型或大型项目的代码. Git 不仅容易学习.占用空间小,而且性能快如闪电. Git 具有廉价的本地分支.方便的暂存区域 ...