本文主要针对于在Uboot下如何设置自启动的问题
一:Uboot原先的环境变量贴出:
|
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
|
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_len为0,但是说明其已经启动
关于Bootcmd的相关信息可以从百度获取,在这主要说明其开机后默认是执行Bootcmd命令的。
思路是:将所有的命令保存到一个环境变量中(这里是bootrtos),然后通过run命令执行这个环境变量(runbootrtos)看是否能够执行,若能执行说明OK,若不能命令出错;然后将run命令集合也添加到bootcmd中,注意这里的ifelse语句。开机重启OK
本文详细介绍如何在Uboot环境下设置自启动。首先展示了原始的Uboot环境变量,接着提供了自启动所需的代码,并逐步指导如何修改环境变量以实现特定代码的自启动。最后验证了自启动设置的有效性。

1664

被折叠的 条评论
为什么被折叠?



