TA的每日心情 | 开心 2023-5-15 15:14 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
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 |
|