痞子衡嵌入式:JLink命令行以及JFlash对于下载算法的作用地址范围认定QN

news/2024/11/17 5:54:45/文章来源:https://www.cnblogs.com/westworldss/p/18415196

  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是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 , [ (.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对于下载算法的作用地址范围认定痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/797590.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓系统启动流程解析

安卓系统启动流程 目录1 init阶段1.1 FirstStage 1.2 SELinux Setup 1.3 SecondStage2 init.rc的配置 3 Zygote的启动3.1 app_process 3.2 Zygoteinit.java4 SystemServer 5 总结 6 引用光看分析文章还是不够的,还是要和实践结合。 1 init阶段 init 命令的入口是init/main.cpp…

安卓架构

安卓架构 目录1 Linux 内核层 2 硬件抽象层 HAL 3 Native C/C++ 库 && Android Runtime 4 Java Framework 层 5 System Apps 层1 Linux 内核层 Android 平台的基础是 Linux 内核。例如,ART 依靠 Linux 内核来执行底层功能。Linux 内核的安全机制为 Android 提供了相应…

陈柯烽的第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 建立一个属于自己的博客,介绍自己以及表达对课程的期望姓名-学号 陈柯烽-2022329301006软件技术基础第一次作业 一、自我介绍 1、基本信息我叫陈柯烽,来自浙江宁波,是自动化22级一班的学生,我…

chm 文件打开只显示目录,不显示内容

chm 文件打开只显示目录,不显示内容解决方法:解除锁定OK 了

【好用安全保密】不用插件,压缩js、html、css、code【一眼就会系列】【亲测有效】

​ 仅用离线版Notepad搞定。不用插件及辅助工具,有效保证了文件信息安全。 (一般发布版本都是无注释的-压缩文件和已编译文件。为了信息安全性,所有都是离线-区域网研发。) ​ 总结: 先把文本中注释去掉。 notepad++ 【编辑】-【空白字符操作】-【移除行首和行尾空格】 …

《密码系统设计》第二周

第二周预习报告 学习内容Head First C 嗨翻 C 语言 第8章 《Windows C/C++加密解密实战》第3,5章 第三章重点 3.4,3.5, 特别3.4.4 第五章重点 5.3.7 课程 mindmapAI 对学习内容的总结(1分) 要求让AI阅读学习内容并进行总结总结 1. Head First C 嗨翻 C 语言 第8章函数指针:…

活动召集丨实时多模态 AI Builder 团聚!RTE Open Day@S创上海,9.20/21

9 月 20~21 日,上海, S创上海 2024,看见不一样的创新和技术。这场年轻、多元、活力十足的科技盛会,将汇聚创业者、开发者、艺术家和众多无法定义边界的跨界者。RTE 开发者社区的 Builders 和 RTE Open Day 也将玩乐其中!「有一群人在一起,就很好」。 来到第四期的 RTE O…

问题1:pytorch版本不同,文件运行速度不同

好像新版本更快一点哦,为什么呢? 版本1: PyTorch version: 1.12.1Is CUDA available? TrueCUDA version: 11.3cuDNN version: 8302版本2: PyTorch version: 2.3.1+cu121Is CUDA available? TrueCUDA version: 12.1cuDNN version: 8907

踩坑日志2:dataloader的num_workers问题

当我想用dataloader多开子进程加快图片加载速度时,发现报有关进程的错误:RuntimeError: An attempt has been made to start a new process before thecurrent process has finished its bootstrapping phase.This probably means that you are not using fork to start your…

深度!程序员生涯的垃圾时间(上)

深度好文!程序员的垃圾时间! 垃圾时间(Garbage time)是体育赛事中的术语,指一场比赛中双方分差过大,胜负已定。此时,比赛剩余的时间不再对最终结果产生决定性影响,剩下的时间就被称为垃圾时间。将这个词用在浩浩荡荡的技术革命、汹涌向前的历史车轮上,再合适不过。时代…

基于Java+Springboot+Vue开发的民宿预订管理系统

项目简介该项目是基于Java+Springboot+Vue开发的民宿预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的民宿预订管理系统项目,大学生可以在实践中学…

基于Java+Springboot+Vue开发的电影订票管理系统

项目简介该项目是基于Java+Springboot+Vue开发的电影订票管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的电影订票管理系统项目,大学生可以在实践中学…