当前位置: 首页 > news >正文

《嵌入式 - 工具》J-link读写MCU内部Flash

1 J-Link简介

J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4, Cortex A5/A8/A9等内核芯片的仿真,是学习开发ARM最好最实用的开发工具。
J-link 软件包的工具很多,有J-Flash,J-Link Commander,J-Link GDB Server,J-Link RTT Viewer,J-Mem等小工具组成,本文讲解J-link读写MCU内部Flash的相关软件。

2 J-link下载与安装

下载地址:https://www.segger.cn/downloads/jlink/

J-link从V750以后,Windows就有64位的软件。

在这里插入图片描述

笔者这里下载的是JLink_Windows_x86_64_V754d.exe。下载后直接安装即可,这样就不再赘述了。

3 J-link读写MCU内部Flash

下面以STM32为例进行讲解,当然其他MCU也是试用的,只要有JTAG或SWD接口即可。

3.1 使用J-Flash下载程序

这里使用J-Flash将程序下载到MCU的内部Flash中。打开J-Flash,在安装完J-Link驱动就会有该软件。

首次使用就需要新建工程,如图所示。

在这里插入图片描述

然后就选择相应的芯片。

在这里插入图片描述

根据板子的芯片类型选择即可。

接下来将前面编译好的程序拖动进入J-Flash。J-Flash支持Hex、Bin等多种文件类型。笔者这里选择的是HEX文件类型。如果烧写的是Bin文件,还需要指定烧写的起始地址,因为Bin文件是不包含烧写地址的。

在这里插入图片描述

然后点击‘Connect’。

在这里插入图片描述

然后按F7或者点击‘Production Programming’即可下载。

在这里插入图片描述

值得注意的是,要想生成HEX文件,需要在Keil配置输出文件。

在这里插入图片描述

如果要想生成bin文件,需要在KEIL的User选项中,如下图添加这两项:
fromelf --bin --output=…/Output/STM32F103.bin …/Output/STM32F103.axf

在这里插入图片描述

编译完成后就会在Output目录下生成bin文件。

在这里插入图片描述

烧写成功之后,此时程序还没有运行,点击Target->Manual Programming->Start Application,或者按快捷键F9,程序才开始运行,或者按复位键也可以让程序运行。

在这里插入图片描述

如果想让每次下载完成后,程序自动运行,而不用复位。可以使用工程配置下的自动运行选项。打开Option->Project Setting,切换到Production选项,勾选Start Application,就可以让程序自动运行。

在这里插入图片描述

当然啦,也可下载任意bin文件到MCU的内部Flash中。另外也可手动进行烧写。

3.2 使用J-Flash读取Flash

打开J-Flash,和上一节一样,选择相应的芯片,然后点击‘Connect’。

选择Target->Manual Programming ->Read Back,一共有三个选项,用于读取不同的Flash地址范围。

在这里插入图片描述

 Selected sectors
被选择的扇区,可以在工程配置选项Project settings->Flash,查看哪些扇区被选择了。

在这里插入图片描述

 Entire chip
整个Flash区域,一般选择这个选项,读取整个Flash区域的程序

 Range
手动指定读取的Flash地址范围。

笔者这里选择Range,指定读取Flash的内容。

在这里插入图片描述

等待片刻即可读取完成。

在这里插入图片描述

选项File-> Save data file或者是Save data file as,保存读取的数据。

在这里插入图片描述

然后即可对比烧写的数据和读取数据是否一致,可以用作程序的校验。

3.3 使用J-Mem读取Flash

打开J-Mem,选择相应的芯片,然后点击‘OK’。

在这里插入图片描述

如果连接正常就可以看到MCU的4G内存空间的内容。

在这里插入图片描述

笔者这里使用的是STM32F1,是Cortex-M3的内核,Cortex-M3存储器映射结构如下图所示。

在这里插入图片描述

Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。根据图中描述,Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G大小的空间分成8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等,因此使用该内核的设计者必须按照这个进行各自芯片的存储器结构设计。

Cortex-M3存储器结构和STM32存储器结构:

在这里插入图片描述

图中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似,不同的是,STM32加入了很多实际的东西,如:Flash、SRAM等。可以看到Flash的地址是0x08000000。

这里就可以指定到Flash中,读取相应的内容。

在这里插入图片描述

当然也可以保存相应地址的内容。

点击右键,选择“Save”。

在这里插入图片描述

然后选择保存路径,设置其实地址。

在这里插入图片描述

即可保存任意数据。

http://www.lryc.cn/news/98512.html

相关文章:

  • 算法练习-LeetCode1071. Greatest Common Divisor of Strings
  • Nuget不小心用sudo下载后怎么在user里使用
  • 软件测试技能大赛环境搭建及系统部署报告
  • 浅谈现代通信技术
  • windows环境下adb 下载和配置,连接手机。
  • [STL]list使用介绍
  • k8s服务发现之第五弹--使用 Service 连接到应用
  • SAP ABAP 自定义表数据导入
  • 目标检测识别——大恒(DaHeng)相机操作与控制编程
  • 国标GB28181视频监控平台EasyGBS视频无法播放,抓包返回ICMP是什么原因?
  • 如何正确使用npm常用命令
  • 无人机影像配准并发布(共线方程)
  • openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符
  • C++OpenCV(7):图像形态学基础操作
  • Appium+python自动化(二十二)- 控件坐标获取(超详解)
  • Tensorflow benchmark 实操指南
  • 【linux】调试工具介绍
  • 2.获取DOM元素
  • flask中redirect、url_for、endpoint介绍
  • 《MySQL》第十二篇 数据类型
  • Python与OpenCV环境中,借助SIFT、单应性、KNN以及Ransac技术进行实现的图像拼接算法详细解析及应用
  • 苍穹外卖Day01项目日志
  • Netty学习(二)
  • ReactRouterv5在BrowserRouter和HashRouter模式下对location.state的支持
  • Aerotech系列文章(3)运动设置命令Motion Setup Commands
  • 线性神经网络——softmax 回归随笔【深度学习】【PyTorch】【d2l】
  • 【Nodejs】Node.js开发环境安装
  • 梅尔频谱(Mel spectrum)简介及Python实现
  • 【数据结构】实验六:队列
  • 【Linux线程】第一章||理解线程概念+创建一个线程(附代码加讲解)