找回密码
 注册
关于网站域名变更的通知
查看: 70|回复: 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 版本适用性说明) S; |5 G0 h5 E2 ^3 d6 E
    表 1/ L5 Z7 e" |) U' j! i) ?

    ! p& ^5 B3 ]4 p5 h  m. F
    ! G: K8 i) m$ L; x7 }
    % J2 N8 f, O" A
    2 U-Boot 启动参数详解. k9 k9 a8 n! E0 R/ Z# y) \5 _
    系统启动时,快速按任意键进入 U-Boot 命令行,执行 printenv 命令即可看到 U-Boot 的所有启动参数,若使用默认参数则类似如下。以下为 AM57x 平台 U-Boot-2016.05 版本 U-Boot 启动参数详解:
    4 s5 ]: G' t) b5 H1 z7 W. C. E; {% N' Z# q; @

    + v' b; h! S- i9 l) g
    ! T4 ^$ J: p  Z. W* t

    ; K0 q2 [* j5 a
    - O; O+ h2 y+ z" q* O) S若检测到 SD 卡已插入,则加载 SD 卡 boot 分区中的 zImage 内核镜像和 rootfs 分区文件系统;若没有检测到 SD 卡插入,从 eMMC 启动系统。以下为 U-Boot 启动参数解析:
    * a( u2 h8 J2 D2 P1 U/ d& e+ c+ P# N) I# E% T, M
    /*芯片架构为 ARM*/; n: H% B0 `# v6 _/ D6 z
    5 I# T& V. `) g" w) n
    arch=arm
    . ]" G7 z: u6 b
    - N. J. D  I, \' L/*MMC 启动参数*/  [/ e: t" q0 T# {

      J8 I9 b  E2 t6 F& b: Dargs_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    % E5 ^& B' a, U3 ~$ N$ q2 {# g( H$ o0 J. }- j, B  t; p
    args_usb=setenv bootargs rootfstype=${usbrootfstype} root=${usbroot} rw console=${console} ${optargs};/ t( A$ o+ c% {6 O% }" Q! K2 Z

    . {  v3 y7 T! b, R! h) ?/*串口控制台波特率为 115200*/2 L  I1 E$ v: s

    # h1 T8 j, i0 xbaudrate=115200
    5 y1 a7 @: N4 z5 r6 n/ F1 U) e4 N
    /*板卡平台为 AM57xx*/
    : A4 d* Q9 p7 a+ m/ D$ H/ J9 o3 J# U, V5 T$ g- ]" b: n0 C7 M! O
    board=am57xx% c# ]0 Y/ @  W

    # G6 ~1 ?+ H+ r/ ~/*板卡模板型号为 am57xx_evm_reva3*/7 @4 v. e- {* c8 F" F9 w

    / I- N& h5 G6 v- X0 W" pboard_name=am57xx_evm_reva3
    # Y+ |4 {" j) E1 i( k- d! t$ V! J. Y
    /*U-Boot 入口命令 bootcmd。bootcmd 命令会在出现”Hit any key to stop autoboot”提示后执行。如果不按任意键,bootcmd 命令会上电自动运行,按任意键则进入 U-Boot 命令行。系统启动时,会先判断环境变量 dofastboot 是否为 1,若为 1,则执行 fastboot 命令。当 dofastboot 设置为 0 时,系统会采用默认的 U-Boot 环境变量,并运行 run mmcboot*/8 {. y) M* r6 y9 K: S: X( l& h! a

    0 ]8 H: m# o- J% E& z% Nbootcmd=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;
    , w/ {8 [: [, A4 C; k# t
    8 B; u8 \/ c( o/* U-Boot 自动启动等待时间为 2 秒*/3 @$ k0 d$ \$ t* T6 ?! H7 M

    8 d% Y" x* z/ N  @1 Lbootdelay=21 w4 [5 Q. _9 x  z, M- U! w. M

    0 ~0 I$ L4 l0 b# u) P4 Z; D: K8 m/*内核镜像文件在文件系统的路径为”/boot”目录*/8 c. i; }# \4 ~+ H- R
    # B$ l$ i6 T7 n! P" s2 a- X
    bootdir=/boot
    % m' ]* J3 t# ~
    6 B3 E# T. m  G4 @; {& f/*U-Boot 环境变量存储文件名为 uEnv.txt*/9 W) ^$ q& g7 P7 s; h# l+ J
    / [1 @' O0 A' Q8 p! X) T# q
    bootenvfile=uEnv.txt* \3 `7 ]- W) D+ S$ ?0 ^& [2 e4 ]

    & k$ y7 v- e- v" Z3 e2 u/*内核镜像的文件名为 zImage*/% v. q  X4 d( A1 T
    1 ?) J. |1 |0 A* R
    bootfile=zImage9 T+ g4 g9 }" d7 M

    2 a0 u( X2 Y. \/*内核镜像大小*/
    # Q4 X: S6 Y/ D% g! I
    # g4 ?, }+ ]$ l; D% S+ [& Y7 k- {bootm_size=0x100000006 R# j( D% e" K7 y
    % H/ N  }& ^) t4 W9 D, B
    /*文件系统在启动设备的第二分区*/- \' B) `: f0 a' u9 i$ ?2 a* U3 F
    ! e: M, A; }1 k
    bootpart=0:2
    ! @& Z6 c" `4 X0 s" [4 S+ }2 I7 h+ W) }- c5 g
    /*运行 SD 卡启动脚本*/) A# ^+ A3 B. O# Q: }# a
    8 l& y" E3 \1 M# R0 y
    bootscript=echo Running bootscript from mmc${mmcdev} ...;source ${loadaddr}
    : M7 \, R  Z8 l( Y; d
    + o, B4 _" m& d- o/*调试串口为 UART3,波特率为 115200,数据位为 8bit,无奇偶校验*/* U  C: L' T4 k5 R' c3 p3 i# U7 G
    ' j$ ^4 E& `4 L0 [- G; @
    console=ttyO2,115200n8) k5 n* x: U5 b9 Q0 I

    ; U) H  n2 F9 u- \% g% Q1 d/*CPU 指令集为 armv7*/% `( J% @7 R' r9 F

    ' ]: M1 \5 [$ B9 dcpu=armv71 R% G- C. i& E' s! y
    # H4 H4 G- a  L5 m
    /*dofastboot 状态标志位,判断是否进行 fastboot*/
      ]- d; r$ A5 u6 B! }
    % b" }# S: W, V6 s- ^# ydofastboot=0
    # J) k! J6 h! ^# U+ J% |+ H+ N1 z
    5 Y9 `; V8 h+ _6 \' ], J/ m/*扫描是否 SD 卡已插入,若 SD 卡中有 U-Boot 启动脚本,则使用脚本中的 U-Boot 环境变量启动,否则采用默认的 U-Boot 环境变量进行启动*/8 r6 _- E, ?- |$ y7 ?; W( E- S
    $ p% n1 N) [" y8 X  C( G
    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;$ F+ q- S6 ~" F
    7 g( i0 L; L0 _1 `* A: f2 H4 W( Z: F
    /*网口 MAC 地址,可手动设置*/3 m3 N3 J$ j4 C2 j' ]
    2 ~5 ~5 a  U/ t( l
    ethaddr=fc:0f:4b:9d:15:6c
    & c  \; H1 b5 Y6 z1 m' w
    . a3 r+ s) Q7 }- F0 J2 R( c* q/*设备树文件读取地址*/
    6 s/ c, R; M, c5 n0 Q7 o) w
      _* h; r; N8 _fdt_addr_r=0x880000009 L' r0 a% T0 j
    ; c9 t% P- T. R( Q6 ]7 ?% A
    /*设备树文件加载地址*/' W: `2 t! t2 h7 [' P5 N

    ! E! }5 T0 g: q0 t- H* ?fdtaddr=0x88000000- u9 ^6 _; E3 h
    + ^5 z# N8 R5 u- Y; ~7 J  ^
    fdtcontroladdr=bef310f0
    * Y7 A7 ?' w: T2 \. I9 H# v/ U+ v! S) J+ f
    /*设备树文件名,此处暂未定义,接下来的 findfdt 环境变量中会根据 board_name 进行设置*/
    ! l+ Z1 y1 E' I/ ^
    # c9 R8 ~  G+ Y! t$ Y! ?* @; Dfdtfile=undefined- F! H& W6 A" _$ z& A& R
    & L" x& f  z+ {( Z3 g2 {+ Q2 F
    /*findfdt 命令根据开发板名称 board_name 设置设备树文件名 fdtfile */
    6 }- j' w1 ]' }; E% P8 J" C( q1 y$ f3 s
    findfdt=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;
    : b1 i3 @' F0 D# v9 g* j8 J8 u( M/ U( W' g; E/ O" ?1 Q
    finduuid=part uuid mmc ${bootpart} uuid( K# d/ {/ I: S. A

    & a4 k: x5 x# O3 r8 g) V; b. g# j5 \idk_lcd=osd101t2045  s3 h. C; J) m

    8 o  D2 u2 Y1 n9 widk_pru1_mii=no
    6 c3 U4 B6 }4 N6 i' u$ v% A& `7 q% ~  T% y  m' t
    /*从 loadaddr 地址开始,加载 bootenv 指定文件、定义大小为 filesize 的环境变量*/
    3 `  a2 N  N6 X: ~! m% J: b# ]) A/ U% Z* A; i  m! _# D8 t! n
    importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
    4 |; l9 ^9 J6 o4 b/ T' ^* V
    " _' I. c: W2 k2 {/ g% h/*内核镜像读取地址*/
    ! n8 K( p2 j, d% b) _, n
    * b9 j/ @. c- B) x$ z5 rkernel_addr_r=0x82000000- W& a4 j; [4 v
    " k) }$ }; ^4 U  K, k7 H3 B
    /*内核镜像加载地址*/
    ( b- ?% [8 A8 z# p7 ?6 X+ e' x- U/ l, }
    loadaddr=0x82000000; s4 H3 [( s( E6 r8 \7 B* n8 j

    : e7 s% l( P+ `/*从 SD 卡加载 U-boot 环境变量*/, N& ]7 Y9 U5 E. r, j' ^

    $ _; }  ?% R1 |" q) n- Oloadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}, A# [* j# c0 A' L' j7 R) H1 l
    # z6 l2 Z& M) d6 C
    /*从 SD 卡加载启动脚本*/( V4 b! e" U# j- [7 J9 ~  I4 q1 W
    - v- ~; J+ N: g! k
    loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr8 o8 s/ W( P& ]4 X8 `. W$ k

    6 ^5 S2 l# ^# V- B3 v/*从 SD 卡加载 dtb 文件*/! M2 e, E0 J! j) p/ `+ c0 x
    2 s7 p+ a# m9 S+ S6 j. h
    loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};
    2 [4 Q5 t7 h! C, j9 Q5 v) a# H/ Q0 f
    /*从 SD 卡加载内核镜像文件*/  g& x$ ]. a. p/ s7 u
    " l+ W7 G1 A( d! W. n4 E# R3 U) |
    loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
    ! c7 [9 R+ @. f/ h$ S4 L- C$ i- }
    /*SD 卡启动时,先扫描 SD 卡是否插入,若检测到 SD 卡已经插入,则加载 SD 卡 boot 分区中的 Uboot.img 以及 zImage 内核镜像。加载完成后,运行 run args_mmc,加载 rootfs 分区文件系统,以及设置控制台参数,加载完成后,运行 bootz 进行从 SD 卡启动*/
    . F1 }% i2 l8 I8 H9 H: f3 Y. H, p
    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;
    $ g+ }* `( g! R3 P6 d: A( Y' R! G8 w, s" q
    /*MMC 设备为 0*/
    , g; V& @& r' T4 w
    9 e; `& b/ \+ X: s3 |mmcdev=0
    # E# R  U( }7 u2 ^8 }# f6 \: L1 J6 j* _" Q) l+ t
    /*MMC 设备中的文件系统类型*/. p1 r/ H- M1 ]( R) L- Z

    / a) h! a* l$ n& _mmcrootfstype=ext4 rootwait
    5 S- I" C  I) M$ R7 j- d; R# P# V& }% c
    /*网络启动参数,文件系统目录挂载节点为”/dev/nfs”,此处”ip=dhcp”表示开发板在内核和文件系统阶段自动获取 IP*/+ }  N0 M2 M* }( z7 O, |: v

    5 y' o9 Z% W" wnetargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs2 ~8 ^3 b# X& v
    ' F8 ]  M. t* s6 V
    nfsroot=${serverip}{rootpath},${nfsopts} rw ip=dhcp
    - X/ ~# I  n  [' N. C  Q* e" v# m4 v
    3 O6 w3 a  @  j1 g/*网络方式启动时,使用 TFTP 从服务器中加载设备树和内核镜像文件,执行 netargs 命令,启动系统。此处 dhcp 表示开发板在 U-Boot 阶段自动获取 IP*/
    . G' t2 @( K2 S  h7 y8 c0 a8 |" O
    % T/ j1 G3 O0 ?9 `6 \netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
    $ ]- \( [# O; D0 d4 U5 C" ~; }2 t' v* }3 ~  o
    /*网络启动时,通过 TFTP 加载设备树文件到 fdtaddr 中*/
    $ J, f' M) U$ l) E# X! X6 g. A) d2 G2 j! a' X- N  E$ o* Z
    netloadfdt=tftp ${fdtaddr} ${fdtfile}
    8 p$ c8 J2 x; m2 A. v8 t
    ' q  ]  Q! [2 M- y/*网络启动时,通过 TFTP 加载内核镜像文件到 loadaddr 中*/
    : T* }4 p% _  Z! N- y7 y3 C. [+ P1 R2 `$ T1 X+ a
    netloadimage=tftp ${loadaddr} ${bootfile}
    . L- w& g# V9 K1 W' J$ N- I) d7 I; j+ ?0 V- k# x
    /*NFS 传输取消文件锁模式*/
    * U( W7 Q0 Q" l; Y  K9 R) f/ z3 B0 G, N  G/ l+ K2 |
    nfsopts=nolock
    & L! g+ m8 ~. D
    5 e( h( Z* O  K& J  @, b/*根文件系统分区设置*/: w9 ~0 L6 g6 C, ]

    : y! W. o# i* N, ~: Y4 Zpartitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}3 c3 n* Q( e9 e1 b
      n) B- @, Y  m8 @& ^( h: c) |& x
    /*pxe 启动文件加载地址*/
    ( }5 P) b1 j5 f4 T5 F- o, b9 o7 B7 `& h
    pxefile_addr_r=0x80100000
    # ]' `) h& X" Z6 E" y0 h" ]$ }8 S: E. ?$ F( _0 V3 Q2 a5 e6 Z! ?% `
    /*ramdisk 文件读取地址*/
    % p. v. E2 k( v" E8 ?- ^) z# _& v! }
    ! E( q% j- J2 p* O" P* \ramdisk_addr_r=0x88080000
    1 G+ c! w1 t' I4 A( c4 [8 q# A7 L% R, {3 g) y" _7 E
    /*ramdisk 文件加载地址*/! O* u1 A- y; \
    $ ?* \4 i$ f3 d
    rdaddr=0x88080000
    2 d/ o3 _( o& d  H2 p
    ) z! V. b8 B3 u9 }/*网络方式启动时,文件系统在 PC 的默认存放目录,可手动修改*/
    ' r4 M; \: J. ~( @% Z' k
    : k$ @5 z8 q& Y1 Y2 \2 lrootpath=/export/rootfs) @1 a( D2 I' X6 S, S6 }  p8 o  \# F# ]

    & l4 {/ ^  n2 b  `9 q/*脚本文件加载地址*/
    2 M. p# Y1 H8 M/ y  M0 X
    & V1 L% E9 _9 Q; Pscriptaddr=0x800000008 {8 X7 A1 T. w8 h" m2 M" L

    # x$ ~% m+ T. G* H( C7 W- f/*设置扫描发现的 SCSI 设备数量*/
    , Q2 w) x6 a) j: \* t( D
    + L+ S8 d) j* w4 W; oscsidevs=0. j/ T, S3 R% u3 p8 i+ Z

    2 c, ^9 k: r! B9 }  z8 Y/*SOC 类型为 omap5*/& |, T) D* y8 C8 K! D

    3 G5 K* T6 P6 C% F. ksoc=omap54 }3 l  J% }* L( |; p$ U
    5 C: x; C  j! j- \, e( T) D
    /*根据相关环境变量设置静态 IP*/
    # u) D! D( X* {$ j" a" y9 }4 ]) g
    static_ip=${ipaddr}{serverip}{gatewayip}{netmask}{hostname}:ff
    9 ^% Z8 R+ L  ]: _& m' {  O* S2 g0 s& U5 c. t' x
    /*定义标准错误输出*/) m3 ]# d. S- d  ]+ |. h

    0 V& `& I( Q; u7 W; e  Istderr=serial@48020000
    7 v. R% H# x% \; i. F3 A$ [
    1 C0 S' [' ?8 ^8 w- S/*定义标准输入*/. y3 r  W$ o; }

    # {5 Y! h# F( K6 T' z+ ~* Zstdin=serial@48020000
    1 @) z4 d& B" Y$ h+ e9 Q- A
    % \) x2 |* `7 q1 j5 A( f/*定义标准输出*/
    . o% {$ u1 P3 c3 ~. o" m9 R5 u5 Y4 f* R- b
    stdout=serial@48020000( O* m3 l1 Z- o. T6 x* P

    6 g# B7 V3 ^- R/*USB 方式启动参数*/: q( w& ~* o- W* j7 P" h7 p/ d
    ( a7 ~3 c6 A0 m+ [' V$ H! {! ]( F$ I
    usbboot=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;" E+ v* x" L- b6 b7 E% Y3 ~

    5 S% ^. i, m# J( J6 g* a/*USB 设备为 0。AM57xx 平台 U-Boot 参数中的 USB 设备 0,对应开发板的物理接口为 USB1。*/$ k2 ~/ q1 z( f/ E

    * K! B& [* n3 W7 O1 Q9 a' e9 X3 A+ Musbdev=0
    ; i2 r( u& E" V& ?  y, V) e. s6 l% X5 w2 w! ], Z
    /*USB 启动时,通过 TFTP 加载设备树文件到 fdtaddr 中*/
    + e# E* V2 c8 I/ f3 ~/ z; f6 [4 z* g& b+ h! G& ?& Q. a# Q# ^
    usbloadfdt=load usb ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};. b! N% L: b3 d+ X  x
    5 `% w  [0 j# F* j) t
    /*USB 设备中 rootfs 分区文件系统的挂载节点*/; w& P  n" l% z8 |/ h6 x( I

    3 \1 P: n8 @: y- u# cusbroot=/dev/sda2
    ' h1 J- x& v. i) G* H% ?: G5 D: W% ]( R* m! A
    /*USB 设备中的文件系统格式*/
      I" N  E  y! L2 C4 M8 D6 W/ @4 N* L# U" r: G  K' T% I9 q. a) {( r* l
    usbrootfstype=ext4 rootwait7 e0 W& E3 c$ h( {5 r* Z

    / T( ]( O+ e9 I* B# [  Busbtty=cdc_acm
    0 B0 S, j7 ~' K2 }( Z0 Y" I3 h; ]; X! [3 g, p
    /*处理器生产厂家为 TI*/
    / B) ?& Q: Q4 X) B3 Y  E1 q; }# t) {$ _' I9 {  [
    vendor=ti
    + }* s" B5 |3 h& \9 y% t, U+ o& c! [) u1 |1 y
    /*U-Boot 版本信息*/# q/ c( t' A8 s2 h3 l$ t
    / T- W6 ~4 R+ y, M- i9 F$ a
    ver=U-Boot 2016.05-g2cdaef6 (Nov 21 2017 - 09:04:05 +0800)* e# U) C) F! w, T) @

    3 K/ J- p. E  r4 `5 n' }vram=16M$ X) g% E* S: r# l6 e" b7 R

    8 E2 P% B5 x# p8 W* J) [1 i1 b: wEnvironment size: 4451/65532 bytes
    2 ?8 \  `: e% W+ Q. h4 S, r
    ' e! @6 j/ L: T+ j- h' X0 s' D. Z7 h7 |+ `9 k5 Q. c
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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