u-boot 超时后不重试
u-boot not retrying after timeout
我将 u-boot 配置为使用 tftpboot 通过以太网抓取 linux 图像。如果外部设备上的 tftp 服务器已经设置并且 运行,一切正常。但是,如果我的设备在服务器准备就绪之前开机,它将超时。一旦超时,将不再尝试连接服务器获取文件。:
Filename 'image.ub'.
Load address: 0x10000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Zynq>
尽管它显示 "starting again",但实际上并没有重新启动。一旦服务器最终准备就绪,就没有通信来获取 linux 图像。注意我可以用串口手动重启tftpboot,但是我需要它自动重试
是否有一些选项可以让重试真正发生?这里是一些环境变量:
> echo $default_bootcmd
run uenvboot; run cp_kernel2ram && bootm 0x10000000; run netboot
> echo $netboot
tftpboot ${netstart} ${kernel_img} && bootm
> echo $uenvboot
if run sd_uEnvtxt_existence_test; then run loadbootenv; echo Loaded environment from ${bootenv}; run importbootenv; fi; if test -n $uenvcmd; then echo Running uenvcmd ...; run uenvcmd; fi
U-Boot输出的最后一条消息,
Retry count exceeded; starting again
源自 tftp_timeout_handler() and restart(), which then calls net_start_again()。
Is there some option that will make a retry actually occur?
U-Boot例程net_start_again()表示环境变量netretry
决定局部变量retrycnt
和retry_forever
。
尝试用值 yes
定义环境变量 netretry
,即
setenv netretry yes
当环境中不存在变量 netretry
时,代码指示不会尝试重试(根据此 patch),如您所见。
我将 u-boot 配置为使用 tftpboot 通过以太网抓取 linux 图像。如果外部设备上的 tftp 服务器已经设置并且 运行,一切正常。但是,如果我的设备在服务器准备就绪之前开机,它将超时。一旦超时,将不再尝试连接服务器获取文件。:
Filename 'image.ub'.
Load address: 0x10000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Zynq>
尽管它显示 "starting again",但实际上并没有重新启动。一旦服务器最终准备就绪,就没有通信来获取 linux 图像。注意我可以用串口手动重启tftpboot,但是我需要它自动重试
是否有一些选项可以让重试真正发生?这里是一些环境变量:
> echo $default_bootcmd
run uenvboot; run cp_kernel2ram && bootm 0x10000000; run netboot
> echo $netboot
tftpboot ${netstart} ${kernel_img} && bootm
> echo $uenvboot
if run sd_uEnvtxt_existence_test; then run loadbootenv; echo Loaded environment from ${bootenv}; run importbootenv; fi; if test -n $uenvcmd; then echo Running uenvcmd ...; run uenvcmd; fi
U-Boot输出的最后一条消息,
Retry count exceeded; starting again
源自 tftp_timeout_handler() and restart(), which then calls net_start_again()。
Is there some option that will make a retry actually occur?
U-Boot例程net_start_again()表示环境变量netretry
决定局部变量retrycnt
和retry_forever
。
尝试用值 yes
定义环境变量 netretry
,即
setenv netretry yes
当环境中不存在变量 netretry
时,代码指示不会尝试重试(根据此 patch),如您所见。