随着物联网时代的到来,单片机变得越来越流行。我们经常在学习和生产中经常会遇到这样的问题,可能需要訇咀喃谆将单片机中的程序拷贝出来,并把其烧写到其他同型号单片机上去进行生产,或者由于d髫潋啜缅ebug的需要,需要对单片机flash的状态进行分析。其实没有通用的方法可以对所以单片机程序进行读取,这里主要介绍现在市面上使用的最广的使用jtag调试接口的单片机,现在用的最多的stm32单片机就是使用的jtag接口。
工具/原料
J-Link调试工具
J-FlashV6.30i
stm32f103系列单片机
方法/步骤
1、首先,需要准备缬方焱蜱一个J-Link烧写器,并连接到单片机定义的Jtag调试管脚,如下图,这里作者使用了霜杼厮贿stm32单片机,板子上自带Jlink接口,如下图所示。如果没带接口,需要自己看芯片管脚定义,然后引出这几个管脚连接到J-Link上,主要芯片可能需要提供外部供电。
2、在Segger官网,下载JFlash软件,安装完成后,打开J-Flash软件,这里作者使用的是当前最新的6.30版本,如下图。
3、在弹出的窗口,勾选Createanewproject,点击StartJ-F盟敢势袂lash,如图一。然后点击Target肛舀辨乔Device后面的...,选择你目前使用的芯片型号,如图二。这里作者使用的是STM32F103RB系列的单片机,于是选择这款单片机。
4、建立好工程,接下来需要与单片机,点击菜单栏的target——>connect,连接成功,底部会有连接成功的Log信息输出。如果显示连接不成功,请检测线路连接情况和芯片供电情况。
5、连接成功后,依次点击Target——>ManualProgramming——>Readback——>Entirechip,就可以读回芯片上的程序的二进制数据了,如下图。
6、读取成功之后,点击File——>Savedatafile,然后将其保存为.bin文件,如下图,就可以把这个.bin文件烧写到同类型的其他单片机上去了。
7、如果你好奇这个二进制文件做了哪些工作,你可能需要使用IDA之类的反汇编软件来分析它的逻辑了,如下图这是使用IDA反汇编刚刚得到二进制文件得到程序流程框图和反汇编代码。