我正在尝试使用命令修改u-boot环境参数setenv
。
当我bootcmd tftpboot 0x80800000 192.168.2.2:uImage2; bootm
使用bootm
指定的配置时,uboot开始加载Linux内核,但我无法使用saveenv
.
当我配置时,我可以使用bootcmd
saveenvbootm
保存参数,但随后 uboot 无法加载内核,我得到以下日志
T T T T T T #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
##########
done
Bytes transferred = 2378156 (2449ac hex)
Unauthorized >
我可以通过运行直接加载内核bootm
。
答案1
我假设您在 u-boot 命令行中调用它。
bootcmd tftpboot 0x80800000 192.168.2.2:uImage2; bootm
这里重要的注意事项是分号是命令分隔符。一个简单的修复(未经测试)将在 bootm 命令之前添加命令 saveenv 。
bootcmd tftpboot 0x80800000 192.168.2.2:uImage2; saveenv; bootm
这将设置变量启动命令至:tftpboot 0x80800000 192.168.2.2:uImage2
然后保存环境将保存变量
然后布特姆将启动内存中的映像。
你会不是每次启动时都需要执行此操作如果对启动顺序感到满意后保存变量。
首先为您的设置设置所有 u-boot 变量。(仅作为示例。根据您的设置进行调整)
- setenv 自动启动 是
- setenv 启动文件 uImage2
- setenv ipaddr 192.168.2.2
- 设置环境服务器IP 192.168.2.X
- setenv bootcmd tftpboot 0x80800000 192.168.2.2:uImage2
或者
- setenv bootcmd bootp 0x80800000 uImage2
将 u-boot 变量保存到持久介质
saveenv
通过运行 bootcmd 测试启动选项
run bootcmd
重复此操作,直到变量设置正确且 bootcmd 正常工作。
如果 U-Boot 在 bootdelay 中建立的延迟后没有中断,则自动启动过程将发生。自动启动包括运行 bootcmd 环境变量中指定的内容
一些系统变量:
- 启动命令:定义初始倒计时不被中断时自动执行的命令字符串。仅当 bootdelay 变量也被定义时才执行。
- 自动加载:如果设置为“no”(或任何以“n”开头的字符串),rarpboot、bootp 或 dhcp 命令将从 BOOTP/DHCP 服务器执行配置查找,但不会尝试使用 TFTP 加载任何映像。
- 自动启动:如果设置为“yes”,则自动启动使用 rarpboot、bootp、dhcp 或 tftpboot 命令加载的映像(通过内部调用 bootm 命令)。
- bootfile:使用 TFTP 加载的默认映像的名称。
答案2
bootcmd tftpboot 0x80800000 192.168.2.2:uImage2; saveenv; bootm
我通过在后面添加双引号成功保存了整个命令bootcmd
setenv bootcmd "tftpboot 0x80800000 192.168.2.2:uImage2; bootm"