眼睛看到的真的很容易吗?
每当看到别人在熟练操作的时候,心里总是默默地对自己说:“It is too easy for me”,要是自己去做一定会做的更好,这是站在自己已有的逻辑思维上进行判断,当真正去实操的时候,过程中嘴里会不停地说:“It’s so difficult for me,I’ll be crazy!!”。实验室研究过程中是允许失败的,因为成本可控,但是如果针对客户的高价值设备进行研究是不容许因为半点马虎导致设备报废的。为了避免在客户现场的心里抖动,格物实验室通过一次真实硬件实操训练,实现成员技术和心智的成长。
对硬件下手
PCB 一张小小的电路板,生活中处处离不开它,小到消费电子、家用智能设备,大到工控医疗、汽车电子、航空航天等,都有它的功劳。可以说它就是电子产品的 “幕后英雄”。
对于之前只专注于软件的我们来说,了解智能设备硬件基础是非常有必要的,其目的在于:
1、当我们拆解了一款设备后,在面对一张布满电子元件的 PCB 板时,需要能基本认识上面常见的元件,此外,还能够识别出一些后续可能需要用到的部分,比如电源、CPU、存储芯片、各类串口(UART/SPI/I2C/)、网口、USB 口、无线接口、调试接口(调试串口/JTAG/SWD/硬件后门)等。
2、更进阶一步,就是掌握电路焊接技术,能将电子原件无损焊接到电路板上,同时也能从电路板上将元件无损取下来。
也正是有了前两步的基础,以下这些需要接触硬件提取设备固件的方法才能被利用起来。
(1)从硬件调试接口:JTAG/SWD,利用调试工具的任意地址读取功能。
(2)拆Flash、Sd卡、TF卡、硬盘等,用编程器或对应设备读固件。
(3)用硬件电路的调试串口和固件的bootloader获取固件。
(4)用逻辑分析仪监听flash,ram获取信息。
(5)从串口进入系统后,用tar、nc、dd、echo、vi 等命令提取固件。
理论基础
先放上马老师专门为本次实战定做的 PCB 板。初始板面上没有任何元件,所有的空间都可以任由成员自由发挥。
在拿起电烙铁为所欲为之前,马老师先给我们上了一节理论课。着重介绍了电路基础知识、常用仪表及工具的使用和电路焊接方法。
电路基础知识
下图是一个拥有较完整布局的开发板,面对类似这样的一块板,我们通常更关注以下这几部分:
- CPU: X86、ARM、MIPS、PowerPC等。
- 内存: SDRAM、RAM。
- 存储: Flash、TF卡、SD卡、MMC卡、硬盘。
- 串口: 一般电路板会留,做调试用。
- 网口: 智能设备联网用。
- USB口: 接U盘做扩展存储用、也可接键盘和鼠标等。
- 无线接口: Wifi、蓝牙、ZigeBee等。
另外,板子上还会有数量较多的小元件,常见的有:二极管(包括发光二极管)、三极管、电阻(直插电阻、贴片电阻等)、电容(电解电容、贴片电容等)和电感等。
电阻根据不同的规格也有不同的大小,其规格和外形尺寸的对应关系是:
0805 — 2.0 * 1.2、0603 — 1.6 * 0.8、0402 — 1.0 * 0.5,长宽单位都是毫米,焊接时不小心的一口气也许就把零件不知道吹到哪里了,所以新手在焊接时只能用镊子来操作,熟练的焊接专家会通过烙铁结合焊锡的拉力在2秒内将零件成功焊接到PCB板上,保证焊点饱满,有光泽,无毛刺,无虚焊。
常用仪表
万用表是名副其实的万用,不过最常是用来测量交流电压、直流电压、两点短路、电阻。
关于它的使用,主要注意接线的规则:
电路焊接
实战的重头戏之一就是焊接,那么用来焊接的工具使用必然也是要重点掌握的。下面是一个常见的焊接工具包。有电烙铁、焊锡、铁架台、高温海绵、松香、吸锡器。
松香、高温海绵还有铁架台起到重要的辅助作用,具体用法见下图:
实际焊接的时候,对于不同的元件有不同手法。比如在焊接导线的时候,大致按照如下步骤进行:
1. 剥线, 把线捋顺。
2. 均匀加热导线, 给线上锡,必要时加焊锡膏或松香助焊。
3. 焊接后多余的或不规则部分用斜口钳剪掉。
4. 给电路板结点处均匀上锡。
5. 把导线和电路板结点焊接起来。
再比如焊接芯片时,可以先固定芯片一个脚,然后再逐个给每个脚点焊锡。
焊接时温度控制,用有铅焊丝时调至 260-300 度,无铅焊丝温度需要达到 280-350 度。
实战现场
焊接
在马老师手中,融化了的焊锡比德芙还丝滑,焊点凝固之后均匀有光泽。
初次实践后一致感觉:一看就会,一焊就废(⊙o⊙)。纸上得来终觉浅,绝知此事要躬行。
对焊接时间和节奏的掌握,以及操作时手部的稳定性都在焊了一个又一个元件之后慢慢进步,明显体现在焊点上的“刺头” 在逐渐减少。
除了将元件焊上电路板外,还要有办法将需要的元件从电路板上取下来,取下的方式有两种,一种是用电烙铁,另一种是用热风枪。
电烙铁法,往芯片上融化大量焊锡,来回加热焊锡,待芯片管脚加热后,顺势取下芯片。
下图是马老师展示使用热风枪拆芯片的正确姿势,拆芯片时很重要的一点是一定要用隔热胶带护好芯片旁边的电感、电容、电阻,避免风枪将周围的零件吹飞。将热风枪调节温度到 380 度,沿着芯片四边均匀吹风加热,焊锡熔化后将其取下。
提取固件
在能够取下FLASH芯片后,我们的最终目的是想要读取其中的固件,此时用到的工具是土豪金编程器,它长这样:
再配上烧录座,把 flash 芯片装在烧录座中:
连接上电脑,就可以用编程器读取固件了。
对于那些实在无法从板上取下来的芯片,也有办法,可以用烧录夹直接夹住板上芯片的针脚。不过说起来容易,真的夹起来还确实需要点技巧。
网线的制作
自制网线要准备的工具有双绞线、水晶头、网线钳、万用表。
双绞线插入水晶头时的线序很关键,线序有两种:正常连接和交叉连接。
正常连接是将双绞线的两端分别按白橙、橙、白绿、蓝、白蓝、绿、白棕、棕色的顺序(这是国际EIA/TIA 568B标准)压入水晶头内。
交叉连接是将双绞线的一端按国际标准EIA/TIA 568B标准压入水晶头内;另一端将芯线依次按白绿、绿、白橙、蓝、白蓝、橙、白棕、棕色的顺序(这是国际EIA/TIA 568A标准)压入水晶头内。
实际操作时,用网线钳将双绞线一端的外皮剥去大概3-5CM,然后按EIA/TIA 568B标准顺序将线芯撸直并拢。
将芯线放到网线钳切刀处,8根线芯一定要在同一平面上并拢,而且尽量直,留下一定的线芯长度,剪齐。
将双绞线插入水晶头中,并且要检查8根线芯是否已经全部充分、整齐地排列在水晶头里面,一定要保证每根线芯都要触底。
最后用网线钳用力压紧水晶头即可。
一端的网线就制作好了,同样方法制作另一端网线。此处要注意,如果按照正常连接的方法排线,两端的线排布要完全对应起来。
最后,测试新制作的网线是否联通。使用万用表,打到蜂鸣档,将红黑表笔依次伸进两个网线水晶头上相对应的金属片,如果万用表发出蜂鸣声,则表示线路是通的。
在花费了 10+ 水晶头之后,终于有一条可联通的网线制作成功,之前失败的主要原因是绞线未能完全均匀插入水晶头底部导致部分线路接触不良。
小结
本次硬件实训见识了平时比较少见的东西,比如NFC读卡器、工控PLC硬件、上位机软件和USRP硬件等。解锁了各种新技能,像是使用电烙铁进行拆焊、利用编程器提取固件、自制网线、sdr设备使用。
虽然智能硬件的很多知识网上都能查到,也有很完善的图片和演示视频,但实际动手就会发现很多问题。以利用烧录夹提取固件为例,看似非常简单,但如果没有指导,实际操作起来很难成功。
本次实操动手练习活动得到了大家的一致好评,有小伙伴已经计划将这些技能平移至工控领域,想要总结出一套适用于工控领域的方法论和实操体系呢,确实是一次收获颇多的实训!
利用实操的机会,顺手完成了一个USB2CAN的设备制作,可以用在车联网的安全测试中。
团队中需要技术高超的领航人,更需要每个成员的共同努力,补足短板,才能团结一致,砥砺前行。
回顾一下每个人的收获,也许会理解的更多,更能明晓团队前进的方向。
最后感谢团队中每一位同事的辛勤付出,同时也感谢领导们的大力支持。