|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
iTOP-iMX6 开发板烧写好之后,默认是 android 系统 9.7 寸屏幕的系统参数和屏幕参数。如下图。本文档主要介绍如何修改默认启动参数.5 S8 E' D1 L7 R
![]()
! E+ s6 V; s9 e c70.1 重要的环境变量
; F: g ^& m! W" F; q9 i; _比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_ARM/board.c”文件。
) g3 G" Z" f& q70.2 默认启动系统设置6 J2 f% E) d0 S! [9 O
默认启动系统参数是:bootsystem。打开“board.c”文件。搜索关键词“bootsystem”,找到如下代码:" G$ Z0 ?# T/ f5 e+ }% `1 r
6 S$ O) n- p/ i
通过修改“p = "android";”语句,可以修改默认的启动系统参数。下面的程序中,可以看见用到了“boot_system_flags”标志位。搜索该标志位,可以找到如下内容。0 x" l3 x# h- `
![]()
0 ^) D( a# {8 V7 ^+ D* M) \70.3 默认屏幕设置$ n% k1 C: B, o+ x- n
默认屏幕参数是:lcdtype。打开“board.c”文件。搜索关键词“lcdtype”。找到如下代码。
+ s f, D- y2 z# K![]()
! w1 S5 M% P- s4 ^: e通过修改“p = "9.7";”语句,可以修改默认屏幕设置。在上面截图的程序中可以看到,通过”sprintf();”函数设置了相应屏幕的“displayArgs”值。
% ?1 O" ]. W. u: h/ v70.4 认 默认 bootargs 参数设置, J, Q; B' k6 ?6 g# r" k* C$ Q
打开“board.c”文件。搜索关键词“bootargs”。找到如下代码。+ r1 ]. K9 k. g) ]; U5 C2 @
![]()
% z6 r4 a4 D4 P可以在此处修改“bootargs”参数设置。1 f' K/ m# e* s( e- e6 _
上面介绍到的详细代码如下:
1 `" z2 l% l4 z4 `% G. @- g$ v, ?- I- { B, \3 I1 }: M# c$ u
- p = getenv("bootsystem");( m3 [6 I ^; H+ a6 X) r
- if (NULL == p) {5 W; S. e. a6 f, v5 r- f' z
- printf("*** Warning use default bootsystem:android ***\n");
+ Q$ n) _, F4 L( s) K2 @# |( D - p = "android";4 ?. P( R+ ^8 w+ i1 Z; l7 ]0 f- L
- setenv("bootsystem", (char *)p);
: V4 @+ F1 p0 ~$ r, p - saveenv();( S7 X% t) P8 s+ a4 A: g3 L6 i
- }
' S5 x4 u1 R$ s) s% Y - printf("Boot system :%s\n", p);
: l8 w! |4 l f - if(!strcmp(p, "android"))
* g/ K; l, r4 ]+ M - {
9 Y$ x5 Y6 l9 f0 k - boot_system_flags = 0;
( o5 B9 ?. v0 R$ i - }
: {0 A+ t& Z+ X, ?: p - else if(!strcmp(p, "qt"))
+ W" q, ?6 l0 t; V; d0 ]9 J$ e" k# u - {
C4 _* S% f% P3 G7 `' ]# Q' Y - boot_system_flags = 1;
4 y/ c8 J' k$ M, L) I: ? - }
* H( u3 |' ^' |2 n1 V - else if(!strcmp(p, "ubuntu")); F% y6 M/ L4 E, W- F
- {+ t1 H. b5 D7 Z8 l$ a
- boot_system_flags = 2;9 P0 e" h$ ~ K* Q" _7 m
- }
1 Z* z4 F4 n) t" z6 t9 i - p = getenv("lcdtype");& n) _1 a4 m9 h- o, |2 a; U
- if (NULL == p) {
: g; Q, ~7 ` I% G, V8 \ - printf("*** Warning use default lcdtype:9.7 ***\n");
' z$ ?" o! a2 z; {- b - p = "9.7";8 k1 A2 i9 r' ]+ `; @4 S* l
- setenv("lcdtype", (char *)p);
+ i# E0 S. e( r( p' l - saveenv();
5 ?& X- L d: [9 W# G" c, H8 c& c - }
3 Y1 b4 u: }) A, D# i0 i - printf("LCD type:%s\n", p);( d Y3 c: |- S$ e0 |7 I
- if(!strcmp(p, "9.7"))
4 G7 c o0 c# o. c/ R! E* N! F - {
2 i6 \5 f4 r1 C8 x- w9 ? - lcd_type = 0;$ n8 f4 e3 i/ ?+ x" O$ c+ Q. t
- //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1ff
4 m4 f2 y: K6 W8 L+ R1 a3 g6 H - video=mxcfb2ff fbmem=30M");
- Z. [) u9 z1 N. W, w - sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin16 Y: a3 y* n: c
- video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");7 e% @0 m& p, {* H
- }- P( D/ N0 ~) Q
- else if(!strcmp(p, "7.0"))' G( c2 S2 r, r; b
- {9 h8 V- }5 [3 u" q# J8 x; R0 M t2 `
- lcd_type = 1;
1 S6 F: C7 ~2 F! ?5 i' y - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1ff. J; s/ H- v3 d+ ^5 s
- video=mxcfb2ff fbmem=30M");
# K4 L# S2 p: D# d. d - sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1
. |2 S& Q5 _, {: M K+ K( e9 m - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");' ^% s, e$ `! a3 K) I* {/ ?: ?; O1 W
- }8 ?' e9 D8 v6 W0 M) }4 a
- else if(!strcmp(p, "4.3"))
+ N* s5 E0 ?' e$ j4 L G% T. t - {+ M% J( G9 a9 h5 G0 ]/ O
- lcd_type = 2;
4 T) u, d6 _. W9 D# S! w1 L - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff
2 d5 P) M$ ?- J - video=mxcfb2ff fbmem=10M");
# ]* _! |% [- h+ {! k - sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32
8 [% U% U6 e: R* m" _6 h9 B - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");
' s/ G9 a N+ e+ O# L - }1 \/ r6 S; ?0 T1 E& t% m
- /* add by cym 20170814 */
4 I4 |: r+ q; p; X% a6 f - else if(!strcmp(p, "1024x600"))) i; a7 |4 y- T6 @4 v1 R
- {
/ T- w& m9 A5 G# A# s. t+ T - lcd_type = 3;& g' i- f* R" _8 h+ F
- //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff/ j8 [, r% X8 O
- video=mxcfb2:off fbmem=10M"); s3 @; ~3 f9 {1 J; m
- sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=323 e1 ` N. }; L! A4 x: r7 E
- video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
3 r' q) }: v6 p7 Q0 y9 y, v - }& A: c- ~* W6 Z" B8 n: u+ d: Y
- /* end add */
m1 X* G4 w7 }! S) g - else if(!strcmp(p, "hdmi"))
* ]) s9 U" g5 |3 G# P Y - {
- z! j5 b1 b' m# j# O1 A, v5 |, U$ R - sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32: U* X4 h0 @! o
- video=mxcfb1:off video=mxcfb2:off fbmem=48M");! o8 O o/ K! j
- }
1 }' n. G0 [, V- |5 c7 U5 i+ ^ - else: B* [6 ^6 p! A! z; v E0 @) H/ ^
- { n3 |( o i/ N# }9 l F6 V
- sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off# c. Y1 _1 A# T i5 J+ R
- video=mxcfb2:off fbmem=10M");. P4 ? { _( |. x/ l: e
- }
1 h, Y" X! o8 k8 R3 g1 D6 w - if(0 == boot_system_flags)//Android
. o o8 ]+ z" u+ E - {
: E. E( S7 {( M2 q5 O1 m7 \; Y" @ - sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M
( ]# m* w2 \7 R5 y - androidboot.console=ttymxc2 androidboot.hardware=freescale, u( ^( \* e E) ]- M/ D
- androidboot.serialno=1a0d39d4e3013411", displayArgs);" Y8 z1 `3 U5 w+ Z/ M
- //' i# d; C0 K7 d& B2 h
- setenv("bootargs", bootargs);0 ^3 s9 \) Y* A- f D
- // sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL3 H5 D6 Z/ t# e
- androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);4 n7 H( ]% P' L, W
- setenv("bootargs", bootargs);
) Q7 h$ r: p+ q$ Q$ ~3 n8 ] - p = getenv("bootcmd");
( a5 `) ]1 N1 K; O: ? - if((p == NULL) || (strstr(p, "booti mmc3"))
7 [! P+ b! p! I% J& I: J - || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))
. e H2 L: Z) [. O9 M+ N - {7 u# c& P: p5 K" K
- setenv("bootcmd", "booti mmc3");. a( T+ u- U# T4 v0 f m+ X) ^ t$ t0 M
- }0 Z _, ?2 e+ x. S6 W
- }: E: T" `% P! f" Q& D7 X' d4 F
- else if(1 == boot_system_flags)//QT/ U8 ?2 `& m" C+ r2 b7 `/ q
- {
. |# D0 y8 z6 ]& {$ t - sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",
* n; v N& D4 g9 R# C8 ^ - displayArgs);9 F- p# n7 W- e1 I: [) C* N- @1 M
- setenv("bootargs", bootargs);4 U+ \ N- | z
- p = getenv("bootcmd");
) V$ r6 l0 x4 D7 G3 P - if((p == NULL) || (strstr(p, "booti mmc3"))2 V+ ^4 Z8 R9 U1 m- U3 S d
- || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
% N; M: `( `% b5 T8 a. \ - bootm")))8 O* |8 d' R' _0 B9 r
- {" l; E {7 C$ q& u8 J# e
- setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
/ c; u9 T! |6 z - }! `" i" o. f1 Z: d# W
- }
# { x" j# F$ m% e" x) d - else if(2 == boot_system_flags)//Ubuntu
; \2 z I r! x F - {
2 M9 I3 t& {8 b! S5 \2 @ - sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait
6 g; r+ P/ }( q+ M6 s9 d* [" W/ ^ - bootsystem=%s", displayArgs, getenv("bootsystem"));) D4 |7 w9 O5 B5 i, Z
- setenv("bootargs", bootargs);
9 [3 r V/ `1 p: o, V5 I - p = getenv("bootcmd");. N& {- w: C( @7 G2 I* `
- if((p == NULL) || (strstr(p, "booti mmc3"))* j' d8 v4 [7 t& K2 L# ~
- || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
; k+ f% h) g% J7 P) _/ e - bootm")))
6 _' Y6 b% b5 D - {( e. k( D! ?5 ]! B- a) a1 |8 k
- setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
f* C, ]; Z& g7 W- R - }
/ [6 o! Y( K2 C. A( Z+ V; _1 h - }
7 m1 a% m' b* N: o j* g3 f$ h - }
复制代码
" b+ F- k7 C% v& h9 M![]()
. \0 w, } C3 x" A- b1 d5 c 7 A. f0 y: _+ Y
|
|