作者:仙果

原文来自:省钱版—-查找 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. python、java读数据

    python从txt文档中读数据有个特别神奇的函数 可以把txt文档中的数据直接读取成python数组 java用Scanner类读数据比较方便

  2. centos 安装nvm和node.js

    #安装githubyum install git -y #下载nvmgit clone git://github.com/creationix/nvm.git ~/nvm #设置nvm 自动运行;ec ...

  3. Python第十六天 类的实例化

    首先 , 先定义一个 简单的 Person 类 class Person: head = 1 ear = 2 def eat(self): print('吃饭') 关于什么是类, 定义类, 类对象,类 ...

  4. dotnet 在build restore publish 的时候不显示警告

    dotnet restore -nowarn:msb3202,nu1503,cs1591 dotnet build -nowarn:msb3202,nu1503,cs1591 --no-restore ...

  5. STS中poem.xml配置文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. SystemUI中监听app启动,修改app中的状态栏背景色

    参考 http://www.2cto.com/kf/201206/137225.html 从Android4.4开始,app可以自定义status bar 背景. 对于一些第三方app定义的状态栏背景 ...

  7. reactjs 学习笔记

    1.安装 npm install -g create-react-app create-react-app my-app cd my-app npm start

  8. XBee PRO 900HP远距离无线模块

    XBee PRO S3B也称为XBee-900HP无线模块,它是一款工作在频段900~928MHz之间,基于FHSS跳频技术的远距离无线数传电台核心模块.常用型号如下: 类别 型号 开发套件 XKB9 ...

  9. windows环境下wamp安装redis拓展

    环境: wamp集成环境 安装分为两部 1.安装redis客户端   https://github.com/ServiceStack/redis-windows/raw/master/download ...

  10. CoUninitialize引发的一个错误

    程序开始已使用CoUninitialize,后边的函数又再次调用CoUninitialize,判断返回值,导致函数提前退出返回异常.