怎样把单片机中的程序给拷贝出来
随着物联网时代的到来,单片机变得越来越流行。我们经常在学习和生产中经常会遇到这样的问题,可能需要将单片机中的程序拷贝出来,并把其烧写到其他同型号单片机上去进行生产,或者由于debug的需要,需要对单片机flash的状态进行分析。
其实没有通用的方法可以对所以单片机程序进行读取,这里主要介绍现在市面上使用的最广的使用jtag调试接口的单片机,现在用的最多的stm32单片机就是使用的jtag接口。
操作方法
- 01
首先,需要准备一个J-Link烧写器,并连接到单片机定义的Jtag调试管脚,如下图,这里作者使用了stm32单片机,板子上自带Jlink接口,如下图所示。 如果没带接口,需要自己看芯片管脚定义,然后引出这几个管脚连接到J-Link上,主要芯片可能需要提供外部供电。
- 02
在Segger官网,下载JFlash软件,安装完成后,打开J-Flash软件,这里作者使用的是当前最新的6.30版本,如下图。
- 03
在弹出的窗口,勾选Create a new project,点击Start J-Flash,如图一。 然后点击Target Device 后面的...,选择你目前使用的芯片型号,如图二。 这里作者使用的是STM32F103RB系列的单片机,于是选择这款单片机。
- 04
建立好工程,接下来需要与单片机,点击菜单栏的target ——> connect,连接成功,底部会有连接成功的Log信息输出。 如果显示连接不成功,请检测线路连接情况和芯片供电情况。
- 05
连接成功后,依次点击Target——>Manual Programming——>Read back——>Entire chip,就可以读回芯片上的程序的二进制数据了,如下图。
- 06
读取成功之后,点击File——>Save data file,然后将其保存为.bin文件,如下图,就可以把这个.bin文件烧写到同类型的其他单片机上去了。
- 07
如果你好奇这个二进制文件做了哪些工作,你可能需要使用IDA之类的反汇编软件来分析它的逻辑了,如下图这是使用IDA反汇编刚刚得到二进制文件得到程序流程框图和反汇编代码。