误将bootdelay设为0的解决方法

本文介绍了如何在U-Boot源码中修改abortboot_normal函数以暂时中断自动启动流程并进入命令行,以及如何恢复原设置。特别适用于bootcmd配置中内核通过emmc或nand启动且bootdelay为0的情况。

1、进入/uboot源码/common/

2、找到autoboot.c文件,打开

3、找到static int abortboot_normal(int bootdelay){}函数,

      在unsigned long ts;的下一行,添加 return 1;

      保存退出

4、重新编译,下载到内存卡。

启动uboot后,会自动进入命令行

setenv bootdelay 3

saveenv

再回去把刚才添加的那行删掉,重新编译下载即可。

Tips:适用于bootcmd中已经设置了由emmc或nand启动内核,同时将bootdelay设置为0,无法通过键盘进入uboot控制台的小方法~

### 修改RK3588平台的bootdelay参数 在RK3588平台上修改`bootdelay`参数,可以通过调整U-Boot源码中的相关配置实现。具体操作如下: #### 1. 修改U-Boot源码中的Kconfig文件 在U-Boot源码中,`bootdelay`参数的定义位于`uboot/common/Kconfig`文件中。需要编辑该文件以设置合适的延迟时间。例如,将`bootdelay`设置为3秒: ```c config BOOTDELAY int "delay in seconds before automatically booting" default 3 depends on AUTOBOOT help Delay before automatically running bootcmd; set to 0 to autoboot with no delay, but you can stop it by key input. set to -1 to disable autoboot. set to -2 to autoboot with no delay and not check for abort. See doc/README.autoboot for details. ``` 此段代码中,`default 3`表示启动延迟时间为3秒[^2]。 #### 2. 配置编译选项 在完成`Kconfig`文件的修改后,需要重新配置U-Boot的编译选项。确保`CONFIG_BOOTDELAY`被正确启用并应用新的默认值。可以通过以下命令进行配置和编译: ```bash make rk3588_defconfig make ``` #### 3. 使用环境变量动态调整 如果不想修改源码,也可以通过U-Boot命令行动态调整`bootdelay`参数。进入U-Boot命令行后,使用以下命令设置`bootdelay`: ```bash setenv bootdelay 3 saveenv ``` 上述命令将`bootdelay`设置为3秒,并保存到环境变量中[^4]。 #### 4. 检查修改效果 重新烧录修改后的U-Boot镜像或重启设备后,进入U-Boot阶段观察是否生效。如果设置正确,系统将在指定的延迟时间后自动启动内核。 ### 注意事项 - 如果将`bootdelay`设置为`0`,则系统会立即启动,但仍可通过按键中断启动过程。 - 如果将`bootdelay`设置为`-1`,则自动启动功能将被禁用,需手动输入命令启动系统[^2]。 ```python # 示例:动态调整bootdelay参数 def set_bootdelay(bootdelay_value): command = f"setenv bootdelay {bootdelay_value}; saveenv" return command print(set_bootdelay(3)) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值