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上浪费很长时间(也算是为了学一下)
其实回头想来,虚焊不太可能,只有经过碰撞后才会导致脱焊
结论:下雨湿气过大与灰与水混合形成导体影响了芯片初始化