Jlink使用技巧之烧写SPI Flash存储芯片

2023-10-26

前言

大多数玩单片机的人都知道Jlink可以烧写Hex文件,作为ARM仿真调试器,但是知道能烧写SPI Flash的人应该不多,本篇文章将介绍如何使用JLink来烧写或者读取SPI Flash存储器,JLink软件包含的工具中,有一个是JFlashSPI工具,这就是一个烧写和读取SPI存储器的工具了。

准备

  • 要烧写程序或读取程序的的Flash芯片:SPI协议的Flash都可以,如W25Q128。
  • JFlashSPI软件工具:在Jlink系列软件的安装目录下
  • JLink V9仿真器
  • 要烧写的文件:如GBK字库文件,UNIGBK.BIN

硬件连接

Jlink内部集成了SPI协议,部分接口是作为SPI复用功能的,具体硬件连接,如下图所示:

对于20P的标准JTAG接口

引脚编号 名称 输入输出 和SPI Flash的连接
5 DI 输入 连接SPI Flash的MOSI引脚
7 nCS 输出 连接SPI Flash的CS引脚
9 CLK 输出 连接SPI Flash的CLK引脚
13 DO 输出 连接SPI Flash的MISO引脚

对于10P的JTAG接口

引脚编号 名称 输入输出 和SPI Flash的连接
2 nCS 输出 连接SPI Flash的CS引脚
4 CLK 输出 连接SPI Flash的CLK引脚
6 DO 输出 连接SPI Flash的MISO引脚
8 DI 输入 连接SPI Flash的MOSI引脚

这里要注意的一点,正版的Jlink仿真器1脚是输入引脚,是外部提供参考电平的,但由于现在大部分的JLink仿真器都是学习(dao)版的,1脚不是输入,而是3.3v的输出,所以可以直接用这个管教来给SPI Flash供电。

1.打开

有两个工具,一个是JFlashSPI.exe是图形化工具,一个JFlashSPI_CL.exe是命令行操作,这里重点介绍图形化工具JFlashSPI,打开Jlink软件的安装目录,双击打开JFlashSPI,界面和之前介绍的JFlash差不太多。

2.连接SPI Flash芯片

点击Target->Connect,如果连接成功的话,会在底部输出连接信息,会显示Flash芯片的型号,生产厂家,Flash ID等等信息。

就像我这个Flash芯片,丝印明明写的华邦Winbond W25Q128,这里读取的却是飞索Spansion S25FL128K,难道是盗版芯片?

3.打开程序文件

点击File->Open data file,打开要烧写的字库文件,支持多种格式的文件,由于是选择的Bin文件,没有起始地址,所以手动输入烧写的起始地址,这里填写0就可以了。关于烧写文件的格式说明,可以查看之前的一篇文章:BIN、HEX、AXF、ELF文件格式有什么区别

4.下载

点击Target->Auto下载程序到Flash芯片内。

下载完成后,会在底部窗口显示下载成功的信息,可以看出烧写速度还是比较快的,170KB的字库文件,用时不到1秒钟。

5.程序文件的读取

和读写单片机程序一样,也是支持读取SPI Flash芯片程序的,为了尊重他人的劳动成果,这里的介绍仅供学习使用,不可用于商业破解目的。

可以看出,和下载相比,读写速度明显要慢得多,因为是读取的整个16M的存储区,所以时间会相对长一些。

6.程序文件的保存

程序文件读取完成后,可选择将文件保存到本地目录,保存格式可根据需要选择。

7.命令行工具的使用

JFlashSPI_CL.exe是JFlashSPI的命令行工具,通过输入命令实现读写Flash,这里简单介绍一下烧写功能。
在终端运行:./JFlashSPI_CL.exe
可看到一些帮助信息,主要是指令的说明:

可以看到-connect连接,-open打开烧写文件,-auto烧写,如果是烧写,这3个命令就够了,首先把要烧写的文件复制到JFlashSPI_CL.exe同级目录,输入指令:

./JFlashSPI_CL.exe -open UNIGBK.BIN 0 -connect -auto

可以看到,烧写成功

为了方便快捷,我们可以将以上命令写成一个批处理命令,直接双击运行即可,
新建download.bat文件,并以记事本方式打开,输入以下内容

JFlashSPI_CL.exe -open UNIGBK.BIN 0 -connect -auto
echo 程序烧写完成!
pause

然后将这个bat文件和要烧写的字库文件放到一个文件夹下。双击直接运行就可以直接烧写,是不是方便了许多呢?

支持的芯片列表

