1.前言
前倆天突然下大雨了,大雨過后我也迎來斷網時刻,經過簡單排查發現是網絡的網橋這條線路無法連通。
猜測1 可能是網線損壞,2 網橋損壞
2.拆解
經過測試網線設備后發現是網橋的問題,嘗試reset發現無反應(正常情況重置成功后燈會全部亮起),拆機看看:
正好有串口位置:
接上串口試試,波特率為:57600
啟動后發現
這一步之后就無反應了,說明初始化就失敗了,導致reset也無法成功執行。
3.懷疑固件損壞(硬件損壞我也搞不了)
嘗試使用tftp 傳一個官方新固件,順便也學習了一些tftp如何使用
原理:網橋作為客戶端與電腦進行直連(這里需要對電腦設置靜態ip地址,網關可以直接指定待升級設備的ip),電腦上運行一個server,并存放相應固件
ubuntu安裝 tftp server
sudo apt install tftp tftpd-hpa
配置文件 /etc/default/tftpd-hpa
:
tftpd-hpa
# /etc/default/tftpd-hpaTFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
什么也不用修改,固件存放路徑為 /srv/tftp
重啟tftp服務
service tftpd-hpa start
在啟動后快速不斷按1
這里使用臨時測試固件是否可以使用,不會寫入到flash中,在內存中運行
device ip為 待升級設備ip
server ip為電腦設置的靜態ip
linux kernel filename 就是 放的固件名字,不輸入默認為 test.bin
鼓搗了3,4個小時,不過 遺憾 嘗試升級了幾次官方的固件,但是都沒法啟動,也嘗試了openwrt等固件
這時候我已經傾向是硬件故障了,回頭研究錯誤
4. 柳暗花明
我開始回頭研究之前的報錯
日志中的關鍵信息解讀如下:First phase! the return iniString=rai!:這表明系統開始嘗試初始化一個名為 "rai" 的設備。這通常代表的是路由器的 2.4GHz 無線模塊(MediaTek/Ralink芯片的驅動中常用此名稱)。關鍵錯誤參數:csrAddr=0x7fffffff! 和 csr_addr = 0x0x0CSR 是 控制與狀態寄存器 的縮寫。它是CPU與外部設備(如網卡、聲卡)進行通信的“窗口”或“地址”。一個有效的、正常的 csrAddr 應該是一個具體的物理地址值。0x7fffffff 和 0x0 都是典型的非法或無效地址值。這明確表示:CPU無法通過PCIe總線正確讀取到無線芯片的寄存器地址。后續結果:系統雖然為驅動分配了內存(pAd = 0x8064b760, size = 938136),但在嘗試初始化PCIe設備(RTMPInitPCIeDevice)時,無法與芯片建立有效通信,導致啟動過程卡住或失敗。根本原因
這種情況絕大多數是由硬件問題引起的:Wi-Fi芯片虛焊或損壞:這是最可能的原因。路由器長時間工作發熱,冷卻后又收縮,反復的熱脹冷縮可能導致BGA封裝的芯片焊點出現裂紋,從而斷開連接。或者芯片本身因過熱、電壓不穩等原因損壞。PCB板或線路問題:連接CPU和Wi-Fi芯片的電路可能出現斷路。極低概率的軟件問題:如果這是在升級固件后第一次啟動時發生的,有可能是固件不兼容或刷寫過程出錯,但根據日志信息,硬件問題的可能性遠大于軟件問題。
AI是真的好用。
總結下來就是網絡設備倆個芯片的問題,那么首先排查一些是否虛焊
在啟動時用力按壓倆個芯片,看看報錯是否能消失,遺憾的是問題依舊
最后賭一把,玄學的灰電平衡,用洗板水洗了一下倆個芯片周圍:
成功發現之前沒出現的日志,看來通過了之前的卡點,嘗試reset, 成功!
5. 總結
在tftp上浪費很長時間(也算是為了學一下)
其實回頭想來,虛焊不太可能,只有經過碰撞后才會導致脫焊
結論:下雨濕氣過大與灰與水混合形成導體影響了芯片初始化