焊接心得挺不错的,可以学习到了

事情起因

某日在调试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更新

容易弄错的地方:

  • 自己提取出来固件后还要补0,补开头八个字节,才能用
  • f103的固件开始地址是0x4000,不同于x893的博客中所写的0x4800,0x4800是f072的。
  • 同时f103也不需在0x8000000写x893提供的bin_8000000文件(据说是用于跳转到0x8004800)
  • 用JFlash下载固件有时候提示跑崩了 "PC of target system has unexpected value after programming",这时候打开JLink安装路径下的JLinkSTM32.exe,将option bytes恢复出厂设置,即可解决

测试了自己提取的三个固件,分别编译于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
觉得有用的话顺手点个好看吧

J-Link OB F103 固件提取及维修的更多相关文章

  1. OWASP固件安全性测试指南

    OWASP固件安全性测试指南 固件安全评估,英文名称 firmware security testing methodology 简称 FSTM.该指导方法主要是为了安全研究人员.软件开发人员.顾问. ...

  2. 一个文件夹可以link 到另外一个文件夹

    Creates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target /D      Creates a directory symboli ...

  3. 超级MINI STLINK V2 官方固件自动升级 ST-Link 【worldsing 笔记】

    简介: 支持所有带SWIM接口的STM8系列单片机 支持所有带SWD接口的STM32系列单片机 完全兼容Keil,STVP,STVD,IAR,COSMIC,STM32 ST-LINK Utility! ...

  4. 物联网设备是如何被破解的?分析一种篡改IoT固件内容的攻击方式

    随着智能硬件进入到人们的生活,人们的生活质量开始有逐步的提高,人们与智能硬件之间的联系更加紧密.同时,智能硬件的安全问题也必须引起高度重视,因为其直接影响到人身安全.社会安全和国家安全.   大家是否 ...

  5. 利用matlab自带函数快速提取二值图像的图像边缘 bwperim函数

      clear all;close all;clc; I = imread('rice.png'); I = im2bw(I); J = bwperim(I); % 提取二值图像图像边缘 figure ...

  6. 牛客多校第四场 J Free 最短路

    题意: 求最短路,但是你有k次机会可以把路径中某条边的长度变为0. 题解: 跑k+1次迪杰斯特拉,设想有k+1组dis数组和优先队列,第k组就意味着删去k条边的情况,每次松弛操作,松弛的两点i,j和距 ...

  7. windows7命令帮助大全

    有关某个命令的详细信息,请键入 HELP 命令名ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库 ...

  8. DOS命令集

    1.ASSOC显示或修改文件扩展名关联.ASSOC [.ext[=[fileType]]]  .ext      指定跟文件类型关联的文件扩展名  fileType  指定跟文件扩展名关联的文件类型键 ...

  9. BZOJ1070 [SCOI2007]修车

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

随机推荐

  1. Word 分栏页码,一个页面两个不同页码的设置

    1. 前言 在一些报纸.杂志中,我们可以见到各种各样的排版风格效果,其中有一种效果是一个页面设置了两栏,并且每栏下面都有不同的页码,那么,这种效果是如何实现的呢?这种页码在Word中默认页码样式中是没 ...

  2. 顺序表添加与删除元素以及 php实现顺序表实例

    对顺序表的操作,添加与删除元素. 增加元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1);  ...

  3. PAT-1012 The Best Rank (25 分) 查询分数对应排名(包括并列)

    To evaluate the performance of our first year CS majored students, we consider their grades of three ...

  4. 整理一下rmq

    rmq(int i,int j,int a)表示查询a数组i到j区间的内容中的最大/最小值核心部分为二分区间以及st预处理算法 先说st预处理算法吧 int dp[i][j];//表示以i开始 长度为 ...

  5. (一)shiro简介和用户登录demo及角色管理

    一.shiro简介 Apache Shiro是Java的一个安全框架.Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境.Shiro可以帮助我们完成 ...

  6. Windows 10 下 Linux 子系统的安装和使用

    介绍 适用于 Windows 的 Linux 子系统(英语:Windows Subsystem for Linux,简称 WSL)是一个为在 Windows 10 和 Windows Server 2 ...

  7. koa-router学习笔记

    koa-router 是koa框架的一个路由处理级别的中间件. 目录结构 ├── app.js ├── middleware │ ├── m1.js │ └── m2.js ├── package-l ...

  8. “df: cannot read table of mounted file systems”.

    “df: cannot read table of mounted file systems”.“df -l” returned an error: “df: cannot read table of ...

  9. js原生方法的重写

    讲干货,不啰嗦,通过prototype可以获取到JavaScript的原型对象,进而可以在对象原型上添加新的属性和方法,当该方法与原方法名称一样时会覆盖原方法既:重写,当不一样时既:添加 如:实现数组 ...

  10. web中间件

    0x00 Web中间件概述 通俗来说,中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通.Apache的Tomcat.IBM公司的WebSphere.BEA公司的WebLogic ...