硬核知识

J-Link OB F103 固件提取及维修

2018-12-22  本文已影响0人  哥尔赞赞赞

2020.04.15更新

一年后回看这篇文,有种公开处刑的感觉。写的都是些啥玩意儿。(0.0)
给出重点:


以下是旧文

事情起因

某日在调试stm32的时候,错将5v接入3.3v电源输入,开发板烧掉。而且因为jlink没拔掉,也一同阵亡了。光烧了个芯片把整个板换掉太亏,遂打算动手修复。


坏掉的J-Link

学习修复J-Link

  1. 厚着脸皮向jlink卖家要原理图,卖家表示他也没有
  2. 网上找资料,只找到部分f072和f103的相似原理图,pcb不一样。
  3. 看原理图可知布线其实很简单,没有pcb也不要紧,只要找到供下载固件的SWD口(或TX RX),并引出,下载固件即可。
  4. 万用表加手电筒抄板,SWCLK SWDIO对应PA14 PA13,LED连接到PB12,作为jlink的输出SWCLK SWDIO对应PA3 PA4。
  5. 找固件,在此特别感谢下列博客文章
    x893大神 (万恶之源?)
    x893文章的翻译
    JLink OB 072固件寻找的过程
    JLink OB最新固件提取教程
    自制Jlink ob 072 (大致硬件原理图)

固件提取

网上有别人提取的固件,但苦于没csdn积分,最后还是自己提取。
具体过程我就不复读了,上面两篇固件寻找的文章已经写得很好,只说一下简略步骤和心得。

  1. 从jlink驱动的安装目录中找到JlinkARM.dll,用winhex打开。

  2. 拉到最后(从后往前找比较方便)→ Ctrl+F(搜索文本)→ J-Link OB(或stm32f103),找到以下描述的字段,上面有芯片型号,编译日期等信息,称之描述字段

    描述字段
    注意!上面找到的描述字段并不是固件的开头。固件开头在前面十来行或几十行,长这样:XX XX 00 20,从描述字段向上搜索16进制数值 00 20就能看到这个开头(!!!开头不是00 20,是 XX XX 00 20)
    固件开头
  3. 顶栏→搜索→查找16进制数值→00 20 ,右键→选块开始

  4. Ctrl+F(查找文本) → J-Link OB(同第二步),找到下一个固件的描述字段

  5. 右键→ 选块结尾 , 此时你就选择了 固件开头 到 下一个固件开头 的字段,此时选块已经包含了所需固件,且超过了固件结尾。

  6. 右键→编辑→复制选块→置入新文件 , 保存为.bin文件

2019.01.24更新:第一次弄的时候有点生疏,上面的参考博客也没有看太懂。做到这一步就直接把bin文件烧进去,jlink没有反应,最后还是用的网上hex格式的固件才成功

接着上面步骤:

  1. 从驱动中提出的固件还不能直接用,要在xxxx 0020前填0,共0x4000个,然后在开头处输入固件的前八个字节。具体见这篇博客结尾处:JLink OB最新固件提取教程
  2. 完成了上一步后,所得bin文件就可以直接烧录到f103的0x8000000处。

固件提取结束

2019.01.23更新

容易弄错的地方:

测试了自己提取的三个固件,分别编译于2012,2014,2017年。
2012年的下载速度4000kHz,无提示更新固件,无弹出联系SEGGER
2014年的下载速度4000kHz,提示更新固件,更新会失败,然后直接识别不到jlink
2017年的下载速度2250kHz,无提示更新固件,提示联系SEGGER。

另外,在更文前的一个月里,我一直使用的是网上提供的hex格式固件。这个固件编译于2009年,下载速度4000kHz,会提示更新固件。但奇怪的是更新没有失败,照常使用了一个多月。但仍在使用时会弹窗,提示建议联系SEGGER


更新前原内容

  1. 快递已到,将f103换到板上。
  2. 准备另一个能用的JLink(STLink)供下载固件用,连好待修复JLink的SWCLK SWDIO(不要连错到板上另一组SWCLK SWDIO)
  3. 打开JLink.exe检查是否连上了待修复JLink,打开JFlash.exe,设置好设备型号等,打开刚才保存的bin文件,烧写。JFlash具体操作参考文章:Jlink&STlink工具烧录读取hex&bin

经过上述步骤后固件就下载完了。但插上电脑,不识别J-Link,LED指示灯不亮,示波器检查,晶振没有起振。更换晶振,更换固件,并下载bootloader到0x8000000,都尝试过后还是没有反应,郁闷。

为了检查是不是技术太差焊坏了芯片,写了个简单的led闪烁程序,下载进去,灯亮了!
打消了焊坏了芯片的担忧,应该是固件或者bootloader的问题。于是下载了别人的固件,发现是旧版本的,不管了先烧进去。连接电脑,成了


成辣

最后

J-Link OB修好了,对我来说难点其实在于固件提取csdn积分以及焊接

记录一下艰难摸索出的焊接心得

风枪拆芯片所需时间并不长,360°C下,LQFP48我只吹了二十来秒,LQFP144不超过一分钟。只要出风口贴得低一点,吹均匀了,就很容易拿起来。

用镊子拿芯片的手法:
小芯片可以直接整块夹着往上提。稍大一点夹不住的,可以轻轻提没有引脚的角落。风枪吹的时候,提起的芯片角落能感受到松动,说明时间差不多了,再吹吹另几个角就能提起来。
提起来的时候不要太暴力,小心焊盘被拔坏,更要小心周围的贴片电容电阻之类的被带动掉落,没有原理图的话,掉了就几乎凉了。

另外,可以只先焊上SWCLK和SWDIO,测试能不能被电脑检测到,检测芯片的好坏。

附件

造福大家,文中提到的四个固件都分享出来了,都测试过能在电脑上识别到。

链接:https://pan.baidu.com/s/1DsmNB2dK_dEaLOeioesmeg
提取码:7rp4

上一篇下一篇

猜你喜欢

热点阅读