找回密码
 注册
关于网站域名变更的通知
查看: 68|回复: 0
打印 上一主题 下一主题

U-Boot启动参数分析

[复制链接]
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
     楼主| 发表于 2024-7-3 14:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    1 U-Boot-2016.05 版本适用性说明$ B7 V. Q$ s! j) @# I
    表 1, `7 N0 g$ q1 I1 M" R

    * e" c4 m0 h4 t6 z7 R1 ~
    . ]! u8 b4 O: U6 x
    ( d' I# o/ z+ b. k/ G# y
    2 U-Boot 启动参数详解
    + I; Z% s/ g% g, A/ X' [系统启动时,快速按任意键进入 U-Boot 命令行,执行 printenv 命令即可看到 U-Boot 的所有启动参数,若使用默认参数则类似如下。以下为 AM57x 平台 U-Boot-2016.05 版本 U-Boot 启动参数详解:; [; ~) G* W0 ~/ l  g+ |4 j+ `

    ! ^# _) C/ Y9 g/ X

    2 O/ {7 v! o/ I3 {5 H! d; N  M, A+ s, A5 U6 I" G" ]
    # R' G  q6 V7 B2 x: G

    : T7 P. ]9 o# t# _若检测到 SD 卡已插入,则加载 SD 卡 boot 分区中的 zImage 内核镜像和 rootfs 分区文件系统;若没有检测到 SD 卡插入,从 eMMC 启动系统。以下为 U-Boot 启动参数解析:: u7 i1 Y; p4 g  T& j) ~
    ! f) ?; C& U6 w" C* E
    /*芯片架构为 ARM*/
    6 j7 O9 A6 N! Z$ _1 T8 H$ r3 [* k8 E
    : r3 O9 A2 Z3 Q9 z- _/ V# Iarch=arm
    - F7 |& [9 C+ Y4 c0 e, B$ E& H% |, `/ Q: \5 L; `
    /*MMC 启动参数*/) a8 {" G" o5 r6 L" X
    / S3 ^9 b$ J( j( N8 Y
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}) j. E, e6 H# h/ p$ ^- g. l; U  w3 q
    , ?9 ~& H) Q  N
    args_usb=setenv bootargs rootfstype=${usbrootfstype} root=${usbroot} rw console=${console} ${optargs};
    2 b1 R, M  o% e0 x1 g
    " m2 R1 l+ `" B# y$ l/*串口控制台波特率为 115200*/
    4 ~6 l+ |. I' `$ Z; x
    6 G$ X' b5 j/ m0 [; Hbaudrate=115200! x: P& n: H$ }! ^% O- Y% I2 z

    3 D( F& j* ?; j6 q% c/*板卡平台为 AM57xx*/' \' l# B, D5 T: ]& j3 t+ z
    2 f  p8 |( E; e; M: @* O9 I. ]
    board=am57xx+ y; j$ Q9 H1 U, p. J* {
    % y& H  h& W4 [; q% ?
    /*板卡模板型号为 am57xx_evm_reva3*/
    + ?% g, w8 t$ D9 z. y
    % G: m. c, w/ Z' Q$ P) }board_name=am57xx_evm_reva37 `0 @9 k% g4 g# C: d( c  p

    7 M$ }% s0 O- j' U, z6 c/*U-Boot 入口命令 bootcmd。bootcmd 命令会在出现”Hit any key to stop autoboot”提示后执行。如果不按任意键,bootcmd 命令会上电自动运行,按任意键则进入 U-Boot 命令行。系统启动时,会先判断环境变量 dofastboot 是否为 1,若为 1,则执行 fastboot 命令。当 dofastboot 设置为 0 时,系统会采用默认的 U-Boot 环境变量,并运行 run mmcboot*/
    : V7 x8 s" [% d, n( r( U( v( x4 z  O, L. J. R  p+ u) o  ^
    bootcmd=if test ${dofastboot} -eq 1; then echo Boot fastboot requested, resetting dofastboot ...;setenv dofastboot 0; saveenv;echo Booting into fastboot ...; fastboot 0;fi;run findfdt; run envboot; run mmcboot;setenv mmcdev 1; setenv bootpart 1:2; setenv mmcroot /dev/mmcblk0p2 rw; run mmcboot;
    9 B$ X, |! h# x+ a6 k, V0 q
    1 ?- o0 T& ]) V; D/* U-Boot 自动启动等待时间为 2 秒*/; x' L. M' X" v- E# }% a/ w

    + p. X: A. \( N: K+ Ybootdelay=26 \4 q( U& [1 X5 b
    , D$ o1 n  G4 X3 i2 N
    /*内核镜像文件在文件系统的路径为”/boot”目录*/
    $ r1 M: y2 H, h/ b: o# G. e; O6 ~6 h+ o
    bootdir=/boot
    + a/ M- b% l! D& @
    / f. M. }" a4 ^2 \7 i3 N/*U-Boot 环境变量存储文件名为 uEnv.txt*/
    : v; i& p3 I) ~" r0 K4 f/ _. N, Q# J) q4 @
    bootenvfile=uEnv.txt
    . b. v+ _  W! y: b$ \
    4 S9 V4 [3 p$ q* D8 S- I/*内核镜像的文件名为 zImage*/  @7 e  d+ I+ f; j

    7 z& X. K) V1 N2 }  E: o# xbootfile=zImage
    1 E$ q- Y) W* u0 C( }, {7 v8 T4 }, t* W$ M
    /*内核镜像大小*/& H7 ]& W4 C6 ~7 o4 ~# Z

    , u/ }  V' i/ h( n9 W: D1 i. z* M- Gbootm_size=0x10000000. z5 @- c! {( {

    . z0 Z: M& n" ^( V( h% h/*文件系统在启动设备的第二分区*/! ?8 A/ P* j5 `
    2 e0 x# }& ?- @' l* V
    bootpart=0:26 H, |: Q9 }6 U* j" F7 P6 p/ _

    " d8 k' i! d: r) s" x5 L, H% L/*运行 SD 卡启动脚本*/. [1 ~0 e# R. {

    % S0 b" ~0 ^6 A; qbootscript=echo Running bootscript from mmc${mmcdev} ...;source ${loadaddr}" C/ k  A& Z  C1 o. X) V3 B

    + ^" B. P: |5 j$ f' ^/*调试串口为 UART3,波特率为 115200,数据位为 8bit,无奇偶校验*/
    5 L. t+ q* T$ |8 x0 ]7 l- m) y+ E6 A+ m+ X1 `' b7 x. @" D- n% O7 p. ?
    console=ttyO2,115200n8, \1 h" P; \# _/ u
    9 N- L4 I( c, G
    /*CPU 指令集为 armv7*/
    8 n( ~/ R; {2 ?; r/ U1 t8 i. X: C1 u! ]7 A
    cpu=armv7+ B' @6 k% c  X. y0 Y$ `

    - a5 F+ r# @" P0 j1 b# @3 g2 z/*dofastboot 状态标志位,判断是否进行 fastboot*/
    7 D2 G7 o* O0 }, o: X
    ( `9 j: i3 e0 j) Z/ @, }dofastboot=0
    & ]% h% B& e# T+ B) X. h# d; E+ H
    # U6 s' C# ~' t; u/ K: M/*扫描是否 SD 卡已插入,若 SD 卡中有 U-Boot 启动脚本,则使用脚本中的 U-Boot 环境变量启动,否则采用默认的 U-Boot 环境变量进行启动*/# U4 @, k5 E6 y6 P# _0 V2 |

    ' V/ L% b" r$ n* |envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;7 H$ |1 ]) V7 x9 [3 K5 @

    / o1 v8 s0 A  }* s8 {: x4 @: r/*网口 MAC 地址,可手动设置*/' X: Q  x9 B7 ?4 D/ o& Z

    + x* S3 M& y) u: V$ I: h- Kethaddr=fc:0f:4b:9d:15:6c& `* P7 c* j0 S$ \; z( _# {& M1 e0 y
    + k$ P3 C1 f/ Z+ T$ t' m$ P  ]
    /*设备树文件读取地址*/
    7 W0 O0 ?1 g3 _8 x& a# O! I8 r0 [( I/ N4 c
    fdt_addr_r=0x88000000
    , E+ I. u0 m" O- t; e. ]" E, I" Y* @
    ( r- i  J4 l- J3 A8 E; ~: y. t/*设备树文件加载地址*/. V, G) H6 Y9 _! ~6 q. z3 L; m$ L5 a

    6 C# L& E; ~: m5 ?0 Nfdtaddr=0x88000000
    9 t; B  s4 m1 o& D/ \' r6 K& o- U; T' I" o" {. H! @  }
    fdtcontroladdr=bef310f0- S5 m/ e  v9 N! S9 u
    9 M- y& n# a: @) _5 @/ y# D% A) p
    /*设备树文件名,此处暂未定义,接下来的 findfdt 环境变量中会根据 board_name 进行设置*/
    $ ?4 J  S; ]! J* h% q% k. B
    6 E3 `6 |8 O5 Zfdtfile=undefined( x& I" }- E0 q+ A% A$ V8 ?5 _

    $ A2 X$ \' y7 w% E# F# ~/*findfdt 命令根据开发板名称 board_name 设置设备树文件名 fdtfile */# x  p7 q, i- Q: f

    - M+ b6 ]- C) x# M. Nfindfdt=if test $board_name = omap5_uevm; then setenv fdtfile omap5-uevm.dtb; fi; if test $board_name = dra7xx; then setenv fdtfile dra7-evm.dtb; fi;if test $board_name = dra72x-revc; then setenv fdtfile dra72-evm-revc.dtb; fi;if test $board_name = dra72x; then setenv fdtfile dra72-evm.dtb; fi;if test $board_name = beagle_x15; then setenv fdtfile am57xx-beagle-x15.dtb; fi;if test $board_name = beagle_x15_revb1; then setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;if test $board_name = am57xx_evm; then setenv fdtfile am57xx-evm.dtb; fi;if test $board_name = am57xx_evm_reva3; then setenv fdtfile am57xx-evm-reva3.dtb; fi;if test $board_name = am572x_idk; then setenv fdtfile am572x-idk.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = no; then setenv fdtfile am571x-idk.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then setenv fdtfile am571x-idk-lcd-osd.dtb; fi;if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;( Y8 I+ z1 T8 y7 R
    . h9 x8 \6 `* g* t1 J3 k. h$ e
    finduuid=part uuid mmc ${bootpart} uuid6 w! t. b$ A5 X( q+ M
    ' T: F$ n. V( N; _/ n# o
    idk_lcd=osd101t20454 x) Y. X$ {- C7 R! O! ]
    ) h' M; I8 e2 o: n
    idk_pru1_mii=no
    * p2 U! p: ?" k# ?$ Z4 E7 e9 O# i) X9 e* |6 u" U2 h  f6 T
    /*从 loadaddr 地址开始,加载 bootenv 指定文件、定义大小为 filesize 的环境变量*/% u8 s3 v. B5 T
    ( W6 X7 s; G8 n: c; [) |" o
    importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}1 t7 ?2 P; C! X3 J" m
    3 R1 F0 g, }  D  r& c& Q/ N, l
    /*内核镜像读取地址*/
    ) D+ e$ p/ Q  x% W: n/ F
    7 Y( R8 I7 [) Q/ ?# B7 kkernel_addr_r=0x82000000
    ) Q8 g  a& @& t5 ]9 q9 J% G
    ; Q' ^" i/ b) Y) X9 {% {/*内核镜像加载地址*/4 `" n$ E: K) A3 J( \
    + m0 U3 R1 Y2 q! ^
    loadaddr=0x820000004 v+ F: p% `4 E) ^
    : o5 |4 ?3 B, A9 k
    /*从 SD 卡加载 U-boot 环境变量*/. o* k! Q5 y! k& `1 p
    ) R  [% ~/ T4 `4 e7 j
    loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
    / l' I. v9 Y+ h  Q1 a9 `$ [1 ~/ N" b0 Y& o
    /*从 SD 卡加载启动脚本*/
    7 i1 h) F* p: A! \% w$ m5 [! j7 C7 H( E
    loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr! r5 ?* m3 O3 m3 z$ T/ w5 U

    ; N4 B1 V2 R( {/*从 SD 卡加载 dtb 文件*/
      o. C8 H8 s' N3 ?' R; D( l2 s+ k# |2 h8 H( V
    loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};
    ! B3 P: Z& S% M
    " c% W& b: x; ^# t+ @- }3 Z0 I/*从 SD 卡加载内核镜像文件*/- X( d, L. C. I2 b+ ^) R

    8 G$ |/ D# i: Z; {* d; i; Kloadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}% }& [5 _. X& O/ u
    6 Q, N9 N* a/ s# Y  S  }9 l  a3 W; K3 @
    /*SD 卡启动时,先扫描 SD 卡是否插入,若检测到 SD 卡已经插入,则加载 SD 卡 boot 分区中的 Uboot.img 以及 zImage 内核镜像。加载完成后,运行 run args_mmc,加载 rootfs 分区文件系统,以及设置控制台参数,加载完成后,运行 bootz 进行从 SD 卡启动*// B4 s1 Z9 f9 X# r, j$ e- ~0 x
    0 T  M7 j9 P2 H% c  c
    mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then run loadfdt; echo Booting from mmc${mmcdev} ...; run args_mmc; bootz ${loadaddr} - ${fdtaddr}; fi;fi;* y8 i9 i7 ]. d# ]' C8 T# @5 \2 E

    9 T7 y4 Z3 Q3 X6 O/*MMC 设备为 0*/
    - |# f% j7 D- r3 I9 t1 L1 H
    , ?( D; F" m) {* o- j5 O/ Xmmcdev=05 e0 @( J! D/ V0 i. O. x% h  e

    * v( w4 ]! N" P+ _* R1 Z/*MMC 设备中的文件系统类型*/
    % L: @% k% J) |/ d1 N6 K/ t- u. `, V. I. A  L' R- q5 u5 n
    mmcrootfstype=ext4 rootwait
    9 k3 ^* {2 H7 z1 R6 u- X0 R1 Q, I& H6 G" r( E3 U
    /*网络启动参数,文件系统目录挂载节点为”/dev/nfs”,此处”ip=dhcp”表示开发板在内核和文件系统阶段自动获取 IP*/
    $ z( ~2 s# |3 \& j0 ^$ ~2 D# _: ?  B: X1 Y, o
    netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs1 F" w  K% x  F/ X! d4 W
    6 H+ O* D8 Q+ l2 b# F# r1 ^( s  X
    nfsroot=${serverip}{rootpath},${nfsopts} rw ip=dhcp4 ~+ @: \0 }! D( q
    ; A; \+ @7 @+ I
    /*网络方式启动时,使用 TFTP 从服务器中加载设备树和内核镜像文件,执行 netargs 命令,启动系统。此处 dhcp 表示开发板在 U-Boot 阶段自动获取 IP*/! s, r2 H' K& W

    8 _* E- }( h' `, Inetboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
    " F5 A8 D; Z+ W8 Q( L  |7 E4 F0 v' N* h7 u( Y7 U
    /*网络启动时,通过 TFTP 加载设备树文件到 fdtaddr 中*/
    7 d$ I' T: I" l
    + y+ }6 h$ h1 H7 i2 enetloadfdt=tftp ${fdtaddr} ${fdtfile}
    / N) m- Q+ g  H5 {  \& A
    6 T2 V7 o# _3 K6 L/*网络启动时,通过 TFTP 加载内核镜像文件到 loadaddr 中*/) i, l7 H+ E+ z. ^5 l

    6 Y& P# N9 y+ n# `) {/ D7 lnetloadimage=tftp ${loadaddr} ${bootfile}
    $ P5 \  Z8 U, q, e
    + G/ J7 O# E$ L: ?' h$ R$ A* |/*NFS 传输取消文件锁模式*/
    + ?& D- V+ R& s- w. r; J9 I5 p' w- n! Y4 C2 B5 ^7 W$ `
    nfsopts=nolock
    : O) L" b0 G6 {# u, X. ?) j7 T+ `( i  W' p' [- c
    /*根文件系统分区设置*/
    $ c: R! v" z( U: E7 l5 _( f5 @4 ~7 A8 W3 I* x& L
    partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}4 P: k7 m6 d! U2 s& J
    + O, n% J7 h! L; I
    /*pxe 启动文件加载地址*/
    5 B* l) t; M0 M, R( b+ ?7 q5 F5 f  L7 j
    ) B5 E$ i+ H: d% w3 R5 R3 upxefile_addr_r=0x80100000
      h" @! V$ n9 A: U& h8 ]3 {( _
    " n9 t: F. ^0 R/ c9 n/*ramdisk 文件读取地址*/# o6 ^( N! E) ~3 K3 |
    , D% z9 h% I4 B" h
    ramdisk_addr_r=0x88080000
    9 \  {8 G* U2 D7 i4 ]2 S( v% J
    ! S9 A) C0 o* S4 l8 e( `/*ramdisk 文件加载地址*/! x; c/ l' W5 m) J4 D1 J- B% x

    . g0 c0 x& C- A2 brdaddr=0x88080000
    ; O) o6 X& J2 n2 J6 v9 w; u7 u5 k# f1 }3 i! H4 t. o
    /*网络方式启动时,文件系统在 PC 的默认存放目录,可手动修改*/
    5 V& Q" U) U4 }+ j, t! L; Y! P. u# E: D. @! j3 C8 j
    rootpath=/export/rootfs
    6 S( x9 f3 t& ?3 _! N* w3 t) d8 E
    /*脚本文件加载地址*/' n( R% ^" b' S" u3 T
    4 X& I8 v. P, g' Q
    scriptaddr=0x80000000
    % F' f5 f, }' ^( Q$ H: _
    & ^" J7 L7 j, y0 u/*设置扫描发现的 SCSI 设备数量*/. R" A# J5 X( N* v
    3 o" Y# p/ N$ T: P$ y! Q+ l
    scsidevs=0
    ! U% h, x' u6 y. A; S0 z5 Q6 L* K) T% H
    /*SOC 类型为 omap5*/0 X. L  r6 K6 U1 A
    ) m! ^% K' T7 D% o' H. b' ~  I4 B9 Q! P
    soc=omap5' n: a' r$ h% f' ^: a
    % s0 L1 H! i$ ?  ^+ ~' D) |
    /*根据相关环境变量设置静态 IP*/
    2 j7 v% u- n0 p$ X4 Q% V; O7 t8 v4 k3 G2 O0 D4 [
    static_ip=${ipaddr}{serverip}{gatewayip}{netmask}{hostname}:ff
    - c6 S' S/ M6 y. f8 G3 Q0 m& g0 n* X1 x3 [- L4 w* C0 w
    /*定义标准错误输出*/% y& i" Y" R$ S- t. [
    8 @9 O) M) N, J# {$ x
    stderr=serial@480200006 Y5 |" i) |- ~, W5 p' |5 G2 C
    # O: U/ s3 q1 ~* K6 e
    /*定义标准输入*/
    1 |% M# v' B7 f5 V, V$ b8 Y6 j' W9 S4 }# ~- B! S
    stdin=serial@48020000% p) `% p4 A0 Y( \& U
    * g" A0 o& v& E; p0 @
    /*定义标准输出*/
    $ u, P( Y) I- {) [2 ~
    ; f1 b! m* N( k* C( o  h# istdout=serial@48020000- [' n4 O, ?5 c1 _
      d% S; E* ]& T7 H* W: O
    /*USB 方式启动参数*/
    0 \0 w# I5 f8 }) R& U1 [
      m; W; j5 ^& Y0 qusbboot=echo usb found on device ${usbdev}; run findfdt; usb start; if run usbloadimage; then run usbloadfdt; echo Booting from usb${usbdev} ...; run args_usb; bootz ${loadaddr} - ${fdtaddr}; fi;
    + R0 u! T# ~  {0 J" r" o( r& O' p$ `2 s6 u) }/ b
    /*USB 设备为 0。AM57xx 平台 U-Boot 参数中的 USB 设备 0,对应开发板的物理接口为 USB1。*/4 {# k: T9 l" a3 ^

    1 t, k0 o7 x5 r2 i! p5 ausbdev=0
    ; M9 Z; B) r8 R, U& `9 }$ S) |( Y
    . E$ b1 r* _# q3 n0 g: }/*USB 启动时,通过 TFTP 加载设备树文件到 fdtaddr 中*/. c1 K) z, t, {% c6 `- l4 V

    ; K$ h/ I) @; y8 Gusbloadfdt=load usb ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};  a& M  X: e8 c* k
    4 @% H  k0 g- C6 Q, t; |9 D5 q
    /*USB 设备中 rootfs 分区文件系统的挂载节点*/
    / r, u; Z( W! L' l
    * }# J7 Y4 c+ M  \! D3 Husbroot=/dev/sda2
    ' k6 c- t2 N$ ^3 \9 v* u( W! {. l) q
    /*USB 设备中的文件系统格式*/
    + E9 ~& _" T) p5 e# [) c) W4 m0 s& Y0 C# ?
    usbrootfstype=ext4 rootwait3 w0 V; l, O$ a) T3 [, c
    8 _1 ^; z9 j# V$ t
    usbtty=cdc_acm
    6 k) L& B" p1 @% F
    5 U7 Q6 Z6 d7 x  V- M* W- l# }/ ?/*处理器生产厂家为 TI*/4 [2 K/ l9 T9 |5 O' F9 r1 H6 h" W; a# V
      J) n( M; C" h* X& ]! f1 H$ r
    vendor=ti* ~2 d* E: Q: W0 I% n
    ' S. N) N* ]- M9 J' M1 R' N: g( S
    /*U-Boot 版本信息*/) X4 x5 f/ u2 @6 [

    7 I4 [. T; R5 u$ c) e: i7 n5 Qver=U-Boot 2016.05-g2cdaef6 (Nov 21 2017 - 09:04:05 +0800)
    0 ~+ E* Y. a4 p$ C
    0 z5 \4 I; X1 ]/ ~/ q7 N& o$ ivram=16M
    , t( }5 S, F1 L
    ( {; J8 u$ \* p9 p% Z( z9 [Environment size: 4451/65532 bytes( H1 I& z+ t: q" y: Q6 n. j. A! I3 p

    ' V9 Q+ a9 e" G
    * `+ Z4 j2 r1 B5 d# Q# Q6 f5 p8 c
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-19 00:06 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表