问题记录:在uboot中配置网络后无法ping通服务器(host 192.168.1.111 is not alive)以及通过tftp协议挂载内核和设备树获取内核失败

项目场景:

  最近在帮人复刻智能家居项目,进行到在uboot中配置网络并通过tftp挂载内核和设备树的时候,碰到了一些问题,在此进行记录


问题一描述:host 192.168.1.111 is not alive

  进入uboot界面以后,我按照如下配置网络,很奇怪,一开始其实是可以ping通ubuntu服务器的,如下所示。

=> setenv ipaddr 192.168.1.112
=> setenv ethaddr 00:04:9F:04:D2:35
=> setenv gatewayip 192.168.1.1
=> setenv netmask 255.255.255.0
=> setenv serverip 192.168.1.111
=> saveenv
Saving Environment to MMC...
Writing to MMC(1)... done
=> ping 192.168.1.111
FEC1 Waiting for PHY auto negotiation to complete.... done
Using FEC1 device

Abort
ping failed; host 192.168.1.111 is not alive
=>
=>
=>
=> ping 192.168.1.111
Using FEC1 device
host 192.168.1.111 is alive

  但后面就不行,一直显示的是这样。

=> ping 192.168.1.111
No ethernet found.
ping failed; host 192.168.1.111 is not alive

解决方案:

  搜索了一下,发现有这种解法setenv ethact FEC1,我对比之前成功可以ping通的代码,发现它在ping的时候,打印了一句Using FEC1 device,但我现在不断重新去ping是没有这段话的。重新试看一下,发现成功了。我又搜索了一下,在U-Boot中,FEC1 是 i.MX系列处理器中的以太网控制器硬件模块(Fast Ethernet Controller),通常对应开发板上的第一个以太网接口。我这样需要显式指定 ethact=FEC1才恢复的原因通常与 U-Boot 的网络接口动态选择机制硬件/驱动的不稳定行为 相关,意思是说在多个FEC中选错了或者是PHY芯片(叫啥物理层芯片)或者控制器间歇性失效
  下次碰到这样的问题,我觉得我可以这样去理解,No ethernet found,没有自动找到ethernet,那我就需要手动给他指定ethernet,所以就使用setenv ethact FEC1这个去指定

问题二描述:Loading: #error frame: 0x9ef548c0 0x00000810

  解决了问题一的网络问题,就出现了问题二,如下所示,这个问题的描述是帧传输的问题

=> tftp 80800000 zImage
Using FEC1 device
TFTP from server 192.168.1.111; our IP address is 192.168.1.112
Filename 'zImage'.
Load address: 0x80800000
Loading: #error frame: 0x9ef548c0 0x00000810
T error frame: 0x9ef548c0 0x00000810
T error frame: 0x9ef54900 0x00000810

解决方案:

  确定网络没有出现问题,尝试在uboot中修改块大小,重新执行,成功了。

setenv tftpblocksize 512
saveenv
tftp 80800000 zImage

  搜索了一下,调整TFTP块大小后问题得以解决,主要与网络数据包分片限制和TFTP协议实现兼容性相关。默认块大小比较大,那就需要分包,比较容易出现问题。将默认块,调小,则无需分包,就比较不会出现问题。

QCA9533可以刷入U-Boot系统,并且有专门为其设计的U-Boot固件资源,可支持路由器升级优化。该固件自带U-BOOT控制台,方便进行MAC地址设置、WPS PIN码配置及软件升级等操作。不过,适用于TP - LINK_WR842N_Ver4.0等路由器时,需更换Flash为4M或更大容量。刷机后可过WEB界面轻松设置路由器,默认访问地址为192.168.1.253,升级需在U - BOOT控制台内完成,以确保安全可靠 [^1]。 关于编程方法,在U-Boot模式下对QCA9533进行操作,若U-Boot支持spi/qspi flash,可使用sf的erase、read、write命令操作spi flash: - `sf read`:用来读取flash数据到内存。 - `sf write`:写内存数据到flash。 - `sf erase`:擦除指定位置、指定长度的flash内容,擦除后内容全为1。 以下是在U-Boot模式下备份文件的示例代码: 备份uboot文件: ```plaintext # 设置环境变量 setenv serverip 192.168.230.111 setenv ipaddr 192.168.230.124 ping 192.168.230.111 # (host 192.168.230.111 is alive 说明网络已经) # 将要备份flash数据读入内存中 sf probe 0 sf read 82000000 0 100000 # 第一个参数82000000:存放在内存的起始地址 # 第二个参数0:flash起始地址 # 第三个参数100000:flash数据长度 # 从指定内存中上传文件到tftp服务器 (需要在Windows上安装tftp工具) tftp 82000000 uboot.bin 100000 ``` 备份内核文件: ```plaintext # 设置环境变量 setenv serverip 192.168.230.111 setenv ipaddr 192.168.230.124 ping 192.168.230.111 # 将要备份flash数据读入内存中 sf probe 0 sf read 82000000 100000 400000 # 从指定内存中上传文件到tftp服务器 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值