利用bootloader提取
通过串口,把芯片和电脑相连,运行mcuisp软件,点击读Flash即可。
mcuisp软件通常被用来通过串口通信下载固件到单片机。串口通信也是通信技术的一种,目的是实现芯片A到芯片B的数据传输,是芯片之间经常用到的通信方式。例如:如果我的目的是把程序代码“abcd”传输到芯片A中,但是,我仅仅通过电脑与没有bootloader的单片机进行串口通信,“abcd”是没办法直接储存到Flash区域的,必须在单片机内部写好一段代码,在“abcd”已经通过串行接口,一个一个的到达单片机内部的缓冲器时,把 “abcd”一个一个的转存到Flash区域。这样就实现一种电脑直接写入“abcd”到Flash的假象,达到用户无感知或是透明传输的效果。提取固件的过程与上述过程相反,只需要利用bootloader把Flash的内容通过串口通信发送给电脑即可。 利用硬件调试接口提取
在开发单片机程序时,会用到硬件调试工具,实现单步运行来查看程序实时运行的效果。一般可以通过下面两类调试接口,把Flash中的数据读取出来。
(1)SWD接口,利用硬件:J-LINK OB或者J-LINK或者ST-LINK;利用软件:J-LINK驱动程序自带的J-FLASH或者ST官网提供的STVP。
(2)JTAG接口,利用硬件:J-LINK;利用软件:J-LINK驱动自带的J-FLASH。
如果找不到串行接口,可以用这种方式,当然,前提是产品电路板上可以引出这两类接口之一,否则只能取下芯片了。
单片机片外
作为一个存储器,上电之后不可能自己就把数据显示给我们,就好像U盘买回来,得插电脑上,加载完驱动才能读取到里面的数据。对于片外Flash,需要把Flash芯片从产品的电路板中取下来,再放到另外一个带有MCU的电路板上来读取数据。万能的淘宝提供了编程器,方便了对众多Flash芯片的内部数据的提取。
这种方式有两个缺点: 一是比较暴力,需要把Flash芯片从电路板上取下来,再把Flash芯片放到编程器上面,利用配套的PC端软件,把固件读取出来。 (责任编辑:admin) |