作者:仙果

原文来自:省钱版—-查找 IoT 设备TTL线序

省钱版----查找 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 设备TTL线序__未完待续的更多相关文章

  1. iOS开发——设备信息小结(未完待续...)

    1.获取设备的信息  UIDevice *device = [[UIDevice alloc] init]; NSString *name = device.name;       //获取设备所有者 ...

  2. 学_汇编语言_王爽版 要点采集笔记(未完待续…)

    第一章 基础知识 存储器(内存)存放CPU工作的指令和数据(CPU可以直接使用的信息在内存中存放):指令和数据都是二进制数没有任何区别,由CPU决定是数据还是指令 内存单元:存储器被分为若干个存储单元 ...

  3. qq面板(仿版,未完待续中。。。。)---2017-04-24

    主要实现效果: 1.点击对话,显示对话:点击联系人,显示联系人 2.在联系人界面: 实现好友列表的展开与折叠:(图12) 实现鼠标移到好友列表上的背景颜色的变化:(图3) 选中的好友背景颜色改变(图4 ...

  4. Reading | 《数字图像处理原理与实践(MATLAB版)》(未完待续)

    目录 一.前言 1.MATLAB or C++ 2.图像文件 文件头 调色板 像素数据 3.RGB颜色空间 原理 坐标表示 4.MATLAB中的图像文件 图像类型 image()函数 imshow() ...

  5. java线程详细版(未完待续)

    1. Java线程:概念与原理 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一 ...

  6. TFTP 1.68智能刷机全能版发布,TTL线在CFE模式解决BCM5357如斐讯FIR302B等产品变砖问题

    TFTP 智能刷机从发布以来一直受广大刷机朋友的喜爱,也有很多人一直加我的Q问如何刷机? 在这里我要告诉大家一下,由于机型种类繁多,建议有遇到问题,直接百度,有空的时候我能回答我尽量回答,其他的爱莫能 ...

  7. USB转TTL 下载线 线序定义

    产品名称:USB转TTL 下载线 长度       :1米 芯片       :PL2303HX.PL2303TA. 线序定义红+5V, 黑GND, 绿TXD,白RXD

  8. Remaiten-一个以路由器和IoT设备为目标的Linux bot

    Remaiten-一个以路由器和IoT设备为目标的Linux bot ESET的研究人员正在积极地检测以嵌入式系统为攻击目标的木马,受影响的有路由器,网关和无线访问点.近期,我们已经发现了一个相关的b ...

  9. Win10 IoT C#开发 5 - 操作 IoT 设备内嵌 SQLite 数据库 CURD

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 前几章我 ...

随机推荐

  1. Java几种常用JSON库性能比较

    本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能. 每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库.但是百闻不如一见,只有自己亲手测试过的才是最值得相信的. JSON ...

  2. statrc部分

    statrc部分 1. 如何使用 #- 在app中编写 stark.py #- 在stark.py中进行定制 #- 默认配置: #site.register(models.UserInfo) #- 自 ...

  3. Jenkins+Gradle+Git自动打apk包,并上传到ftp

    软件安装: 1.安装Jenkins.git.AndroidSDK 2.配置AndroidSDK环境变量 ANDROID_HOME:D:\Androidsdk PATH:%ANDROID_HOME%\p ...

  4. centos7.5 安装mysql8.0

    把这个rpm文件下载下来放到服务器上,或者在linux系统中通过wget命令下载 wget http://dev.mysql.com/get/mysql80-community-release-el7 ...

  5. Acceptance Test - Business Readable Acceptance Test using - Specflow

    Agenda Benefits Living document Frameworks specflow supports How to integrate it in development cycl ...

  6. TensorFlow升级到1.13

    win10下: 安装后import tensorflow出错:tensorflow/python/lib/core/bfloat16.cc:675] Check failed: PyBfloat16_ ...

  7. Beta冲刺吐槽&&获小黄衫心得

    引 个人感觉本次Beta冲刺最大的槽点还是--反向延长 "冲刺周期" 做的不一样很容易,做的更好才是非常困难的 遗留的问题 经历了Alpha冲刺,组内大多数同学也大都对实践感到些许 ...

  8. Runtime常用的几个场景

    1.给分类动态添加属性 在FDFullscreenPopGesture中给UIViewController的分类里有这么一个属性: @property (nonatomic, copy) _FDVie ...

  9. php常用字符串方法

    chop()        移除字符串右侧的空白字符或其他字符 ltrim()        移除字符串左侧的空白字符或其他字符 rtrim()        移除字符串右侧的空白字符或其他字符 tr ...

  10. 15. Life Cycle of the Products 产品的生命周期

    15. Life Cycle of the Products 产品的生命周期 (1) We can see how the product life cycle works by looking at ...