N1盒子U盘跑LINUX,n1盒子的uboot u盘引导armbian/linux系统

编程知识 更新时间:2023-04-27 06:37:01

查看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盘引导armbian/linux系统

本文发布于:2023-04-20 14:02:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/355993f92b9ba5955442d3c99da7d314.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:盒子   系统   LINUX   盘跑   armbian

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 90274文章数
  • 23313阅读数
  • 0评论数