在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線序,恨不得把調試接口隱藏的越深越好,也是為了保護設備不會被黑掉,這點也要理解設備廠商。筆者的目標是分析和調試固件,就要與廠商對著幹,找到設備廠商隱藏的調試接口。
拿到一個IoT設備板子,首先要找到有可能是調試接口的地方,尋找調試接口的依據主要有2點:一:一般而言,IoT設備板子上有規律的並排連續的接口就是調試的接口,有些接口的特徵是並排連續的接口突出出來可以直接連接杜邦線的,比如上節圖中的調試接口,有些接口的特徵是中空的圓點,更有的是已經被焊死的調試接點,這些需要我們仔細觀察;二是,調試接口RX和TX都要與CPU晶片進行交互。通過這兩點就可以大致地判斷出調試接口的位置。
下面就以一款TP_Link的路由器為例分析。
如下圖所示:
按照上述的判斷依據,先尋找有規律的連續並排的接口,可以發現上圖左下中部和右上都可能是調試的TTL接口。
依據上述第二點進行分析,觀察兩個紅框處的線路走向,我們知道,調試接口RX和TX分別表示接收和發送,這兩個接口需要與CPU晶片進行交互,這就要保證與CPU 晶片在電路上相通才行。基於此理論,我們觀察一下這兩個懷疑是調試接口的地方。
右上部分線路走向
左下部分線路走向
右上紅框部分只有一個接口連接了線路,電路走向並沒有連接到 CPU 晶片,而左下紅框部分有兩個接口有線路連接到 CPU 晶片,基於此基本可以斷定左下部分就是調試接口。
確定了調試接口之後,接下來就是要找到GND、RX、TX等具體的TTL線序,這時萬用表就該登場啦!筆者使用的萬用表的型號是UNI-T UT70B,大家測試的時候需要注意根據自己的萬用表進行適當的調整。
使用萬用表的第一步就是要確保萬用表是可以正常工作的,也就是校表。首先將萬用表的紅黑表線插到相對應的位置,將萬用表調整到歐姆檔,然後將萬用表的紅黑表筆對接,如果萬用表有數值(很小,可以忽略不計),這就說明萬用表可以正常工作。確認萬用表可以正常工作後,將萬用表調整到通斷檔位,也叫蜂鳴檔,如下圖所示,將黑色表筆接到IoT設備板子上的電路接口上固定不動,紅色表筆依次在四個接口上進行通斷測試,如果萬用表有蜂鳴聲,我們就可以判斷此接口是GND接口。經過筆者測試,圖中第二個接口為GND接口。此為第一種方法。
萬用表-通斷性檔位
左起第二個為GND
第二種方法:路由器通電之後,將萬用表調整到電壓檔位,紅黑表筆按照第一種方法進行測量,如果萬用表的讀數為0 ,由此可以判斷接口為GND,如下圖所示:
GND接口的萬用表測量電壓讀數為0
第三個方法:同樣將萬用表調整到電壓檔位,紅黑表筆任選兩個接口進行觸探,萬用表顯示有電壓值,並且電壓為正的時候,紅色表筆測量的接口VCC,黑色表筆測量的接口為GND。
「調試接口」章節中已經確認路由器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 的確認方法有三種:萬用表蜂鳴檔測量有蜂鳴聲
萬用表直流電壓檔測量接口有正值電壓
萬用表交流電壓檔測量接口讀數為0
現在來測試下學習的成果,拿到一個新的光貓板子來試一試:
縱觀整個板子基本可以確認,右下角的五個接口為調試的TTL接口,再來具體分析
筆者進行了標號,方便進行分析,如果想要確認結果可以與筆者聯繫,如果你有更好的判斷方法,也可以與筆者聯繫交流。
筆者不是專科出身,有些專業術語描述不夠準確,還望讀者多多見諒,希望能與大家多多學習探討。
感謝@馬良不厭其煩的指導,確實學到了不少硬體方面的知識。
感謝某位不可說的領導,整篇文檔編寫花了一天,審核改正花了半天。
bbs.pediy.com/user-162756
本文由看雪論壇 仙果 原創
轉載請註明來自看雪社區
熱門技術文章推薦: