关于Uboot自启动的问题方案解决

本文主要针对于在Uboot下如何设置自启动的问题

一:Uboot原先的环境变量贴出:

=> print

bootcmd=mmc dev2;mmc dev 2 ;if mmc rescan; then if run loadbootscript; then runbootscript; else if run loadimage; then run mmcboot; else runnetboot; fi; fi; else run netboot;fi

二:需要自启动的代码:

setenv fdt_file zImage-imx6sx-sdb-m4.dtb

fatload mmc 2:1 0x80000000 XCU.bin

dcache flush

cp.b 0x80000000 0x7F8000 0x8000

dcache flush

setenv mmcargs "setenv bootargs uart_from_oscconsole=${console},${baudrate} root=${mmcroot}"

bootaux 0x7F8000

三:uboot环境变量设置

=> setenv fdt_filezImage-imx6sx-sdb-m4.dtb

=>setenv mmcargs "setenvbootargs uart_from_osc console=${console},${baudrate}root=${mmcroot}"


=>setenv bootrtos "fatloadmmc 2:1 0x80000000 XCU.bin;dcache flush;cp.b 0x80000000 0x7F80000x8000;dcache flush;bootaux 0x7F8000"

=> setenv bootcmd "mmcdev 2;mmc dev 2 ;run bootrtos ; if mmc rescan; then if runloadbootscript; then run bootscript; else if run loadimage; thenrun mmcboot; else run netboot; fi; fi; else run netboot;fi"


=> saveenv

三:重新进入Uboot

=> print

bootcmd=mmc dev 2;mmc dev 2 ;run bootrtos ;if mmc rescan; thenif run loadbootscript; then run bootscript; else if run loadimage;then run mmcboot; else run netboot; fi; fi; else run netboot;fi

bootrtos = fatloadmmc 2:1 0x80000000 XCU.bin;dcache flush;cp.b 0x80000000 0x7F80000x8000;dcache flush;bootaux 0x7F8000

四:重启(不进入uboot环境)

RTOS端的信息打印出来看是否启动


解释:由于未连接CAN数据发送设备,所以其Send_len0,但是说明其已经启动

关于Bootcmd的相关信息可以从百度获取,在这主要说明其开机后默认是执行Bootcmd命令的。

思路是:将所有的命令保存到一个环境变量中(这里是bootrtos),然后通过run命令执行这个环境变量(runbootrtos)看是否能够执行,若能执行说明OK,若不能命令出错;然后将run命令集合也添加到bootcmd中,注意这里的ifelse语句。开机重启OK

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值