支持的Flash芯片多达百种,如Atmel的AT25系列,国产兆易的GD25Q系列等等,基本上常见的SPI协议Flash芯片都支持,具体的芯片列表可查看SEGGER官方网址:List of supported SPI flashes

速度说明

对于不同型号的Flash芯片,Jlink烧写器最大的写入速度也不同,具体可参考:

Flash device Programming speed1 Flash device Programming speed1
ISSI IS25LP128 500 KB/s Micron N25Q128A 270 KB/s
ISSI IS25LD040 100 KB/s Micron M25P10 160 KB/s
ISSI IS25LQ080 340 KB/s Micron M25PX16 230 KB/s
ISSI IS25CD010 100 KB/s Micron M45PE10 230 KB/s
ISSI IS25CQ032 190 KB/s Micron M25PE4 215 KB/s
Macronix MX25L3235E 285 KB/s Spansion S25FL128 410 KB/s
Macronix MX66L1G45G 430 KB/s Spansion S25FL116K 265 KB/s
Macronix MX66L51235F 315 KB/s Winbond W25Q128FV 340 KB/s

参考资料:

J-Flash SPI

JLink软件的下载

JLink_Windows_V614b软件下载链接:JLink_Windows_V614b.exe


Jlink使用技巧系列文章:


欢迎大家关注我的个人博客

或微信扫码关注我的公众号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jlink使用技巧之烧写SPI Flash存储芯片 的相关文章

  • 如何检测浏览器是否支持flash?

    我的网站只有两个版本 一种是针对支持 Flash 的设计 如桌面设备 另一种是针对移动设备的设计 我只是想知道我是否可以检测到 如果是真的 支持 他们将保持相同的网站假设是http mywebsite com但链接会显示http myweb
  • 将过滤器应用于 AS3 中的所有内容

    我正在尝试在 AS3 Flex SDK 中添加过滤器 我可以为任何一个对象添加一个过滤器 但我想将过滤器应用到一切那是某个对象的子对象 假设弹出一个暂停窗口 暂停窗口下方的所有内容都会变得模糊 将过滤器应用于每个单独的对象 例如 迭代列表
  • 使用flash动作脚本开发网络游戏

    简而言之 如果我想使用 Flash 技术开发在线游戏 你能告诉我一些很好的学习资源吗 包括3D游戏 您可以从新发布的开始Flash平台游戏技术中心 http www adobe com devnet games 在 Adob e Devne
  • 在 Android Flash 10.1 上打开软件键盘

    我正在开发在浏览器中运行的移动 Flash 应用程序 不是 AIR 应用程序 根据 Adob e 的说法 Flash Player 10 1 提供支持 使用本机设备虚拟键盘 如果没有物理支持 则使用 TextField 支持 检测到键盘 一
  • 为什么 ActionScript 中没有记录 drawRoundRectComplex() ?

    在研究actionscript 3的图形类时 我遇到了未记录的drawRoundRectComplex 方法 它是一个变种drawRoundRect 但有 8 个参数 最后四个是每个角的直径 x y 宽度 高度 左上 右上 左下 右下 ex
  • Flash AS3 - 将多个对象拖放到一个目标?

    标题或多或少是不言自明的 我一直在学习许多不同的教程 而且说实话 我对 AS3 不太擅长 上图显示了我的目标 无论如何 我在我看到的大多数在线教程中注意到 拖放教程要么基于一个对象到一个目标 要么基于多个对象到多个目标 所以我想知道是否有人
  • 在 Flash AS3 中捕获未处理的 IOErrorEvent

    错误 2044 未处理的 IOErrorEvent text 错误 2036 从不加载 完全的 这就是我每次尝试使用加载器加载不存在的图像时看到的情况 我正在获取 URL 列表 但无法验证它们是否指向任何有用的内容 每当遇到 404 时 它
  • 如何调整外部 SWF 的大小以适合容器?

    我想要完成的是调整外部 SWF 的大小 使其适合在舞台上作为容器呈现的显示对象 现在它显示在容器外部 重要提示 我不希望外部 SWF 占据整个舞台 我在舞台上为它准备了一个特殊的地方 那个容器 public function loaderC
  • 当给定闪光角度和速度时,计算物体的轨迹

    我正在尝试从大炮中发射炮弹并使其遵循现实的路径 射击角度根据大炮的方向而变化 自动定向到鼠标指针 所以我想弄清楚的是 当给定角度和设定速度时 如何沿着抛物线路径移动炮弹 我读到 这可以在没有复杂的三角学的情况下完成 在高中时从未听过 并且可
  • “找不到 jar 文件系统提供程序”尝试使用 jdeps 和 jlink 创建收缩 Java 映像来运行 Minecraft

    我正在尝试使用以下命令创建一个收缩 Java 映像来运行 Minecraft 1 20 1 客户端jdeps and jlink 即只需要运行 Minecraft 所需的最少 Java 模块 但是我遇到了错误 我希望得到一些指导 这就是我所
  • 如何在 AS3 中设置 swf 的宽度和高度?

    如何在 AS3 中设置 swf 的宽度和高度 到目前为止 这是我的代码 package import flash display Sprite public class Game extends Sprite 现在 加载时它处于任意默认大小
  • 如何向 Flash Player 10.1 发出启动 flv 或 swf 的意图?

    我有一堆FLV视频文件存储在媒体服务器 我正在尝试让它们在 Flash 播放器中启动 一直在四处寻找但没有找到太多帮助 我已将 flv 文件下载到临时存储中 并尝试使用intent 这就是我的代码的样子 来自我在网上看到的 try URL
  • 推荐一个适用于 Flex 和 AIR 的 HTML 友好的 RichTextEditor? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 流媒体视频文件?

    我需要流式传输 flv 文件 流媒体应该看起来像直播 我应该有一种方法可以更改目标文件 抱歉我的英语不好 如果 流式传输 的意思是 显示 Flash 视频剪辑 则 flv streaming 并不是真正的流式传输 而是正常的文件传输 即使文
  • Flex 与 ActionScript

    我正在尝试构建 实现一个 Flash 视频播放器来播放视频 我研究了 Flex 并仅使用 VideoElement 构建了一个基本应用程序 它在没有静态链接库的情况下编译为 41k 在链接库时编译为 300k 我生成了报告 但仍然不确定为什
  • 使用 Flash 在本地托管游戏?

    我只是找不到合适的谷歌搜索词 是否可以使用 Flash 或 Flash 兼容服务 来允许游戏中的玩家通过 Web 浏览器托管自己的游戏 使用自己的带宽 在某种程度上 从他们的计算机运行他们自己的游戏服务器 对于 Flash 浏览器内游戏 但
  • Flash 未在调试播放器中显示错误/堆栈跟踪(firefox/chrome/whatnot)

    我正在尝试调试在线默默地失败的应用程序 我 100 确定我正在运行 Flash 调试播放器 为了确保我不会丢失它 我故意抛出一个错误 但 Flash 在浏览器中没有显示任何 stracktrace 我快要失去它了 有什么线索吗 我正在 ch
  • 为什么反编译swf文件时jpexs工具不起作用?

    有人知道如何反编译 SWF 文件吗 我尝试过 JPEXS 和 Sothink SWF Decompiler 但不起作用 我把这个 swf在这个link https drive google com file d 1ehHprPOqR0QnR
  • Flash 图表和图形的最佳解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道融合图表 http www fusioncharts com 还有其他好的解决方案或 API 用

