移植了uboot之后,尝试着用tftp加载uImage和dtb到SDRAM,并启动,但是呢,可以加载,然而总是很慢而且打印很多报错信息
主要是
EHCI timed out on TD - token=0x8008d80
Rx:failed to receive:-5
一开始我以为是uboot中dm9601网卡驱动的问题,然后一直在研究跳转其时序参数(我以为是没初始化好),后来改了发现有一些效果,但是依然很慢。
直到今天,我用ubuntu20.04试着用tftp加载内核和dtb,才发现原来是tftp版本的问题。
我常用的是ubuntu12.04,因为一堆环境问题,没有用新的,连tftp装的也是基于xinetd网络管理的tftp,和tftp-server。
用这个版本的tftp,同uboot的tftp进行加载内核和dtb就会产生如上图的报错(虽然还是会加载成功,能成功启动,但是很慢而且一堆报错打印信息)
下面卸载掉这个版本的tftp,并且下载另一版本的tftp,再重新配置网络就行了。
卸载tftp:
apt-get autoremove tftp
apt-get autoremove tftpd
apt-get autoremove xinetd
安装新tftp:
sudo apt-get install tftpd-hpa
sudo apt-get install tftp-hpa
配置tftp:
sudo vim /etc/default/tftpd-hpa
按如下配置
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/tftpboot/"#这个是tftp服务端目录
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
配置新tftp参考:Linux 安装配置 tftp 服务器 - 浇筑菜鸟 - 博客园 (cnblogs.com)
给予tftp服务端目录权限:
chmod 777 /var/tftpboot/
重启tftp:
sudo service tftpd-hpa restart
做到这一步可以尝试用tftp测试了 :
tftp 127.0.0.1 #连接服务器
get a.txt #获取a.txt
put b.txt #上传b.txt
q #断开连接
如果还不行,那就是需要再配置一遍网络,再重复上面的操作
1.删除所有网络设置:
rm -rf /etc/NetworkManager /system-connections/*
2.重启网络服务:
service network-manager restart
3.设置默认网络配置
dpkg-reconfigure network-manager
接下来就可以看到,uboot使用tftp加载uImage和dtb文件很快了!基本没有延迟,也没有报错打印。
完.