|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
iTOP-iMX6 开发板烧写好之后,默认是 android 系统 9.7 寸屏幕的系统参数和屏幕参数。如下图。本文档主要介绍如何修改默认启动参数.3 L# V- u" | B/ n' G
![]()
2 @9 j4 B4 o% g70.1 重要的环境变量& P0 G. n' ?# l- \
比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_ARM/board.c”文件。/ A/ z! j& E) k# m- _
70.2 默认启动系统设置3 K- ]: w% h* V4 C+ F; \9 C* B+ K# S
默认启动系统参数是:bootsystem。打开“board.c”文件。搜索关键词“bootsystem”,找到如下代码:
7 V. B; T3 u: {1 `$ x5 d% P0 x![]()
q) S6 f! ]; G1 ~# }/ c通过修改“p = "android";”语句,可以修改默认的启动系统参数。下面的程序中,可以看见用到了“boot_system_flags”标志位。搜索该标志位,可以找到如下内容。
3 C! J+ A. ?* U7 R![]()
! V" j5 o+ {6 f: Y! R70.3 默认屏幕设置
" y* z4 j. m: I默认屏幕参数是:lcdtype。打开“board.c”文件。搜索关键词“lcdtype”。找到如下代码。
" }# J0 y) I% _: q1 X ) F% O; v( K/ \. u
通过修改“p = "9.7";”语句,可以修改默认屏幕设置。在上面截图的程序中可以看到,通过”sprintf();”函数设置了相应屏幕的“displayArgs”值。 J6 o3 J0 \" q2 @7 c: F
70.4 认 默认 bootargs 参数设置7 u( ]+ | J5 L0 h9 F' q) n5 a
打开“board.c”文件。搜索关键词“bootargs”。找到如下代码。
+ D# K" x1 n+ {4 h6 ?4 H$ R: w![]()
! z8 i: F% _/ ~$ _( H6 u" \可以在此处修改“bootargs”参数设置。
3 l* F0 k! [+ R, P/ @) ^上面介绍到的详细代码如下:: b& g2 P3 |& o$ W! |; g6 r
- {
7 `5 _* V9 u8 v! i0 M4 u0 b - p = getenv("bootsystem");
$ F, m+ _, O/ a5 K! I- _3 ` - if (NULL == p) {' a W6 B( q* j. M0 ?
- printf("*** Warning use default bootsystem:android ***\n");
- z' F% F; F- w) X' \' B+ Y2 G - p = "android";9 V" A8 K3 ^$ G" u+ U5 Z% Q
- setenv("bootsystem", (char *)p);1 B% c& }9 G$ W& L1 L! H
- saveenv();4 i% \1 b( O* r* w
- }
0 m! j8 }! }. l6 i2 R ^5 i7 N5 N - printf("Boot system :%s\n", p);
; h9 E$ z5 d6 V( N. v3 L% I9 h - if(!strcmp(p, "android"))
( q# W/ @& ~+ x, c7 {0 r - {% s" ]1 ^7 I: r0 v y7 f
- boot_system_flags = 0;
u7 m. |0 h) p" I - }4 B( H/ ?" k" u' P A2 C" \
- else if(!strcmp(p, "qt"))
, y2 B( \ g4 _ f - {
: j3 @& R# t1 s3 R- H& S - boot_system_flags = 1; H) m5 {. v) q H% O
- }
) Q9 Q% Z# W" J7 d& L - else if(!strcmp(p, "ubuntu")): C% I |, o7 V! w- F
- {5 M: w; r7 d. f; U1 q, [
- boot_system_flags = 2;
4 Y2 Y& q& X! U$ V/ X% ? - }
( \8 d3 D3 ^" q. @& E9 m - p = getenv("lcdtype");
1 Z" Z7 F: W& o- h' P( E8 @ - if (NULL == p) {
3 H3 C. p. Q0 f* |' W4 o* i - printf("*** Warning use default lcdtype:9.7 ***\n");
! g8 K, [: t5 |8 a& j - p = "9.7";
+ t: R$ Z$ z$ s5 E. B1 `0 W* U - setenv("lcdtype", (char *)p);
4 z! Y6 @' `& J3 q9 F2 a$ Y2 P - saveenv();
: E7 e4 L- h. q - }
7 R9 y( b- e- g9 R5 d4 d+ J - printf("LCD type:%s\n", p);. l$ d1 m& h1 B8 o8 ~( S
- if(!strcmp(p, "9.7"))
2 ? i; v% d+ I# l - {
' o* @( M6 o- J& f4 O7 ]6 B$ t - lcd_type = 0;& S# j: M6 ~% t. x0 u1 h4 ~
- //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1ff
* A% t% ?! }& P3 E - video=mxcfb2ff fbmem=30M");% S9 K2 g& c( I, T3 Z% A& M
- sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin1
5 N" m* z4 L }+ x - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");0 o) E( Y3 a% @. x+ `
- }# ~4 T, {' Z5 i2 h# P# s( p+ U) J
- else if(!strcmp(p, "7.0"))$ n4 o0 l& O9 W, m% t
- {- h8 ~' ?: Z( k5 G) E2 j
- lcd_type = 1;
$ n% S$ | {% O6 s6 R - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1ff. G7 s; P0 B5 A
- video=mxcfb2ff fbmem=30M");
/ d% Z4 k( W) R* d! @/ P - sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1
4 Q, g3 A5 p8 ]6 ?* E, F+ T - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");: ]) k7 Q% J& s, q( I9 U# l
- }# h6 ~) x2 x6 Z' ~! V/ x
- else if(!strcmp(p, "4.3"))
) U8 S/ j' l( i# \. D, @4 ]0 O U - {
2 T2 A% m$ P+ l3 V - lcd_type = 2;
3 V( g0 J8 g8 f3 F2 {" X - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff# h. C4 t6 D- O$ u0 a; [" k% F- }
- video=mxcfb2ff fbmem=10M");9 }/ O5 }" {7 F& s- S
- sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32
! G0 ?* y. Z$ y0 m - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");3 Y7 A" s" ~ h7 [8 [2 [1 H/ _
- }
3 c8 B0 x! x0 z! G, E - /* add by cym 20170814 */& m6 d7 @8 M+ f/ S* x* P! S
- else if(!strcmp(p, "1024x600"))" K" L; e; k S) A0 x# B- Y& Z
- {
4 v8 V1 t4 R2 v: Z. } - lcd_type = 3;
. Q; X- N" X# B, K( R/ R( Z - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff0 q$ p4 V8 z( C: ]
- video=mxcfb2:off fbmem=10M");+ D, g% B0 w. [6 V' B, X
- sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=32
9 S0 ~% l, N% T4 X& M0 R - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
1 N$ G/ O5 c, L" Z8 [3 f& \* p - }6 o. h4 O6 r/ U$ B
- /* end add */9 z* H1 z4 y9 {5 t' |5 u! S6 C
- else if(!strcmp(p, "hdmi"))) v2 V: G6 Z/ X8 s% o$ w
- {
9 Z% ?: O. f* p9 b! ^ - sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32
4 R9 C/ x$ a6 ?' p' A8 ^ - video=mxcfb1:off video=mxcfb2:off fbmem=48M");
- l- z- f$ z6 J$ J& a$ Q) i - }0 D1 D& Y- I% P: D/ T. x8 x
- else
2 t- s' m5 i( G& T4 {4 ~ - {8 }. |) ~3 z: A: b( F
- sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off' m+ _ L8 D3 _/ j* c, T: I
- video=mxcfb2:off fbmem=10M");! o: l$ Y) T f' { A* _0 I0 a
- }
+ r2 W5 S" C5 S; ^" z! h% r0 A5 n - if(0 == boot_system_flags)//Android4 M( n% i& ]" l# p1 ]+ Z+ S1 B
- {
" O! o4 C& f! L6 v C$ w - sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M
! V. j( P( E9 k, ~ - androidboot.console=ttymxc2 androidboot.hardware=freescale2 A3 y. i$ Z! p- A8 W, i/ w8 f
- androidboot.serialno=1a0d39d4e3013411", displayArgs);8 G# e# ?/ U: s$ I+ w
- //8 L, J; j0 {5 s0 p8 V( |
- setenv("bootargs", bootargs);6 d. }- m$ m$ F Y9 \ |
- // sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL1 [$ t/ \" R5 [( m* x
- androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);, g& ]1 h! `9 a3 \) {/ M4 W- k
- setenv("bootargs", bootargs);
4 s7 L$ v: x& j) ^, {3 [4 C - p = getenv("bootcmd");. Y( E! ]8 }4 L# _5 i8 R9 r( c
- if((p == NULL) || (strstr(p, "booti mmc3"))8 M5 _ u- ^+ Q+ @: w8 ^% Z
- || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))- t" l* W9 e0 t8 `8 _* _
- {6 X8 A# ?" x0 R0 m& D
- setenv("bootcmd", "booti mmc3");
( k4 p: z- h6 t: r* h/ ^ - }
, `! Y0 [1 r8 f' L - }( w" C2 i" f$ F5 @
- else if(1 == boot_system_flags)//QT2 y! U8 e1 F# O9 M+ x5 [$ w
- {
0 q2 j6 D2 u% i( P - sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",, T+ C+ h# ]' @* w: [' u
- displayArgs);( g8 R8 X9 b+ G" y7 u
- setenv("bootargs", bootargs);4 n3 [/ W) K x" a% z
- p = getenv("bootcmd");
4 A1 g; g0 b B' X" q, X r8 H - if((p == NULL) || (strstr(p, "booti mmc3"))
( f2 L5 K9 o. ^& U - || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
! B5 L- S; u5 d9 k6 B - bootm")))
+ E2 X3 t& p( e - {
- `; ~6 ~8 U3 z2 j" J1 h2 o - setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");5 h+ ~- V7 K+ l6 s/ f
- }3 a9 n$ a, f6 Z# r' n _6 ]8 S6 v
- }
2 F8 M8 K1 @, o - else if(2 == boot_system_flags)//Ubuntu& k1 _9 y4 @& l! s
- {8 u' o+ N$ c+ N+ [ e/ ^
- sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait& T/ B( R! o/ `
- bootsystem=%s", displayArgs, getenv("bootsystem"));' B% l" u4 {+ S) ]7 Z
- setenv("bootargs", bootargs);) _, T. D1 w9 F9 d- I0 C* W) `" {
- p = getenv("bootcmd");
8 k9 C3 q. y2 G. M" ?2 y+ c - if((p == NULL) || (strstr(p, "booti mmc3"))! t" {# Q6 T/ a5 ?
- || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
6 i; o# D9 U( A8 E9 ^ - bootm")))
/ Q$ w( `* `" U0 C$ V - {
8 ~, R) ]5 }9 a2 L( u8 J - setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");0 L! v2 W% x8 e8 O( ^- r
- }
% n9 |8 N7 @# N K3 S$ z$ s t1 ` - }
8 e' ^6 r {) X& h- O3 M. j - }
复制代码 / Y6 O# V) t- G9 D
" P( x- Y3 d7 r8 M( w
3 Q! u( F+ |6 f0 r7 h: ?
|
|