代码丢了怎么从单片机上下载

前言

有的同学在做完练习之后将代码删除了,只在单片机上有一份代码,其实还是有办法解决的,不过我们最后只能得到一份汇编代码

声明:在未经别人的允许读取别人的代码是违法行为!

产品中的单片机设置有读保护功能,没有权限使用此功能读取代码

准备工作:

                硬件:STM32单片机,USB转TTL,杜邦line若干

                软件:GCC工具,FlyMcu软件

                准备好上述工具就可以开始了

读取代码

        首先我们要将单片机的UART1和U转TTL连接好(这里只能是UART1),也可以用这个方法打开bootloader模式,使用串口烧录单片机(只能使用hex文件)

开启bootloader:有的开发板上有跳线帽(有的有一键下载电路),我们拨动boot0的跳线帽从0到1,然后点击reset复位就好,开启bootloader模式之后我们就可以使用串口向单片机烧录程序,有时候我们如果使用AFIO将烧录代码用的SWD引脚映射掉就可以使用这个方式重新烧录代码,烧录完成之后再将跳线帽换回原位再复位即可。

        

        之后我们要打开FlyMcu软件,可以使用这个软件通过串口的方式向单片机烧录,不过这里我们要读取flash,因此点击下面的读FLASH按键即可生成一个bin(二进制)文件

反汇编

这里我使用的是GIT BASH和GCC,只需要在二进制程序的目录下右键打开GIT BASH,然后输入命令就可以生成反汇编的txt文件

objdump -d test.bin > test.txt

这样就可以在文件所在位置生成一个txt文件,内容就是反汇编之后的结果,这里的test需要改成自己设置的bin文件的名称,最终我们就得到了一份汇编文件。

结束

        可以再对其进行分析修改,值得一提的是,没有经验的程序员读汇编也是一件十分头疼的事,除非是需要对源码进行bug修改之类的工作,或者说源码确实丢了,打算做一个类似的代码,这样其实可以拼接出来,我们可以使用gcc再多链接几个文件,将源文件的汇编于我们后期写的函数链接到一起,找到源文件的main中BL我们新写的函数即可(需要提前IMPORT)

有问题的小伙伴欢迎留言咱们一起进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值