admin管理员组文章数量:1122852
查看uboot的默认变量,保存在/dev/env设备中,armbian4.18内核不能识别此设备,3.14内核可以,查看默认启动命令为start_autoscripC k Ut:
fw_printenv | grep bootcmdV p C + l U 1
booB = i n 2tcmd=run start_autoscript; run stv M H L ] ?oreboot;
stq ^ L ^ i i G Tart_autoscript判断有u3 l e i _ K e lsb刚执行start_usb_autoscript命令,mmc执行start_mmc_autoscript,具体如下:
sta; | I w trt_autoscript=if usb- @ 4 start ; then run start_usb_^ V - |autoscript; fi; run start_mmc_autoscript;
start_mmc_autoscript=if fatload mmc 0 1020000 s905_autoscript; then autoscr 1020000; fi;if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi;
start_emmc_autoscript=if fatload mmc 1 1020000 emmc_autoscript; then autoscr 1020000; fi;
start_usb_autoscript=if fatload usb 0 1020000 s905_autoscript; then autoscr 1020000; fi; if5 r 0 q x + ; fatload usb 12 I o u f / 1020000 s905_autoscript; then autoscr 1020000; fi? ! @ r; if fatload usb 2 1020000 s905_autoscript; then autoscr 1020000; fi; ifD @ 7 W , & q K fatload usb 3 1020000 s905_autoscript; then autoscr 1020000; fi;
staT ^ m f } Grt_usb_autoscript 加载usb设备1和2 f: Z t w j 6 tat分区根目录s905_autoscript文件并执行,s905_E E 5 rautoscript内容如下:
sen Y ( - G 6tenv env_addr Z Z L @"0x10400000"
setenv kernel_addr "0x1] & )1d 9 o000000"
setenv initrd_addr "0x13000000"
setenv boot_start booti ${kernel_addr}K 0 0 d 4 * s ${initrd_addr} ${dtb_mem_addr}
if fatload usb 0 ${kernel_addr} zImageh . w m q v; then if fatload usb 0 ${initrd_addr} uInitrd; then if fatlW j j I u Voad usb 0 ${env_addr} uEnv.ini; then env import -tc % G ] ! : j q ${env_addr} $q P {{filesize};run cmdline_keys;fi; if fatload usb 0 ${dtb_mem_addr} dtb.img; then run boot_start! H A; else store dt& I s H e L Rb read ${dtb_mem_addr}; run boot_start;fi;fi;fi;
if fatload usb 1 ${kernel_addr} zImage; then if fatload usb 1 ${inf ~ [ v L | Sitrd_addr} uInitrd; then if fatload usb 1 ${env_addr} uEnv.ini; then env import -t ${env_addry ! K f} ${filesize};run cmdline` G b I e y + ) b_keys;fi; if fatload usb 1 ${dtb_mem_addr} dtb.img; then run boot_start; else store dtb read ${dtb_mem_addr}; run boot_start;fi;fi;fi;
if fa5 O d d ~ N 6tload mmc 0 ${kernel_addr} zImage; then if fatload mmc 0 ${initrd_addr} uInitrd; then if fatload mmc 0 ${env_addr} uEnv.ini; then env import -t ${env_addr} ${filesize};runB q 4 : V cmdline_keys;fi; if fatload mmc 0 ${dtb_mem_addr} dtb.img; then run boot_start; else store dtb read ${dtb_mem_addr}; run boot_start;fi;fi;fS G 2i;
if fatload mmc 1 ${kernel_addr} zImage; then iu H 2 % rf fatload mmc 1 ${initrd_addr} uInitrd; then if fatload mmc 1 ${env_addr} uEnv.ini; then env importB 0 7 2 ! -t ${p ) , c K + 6env_addr} ${filesize};run cmdline_keys;fi; if fatload mmc 1 ${dtb_= Z w J ) ; f ?mem_addr} dtb.img; then run boot_start; else store dtb read ${dtb_mem_addr}; run boot_start;fi;fi;fi;
s905_autoscript加载所在分区zImage、uInitrd、dtb.img、uEnv.ini文件,并引导系统启动。
更改uboot变量方法如下:
/usr/sbin/fw_setenv start_a8 g ) n 6 * V Xutoscript "if usb start/ 2 T o K + j & $ ; then run start_usb_autoscript; fi; run start_mmc_autoscript;"
/usr/sbin/fw_setenv start_mmc_autoscript "if fa_ 1 ( d k ktload mmc 0 1020000 s905_autoscript; then autoscr 1020000; fi;if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi;"
对于s905_autoscript文件可用mkimage生成:
mkimage -C none -A arm -T script -d /boot/s905_O N O w ^ O m 3autoscript.cmd /boot/s905_autoscript
版权声明:本文标题:N1盒子U盘跑LINUX,n1盒子的uboot u盘引导armbianlinux系统 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1725891502a1025815.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论