用户
搜索
  • TA的每日心情

    2018-8-23 15:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    1

    主题

    9

    帖子

    64

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2015-11-20

    i春秋认证i春秋签约作者

    发表于 2018-8-23 15:16:14 330291

    省钱版----查找 IoT 设备TTL线序__未完待续

    缘由

    在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能够提高效率的一步。如果你的能力够高,直接使用热风枪拆下 Flash 存储芯片读取或者写入固件,这是最好不过的了。笔者自然没有那么高的能力水平,只能做些苦力,查找 IoT 设备板子的 TTL 线序,然后苦兮兮地焊接调试。

    焊接调试的第一步是查找IoT设备的PCB板(下文统一称为板子)的调试接口 ,分别是GND、TX、RX,对应地线、写入、读取。在网上查找如何确定TTL线序方面的资料,发现少之又少,很多牛人抑或是不屑于说这方面的信息,又或者这方面的能力默认大家已经精通,无奈和笔者不会,只有自己默默地分析,经过一些天的分析和总结,也算是小有心得,现总结出来供大家一起交流和探讨。查找TTL线序有很多种方法,最好的方案是使用逻辑分析仪,关键是这东西不是随便就能买到的,而且使用起来也是麻烦,笔者并没有这么一款设备,也是本篇文章的名字的由来,使用最少最省钱的设备来确认TTL的线序。

    工具

    万用表

    万用表是必需的设备,可以用来确认GND地线。万用表可以有很多种选择,几十块钱到上千块钱不等,使用方法大同小异,看个人喜好选择,同时笔者在这里也不再介绍万用表的使用方法,知道如何用来使用查找GND接口就可以啦。

    放大镜

    放大镜的作用是用来观察 IoT设备板子上的线路,因为PCB板太小,各个焊接的电路用肉眼观察起来非常吃力,有一个放大镜要好用的多。

    手电筒

    如果你想完全的看清设备电路板,这就需要借助其他的亮度了,例如手电筒、LED灯或者是手机的手电筒功能也是ok的。就我自己来讲比较倾向于手电筒,毕竟LED灯贵,同时手机还要用来接业务电话,不过具体选哪种要看自己的喜好,只要能够达到看清设备电路板目的的都是好工具。

    万用表、放大镜、手电筒,这些就是查找 IoT 设备TTL线序中用到的全部工具,这里最贵的要数万用表了,是不是很省钱呢?此处应该有掌声。

    查找方法

    下面就来聊一聊查找 IoT 设备TTL线序的方法。由浅入深,从易到难,这是我们每个人学习的正常梯度。那我今天要跟大家交流的是最简单最快捷地查找到 IoT 设备TTL的线序。
    到底是什么方法呢?就是看IoT设备板子上已经给出的TTL 的线序。
    什么?你没有遇到过这么好的事情?那是因为你没有见到足够多的板子。

    板子已标记线序

    烽火光纤猫的某些型号的板子上默认就给出了GND、TX、RX 、VCC等接口,剩下的就是焊接杜邦线啦!
    非常的省时省力。

    DLink的某款摄像头也对应的标记出了相关的TTL线序,不过调试接口之间空隙太过狭小,焊接的时候容易导致各种粘连,如果VCC和RX粘连在一起,板子就会烧毁,那IoT设备也就废掉了,人生悲剧也不过如此啊!

    内事问百度,外事问google

    虽然百度有各种黑历史,但就国内的搜索引擎使用频率来说,还是很高的,特别是路由器的魔改、硬改、调试之类的内容资料是非常丰富的,分析TTL线序之前不妨在百度google上查找一下。

    热心网友细心的给出了 TTL线序,给他1024个赞。

    下面就是重头戏了,很多IoT设备并不会给出TTL线序,恨不得把调试接口隐藏的越深越好,也是为了保护设备不会被黑掉,这点也要理解设备厂商。笔者的目标是分析和调试固件,就要与厂商对着干,找到设备厂商隐藏的调试接口。

    从0到1

    拿到一个IoT设备板子,首先要找到有可能是调试接口的地方,寻找调试接口的依据主要有2点:一:一般而言,IoT设备板子上有规律的并排连续的接口就是调试的接口,有些接口的特征是并排连续的接口突出出来可以直接连接杜邦线的,比如上节图中的调试接口,有些接口的特征是中空的圆点,更有的是已经被焊死的调试接点,这些需要我们仔细观察;二是,调试接口RX和TX都要与CPU芯片进行交互。通过这两点就可以大致地判断出调试接口的位置。
    下面就以一款TP_Link的路由器为例分析。

    调试接口

    如下图所示:

    按照上述的判断依据,先寻找有规律的连续并排的接口,可以发现上图左下中部和右上都可能是调试的TTL接口。
    依据上述第二点进行分析,观察两个红框处的线路走向,我们知道,调试接口RX和TX分别表示接收和发送,这两个接口需要与CPU芯片进行交互,这就要保证与CPU 芯片在电路上相通才行。基于此理论,我们观察一下这两个怀疑是调试接口的地方。

    右上部分线路走向

    左下部分线路走向
    右上红框部分只有一个接口连接了线路,电路走向并没有连接到 CPU 芯片,而左下红框部分有两个接口有线路连接到 CPU 芯片,基于此基本可以断定左下部分就是调试接口。

    查找GND

    确定了调试接口之后,接下来就是要找到GND、RX、TX等具体的TTL线序,这时万用表就该登场啦!笔者使用的万用表的型号是UNI-T UT70B,大家测试的时候需要注意根据自己的万用表进行适当的调整。
    使用万用表的第一步就是要确保万用表是可以正常工作的,也就是校表。首先将万用表的红黑表线插到相对应的位置,将万用表调整到欧姆档,然后将万用表的红黑表笔对接,如果万用表有数值(很小,可以忽略不计),这就说明万用表可以正常工作。确认万用表可以正常工作后,将万用表调整到通断档位,也叫蜂鸣档,如下图所示,将黑色表笔接到IoT设备板子上的电路接口上固定不动,红色表笔依次在四个接口上进行通断测试,如果万用表有蜂鸣声,我们就可以判断此接口是GND接口。经过笔者测试,图中第二个接口为GND接口。此为第一种方法。


    万用表-通断性档位


    左起第二个为GND

    第二种方法:路由器通电之后,将万用表调整到电压档位,红黑表笔按照第一种方法进行测量,如果万用表的读数为0 ,由此可以判断接口为GND,如下图所示:

    GND接口的万用表测量电压读数为0

    第三个方法:同样将万用表调整到电压档位,红黑表笔任选两个接口进行触探,万用表显示有电压值,并且电压为正的时候,红色表笔测量的接口VCC,黑色表笔测量的接口为GND。

    确认RX/TX或VCC

    “调试接口”章节中已经确认路由器PCB板上左下部分为调试接口,同时RX和TX在上节中有过描述,两个接口必须要跟CPU 芯片有电路上的连通,观察路由器PCB板,四个接口中只有右边两个接口的电路线与CPU 芯片连接,因此可以确认右边两个为通信接口,但具体哪个是RX哪个是TX未知,需要连接TTL调试线在计算机上进行测试确认。
    用杜邦线连接路由器PCB板的GND、RX、TX,并与USB2TTL设备一端连接,USB2TTL设备另一端接入计算机,计算机中使用putty或者xshell连接com调试口,路由器通电后查看是否有输出,没有输出的话,调换一下RX和TX接口的杜邦线,如果有相应输出,我们就可以明确与USB2TTL设备RXD相连的接口为TX,与USB2TTL设备TXD相连的接口为RX。

    com口波特率设置常见的为115200,但是具体数值由路由器PCB板型号确定,本次使用的路由器型号为 TP_WR2041n V3,波特率为 117500

    TTL线序正确与USB2TTL设备连接之后就可以看到正常的输出:

    Connecting to COM5...
    Connected.
    ~
    U-Boot 1.1.4 (Jul  4 2014 - 11:13:11)
    cus249 - Dragonfly 1.0
    DRAM:  16 MB
    Top of RAM usable for U-Boot at: 81000000
    Reserving 130k for U-Boot at: 80fdc000
    Reserving 132k for malloc() at: 80fbb000
    Reserving 44 Bytes for Board Info at: 80fbafd4
    Reserving 36 Bytes for Global Data at: 80fbafb0
    Reserving 128k for boot params() at: 80f9afb0
    Stack Pointer at: 80f9af98
    Now running in RAM - U-Boot at: 80fdc000
    Flash Manuf Id 0xef, DeviceId0 0x40, DeviceId1 0x15
    flash size 4MB, sector count = 1024
    Flash:  4 MB
    Using default environment
    
    In:    serial
    Out:   serial
    Err:   serial

    明确RX、TX接口之后,剩下的最后一个接口自然就可以确定是VCC。
    验证一下VCC接口。VCC接口的确认仅需要万用表即可。
    VCC的接口电压一般为3.3V或者5V。将万用表调整到电压档位,黑色表笔(Com线)连接GND接口,红色表笔连接VCC接口,如果万用表的读数是3.3V左右,至此可以确认前面的分析判断是准确的。
    注意:在分析和调试的过程中VCC接口不要随意接入USB2TTL设备,否则有很大的几率烧坏板子,这是笔者结合实际操作得出的血的教训,说多了都是泪啊 !!!


    验证VCC接口

    至此,接口在无任何提示的情况下,我们仅使用万用表、放大镜、手电筒等“乞丐套装”找到了VCC、GND、RX、TX四个TTL调试接口,确定了TTL线序,是不是很省钱呐?

    总结

    通过上述的分析,可以总结出以下几个要点:

    1. IoT设备一般情况下都有调试接口

    有的明显,有的隐秘,需要花时间找到,也可以根据经验来判断,没有调试接口我们也要创造调试接口。

    2. VCC 是用来连接电源的接口,它在PCB板上电路线一般较粗

    3. RX和TX 需要与CPU 和Flash 芯片进行交互,会有连向CPU芯片的电路线一般较细

    4. GND 的确认方法有三种:

    1. 万用表蜂鸣档测量有蜂鸣声
    2. 万用表直流电压档测量接口有正值电压
    3. 万用表交流电压档测量接口读数为0

    举一反三

    现在来测试下学习的成果,拿到一个新的光猫板子来试一试

    纵观整个板子基本可以确认,右下角的五个接口为调试的TTL接口,再来具体分析


    笔者进行了标号,方便进行分析,如果想要确认结果可以与笔者联系,如果你有更好的判断方法,也可以与笔者联系交流。
    扫描下方二维码就可以找到笔者:

    结语&致谢

    笔者不是专科出身,有些专业术语描述不够准确,还望读者多多见谅,希望能与大家多多学习探讨。
    感谢@马良不厌其烦的指导,确实学到了不少硬件方面的知识。
    感谢某位不可说的领导,整篇文档编写花了一天,审核改正花了半天。

    参考信息

    WR2041N TTL,怎么输入TPL让它停住?

    http://www.right.com.cn/forum/thread-131357-1-1.html

    如何确定TTL线序

    http://www.chinadsl.net/forum.php?mod=viewthread&tid=80747

    仙果大佬。学习一下~
    使用道具 举报 回复
    果然IOT不容易啊
    使用道具 举报 回复
    发表于 2018-8-24 08:13:01
    GND的判断不用那么麻烦吧,你看几个触点中哪个与板子的保留铜箔相连,哪个就是GND,因为那种大面积的保留铜箔就是地线GND
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册