随机推荐

  • Java内部类

    内部类 说简单点就是一个类里面还可以定义一个类 内部类可以定义在别一个类的任意位置上 包括成员位置和局部位置 私有属性 private在本类中有效 1 内部类可以直接访问外部类中的成员 私有和非私有的都可以 2 外部类如果想要访问内部类 必
  • Linux文件创建及查看方法

    1 文件创建 vi vim 原来有文件就打开 没有就创建再打开 回车后进入命令模式 w w保存 q退出 强制 这三个可以自由组合 记住前面有冒号哦 n光标移至第n行 dd 删一行 xx 删一个 光标移至行末 G光标移至文末 查找某个字符串
  • RabbitMQ 启动报错 Failed to check/redeclare auto-delete queue(s) access to vhost '/' refused for user

    RabbitMQ 启动报错 Failed to check redeclare auto delete queue s access to vhost refused for user rabbit 今天项目在新的服务器上启动 所有的配置文
  • element-ui table 表格组件实现可拖拽效果(行、列)

    前言 最近需要实现table表格 行拖拽的功能 参照了一些优秀文章 实现了一下 参考文章 Vue进阶 幺零五 elementUI 实现表格行列拖拽 实现思路 主要是借助sortablejs 关于sortablejs我简单写了篇文章 有兴趣的
  • IDEA 最牛配置,写代码太爽了

    IDEA 最牛配置 写代码太爽了
  • qt:同一份代码在vs2022 QT VS TOOL扩展和 QtCreator下运行结果不同

    公司要求用的是QtCreator 但是谁能离得开安装了Resharper的VS呢 我就在VS下装了QT的环境 开始编写调试代码 其实是两个软件都在用的 可能是没找到方法 VS下的资源文件显示不是很方便 我就用QtCreator加资源 到后面
  • 远程RDP、远控手机、双屏控双屏,向日葵“瓜子会员”妥妥的真香

    最近儿有点 小感冒 没去公司在家歇着 居家归居家 砖还是要搬的 突然来活了也得及时的处理掉 这种时候我一般用远程桌面的方式 之前就一直用的向日葵远程控制 为啥用远程桌面呢 主要原因是家里电脑性能不如公司的工作站 而且缺少很多工作必须的专业软
  • godaddy服务器内网站转移,2021年Godaddy最新域名转出教程

    因为之前Goddady登录界面修改的原因 导致部分新手不知道Godaddy域名转出步骤 笔者特此做了一个简单的教程 供大家学习和参考 第一步 打开Godaddy官网 登录Godaddy账户 然后点击页面右侧的My Account 进入账号管
  • 实战HttpClient 接口调用以及获取token 设置请求头

    简介 HTTP 协议可能是现在 Internet 上使用得最多 最重要的协议了 越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源 虽然在 JDK 的 java net 包中已经提供了访问 HTTP 协议的基本功能 但
  • CrashImmuneDecoder类关系分析(HardwareVideoDecodeSDK)

    关于此项目github地址 https github com shyluo CrashImmuneDecoder 为了以后快速的熟悉老罗大神的视频硬解SdK 画了以下类关系图 画的不好 请见谅
  • VS2019+msys2编译ffmpeg

    最近在学习音视频相关开发技术 第一步是搭建开发环境 通过参考网上查到的资料结合实际情况 最终将ffmpeg编译通过 并支持x264 x265 fdk aac 在这里将具体的操作过程记录下来 方便以后参考 目录 1 下载VS2019社区版本
  • 【平衡小车】学习日志(八)

    任务 基于之前PID算法编写小车的可运动可平衡控制的功能代码 Control 基于之前完成的PID控制算法 修改部分编写 直立环 速度环 转向环 的控制函数 1 在Control c修改PID控制函数 直立环PD控制 直立环PD控制 参数1
  • 学机器人编程好还是学计算机编程好

    学机器人编程好还是学计算机编程好 小孩的学习一直都是家长们非常关心和重视的一件事 很多的家长在培养孩子的学习的时候 会给孩子选择一些能够有利于孩子成长的课程 就很多的家长想要孩子去学习机器人编程的课程来说 他们对于学机器人编程好还是学计算机
  • java使用POI读写Excel

    前期准备 到官网下载pol的jar包 https poi apache org 导入项目所依赖的jar包 注 这几个一个都不能少 不然会报些奇怪的错 代码 使用POI读取Excel并输出 import java io IOException
  • iOS开发之高级视图—— UITableView(一)简单例子

    表视图继承自UIScrollView 这样的继承关系使得表视图可以实现上 下滚动 UITableView需要实现的两个协议如下 UITableViewDatasource 实例化表视图时 必须采用该方法来实现数据源的配置 UITableVi
  • win8/win10操作系统如何通过Legacy BIOS与UEFI两种模式安装

    感谢联想的工程师 Win8系统相对于Win7系统在开机速度上有相当大的提升 这是因为Win8系统为了提升系统性能和对硬件的优化 加入了诸如开机引导及应用预缓存等技术 而其中的UEFI BIOS引导 则能使平台开机更智能 开机速度更快 对比采
  • java中Math,Systerm,Object,Integer类中的一些常见方法

    一 Math类 int abs int 返回绝对值 double ceil double 向上取整 double floor double 向下取整 int round float 四舍五入取整 int max int m int n 返回
  • Springboot 之 JDBC 多数据源实现

    简介 Springboot 中使用 JdbcTemplate 实现多数据源比较简单 查看 JdbcTemplate 源码 可以发现 JdbcTemplate 提供了传入 DataSource 的方式构建不同的 JdbcTemplate 实例
  • Elasticsearch(六)--ES文档的操作(中)---修改文档

    一 前言 上篇文章我们了解了ES的插入和批量插入文档的操作 分别通过ES的kibana客户端以及Java高级Rest客户端进行学习 那么本篇则进入到对文档的修改操作 同新增文档 也有更新单条文档和批量更新文档操作 但还多出一个根据条件更新文
  • Jlink使用技巧之烧写SPI Flash存储芯片

    文章目录 前言 准备 硬件连接 1 打开 2 连接SPI Flash芯片 3 打开程序文件 4 下载 5 程序文件的读取 6 程序文件的保存 7 命令行工具的使用 支持的芯片列表 速度说明 参考资料 JLink软件的下载 前言 大多数玩单片