| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
iTOP-iMX6 开发板烧写好之后,默认是 android 系统 9.7 寸屏幕的系统参数和屏幕参数。如下图。本文档主要介绍如何修改默认启动参数.9 q7 N. z! v" o, m. b 
 4 q8 ^6 s, P& [) K* O) S! k 
70.1  重要的环境变量3 `, i3 O0 K2 N' h0 r 
比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_ARM/board.c”文件。 
% z: F) Q( e9 A3 P) O/ Y; D70.2  默认启动系统设置) @; G/ j/ {7 k 
默认启动系统参数是:bootsystem。打开“board.c”文件。搜索关键词“bootsystem”,找到如下代码:- N) p- S/ i3 F* w9 r  M& u 
![]()  
- m$ T5 R! M/ ~# |- M& U通过修改“p = "android";”语句,可以修改默认的启动系统参数。下面的程序中,可以看见用到了“boot_system_flags”标志位。搜索该标志位,可以找到如下内容。 
, x! [1 [7 I, G" V![]()  
$ W2 c! _, H2 u70.3  默认屏幕设置7 r5 D4 f- A: J$ y/ b 
默认屏幕参数是:lcdtype。打开“board.c”文件。搜索关键词“lcdtype”。找到如下代码。# e/ J; i  ]. }! O; ^' I8 w 
![]()  
. V, W0 g0 g! ^0 g" q0 P7 N通过修改“p = "9.7";”语句,可以修改默认屏幕设置。在上面截图的程序中可以看到,通过”sprintf();”函数设置了相应屏幕的“displayArgs”值。 
$ K8 |" ]. [1 I# a3 j* k70.4 认 默认 bootargs  参数设置( n: `$ K6 Y: { 
打开“board.c”文件。搜索关键词“bootargs”。找到如下代码。7 ~6 q0 _, `+ L2 q5 c3 W, f, G7 } 
 8 \  D' z8 E' m/ `" C 
可以在此处修改“bootargs”参数设置。* ?! v" F# u9 o* Q4 h: X! Z: u7 M 
上面介绍到的详细代码如下: 
/ C' {0 V9 ~5 W& F7 b- {
 
* i! \. @/ w4 C - p = getenv("bootsystem");6 T) l8 Q4 h* K6 x
 
 - if (NULL == p) {& Q9 t- I7 {  Z, B4 j' u4 [+ C6 g
 
 - printf("*** Warning use default bootsystem:android ***\n");& E  R" a* j- S& |! e* S/ t
 
 - p = "android";
 
$ }" B( }! @# Q' o3 b) v6 s& Y) ?% w - setenv("bootsystem", (char *)p);) F& k9 D/ w( B& S9 T" D5 |
 
 - saveenv();1 ~6 W5 t1 y" I* Z3 X# q! D# Z
 
 - }
 
# s. Y0 A) T8 Q5 V+ l# \ - printf("Boot system :%s\n", p);
 
* J( d3 `) b; R9 O - if(!strcmp(p, "android"))( X$ e1 @+ I8 M$ X0 I/ b9 l9 C
 
 - {- M# X6 j8 M2 }# S# r1 o. u
 
 - boot_system_flags = 0;
 
! d6 [/ g% X7 h8 s( L; ^ - }
 
# ]! w/ A$ d- F - else if(!strcmp(p, "qt"))1 g" X. C) z7 s7 P% V4 S
 
 - {
 
! E9 ?5 @, V$ Y1 }. t& z - boot_system_flags = 1;, [3 @: c) M  Q. d- p( F# H
 
 - }6 K$ R  t) n$ `0 \) ]: j
 
 - else if(!strcmp(p, "ubuntu"))# R1 u! z6 f3 g, n0 x
 
 - {
 
4 ]( v6 x5 B8 g$ p* |, V2 p - boot_system_flags = 2;
 
$ t4 I2 x' U( l5 }' l - }" P6 Z' @" D  w& r
 
 - p = getenv("lcdtype");
 
" }; _( \, Q3 \. d: f - if (NULL == p) {! b2 e9 J5 H) T
 
 - printf("*** Warning use default lcdtype:9.7 ***\n");
 
' N4 f4 }' y! d! v - p = "9.7";0 r) V/ e# P6 `' l
 
 - setenv("lcdtype", (char *)p);
 
( \* ?0 A: o- K' B4 W: ?5 f( Y - saveenv();
 
0 U& v$ V# A* }+ Q - }
 
* m2 [) E: P( p% I - printf("LCD type:%s\n", p);' U- s2 U- c) J$ K  l( M
 
 - if(!strcmp(p, "9.7"))9 G0 [: N3 d3 _: s. P
 
 - {1 C( F5 k/ H3 |3 |. x$ X8 G4 f& f' e& T
 
 - lcd_type = 0;3 J6 O) L# s3 A+ B7 W
 
 - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1ff% {# [0 ?" z1 [  V/ s, |
 
 - video=mxcfb2ff fbmem=30M");% J2 C5 T  k8 o+ {6 a2 @/ w
 
 - sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin12 b# O5 H3 ?" p5 B/ i. Q/ _8 L: Q
 
 - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");
 
1 \% D- S+ F0 U, x - }" Q/ g4 [) I/ L6 {. o  S4 t
 
 - else if(!strcmp(p, "7.0"))( N( ?+ \" k" M4 r" @5 `8 s! ^6 }
 
 - {5 S8 y% a- E2 H$ G, F
 
 - lcd_type = 1;
 
% q* y( ]# U, Z" v0 U7 h) ~, e - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1ff
 
8 V/ f  x0 w: w: I" E - video=mxcfb2ff fbmem=30M");; H6 B/ b+ i8 N2 t  T
 
 - sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1
 
% z; \( y5 w- Y - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");4 U6 A' Q9 X1 l$ R' K- l
 
 - }: q4 s9 r: H* e1 Y+ m5 m% P: y9 N) d
 
 - else if(!strcmp(p, "4.3"))! X" V+ N- [/ D6 {, }& k
 
 - {- W+ g' z. Q& f0 Y
 
 - lcd_type = 2;! `  E$ v. i' n
 
 - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff  L1 Q- n) I) D9 W: U  C- Z
 
 - video=mxcfb2ff fbmem=10M");
 
0 [& X$ f4 C- ^" D. t7 S5 J0 W - sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32
 
0 i, z+ r) i2 Y# t* u; L; Y, U - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");
 
* g! z, u# Q2 F, U - }
 
, [& u* b0 I! F8 C - /* add by cym 20170814 */
 
. Q' K" w6 Y$ V5 e. U" h - else if(!strcmp(p, "1024x600"))
 
4 v2 m) a: k& {7 u5 t4 l - {
 
/ A7 m5 H1 h4 K% q5 m5 Y, }3 Q - lcd_type = 3;$ H2 {; y9 E$ N  o7 _7 J) n2 r* C
 
 - //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff2 _1 I2 U- p6 C. F, P' a6 x9 t
 
 - video=mxcfb2:off fbmem=10M");
 
! a' X' Q$ ?8 }4 B  \1 w* X - sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=32
 
, e6 p3 J" O  Y# z9 Q) `: ^ - video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
 
/ r3 [% g4 `  ~) F( h; @4 _& R - }" Z2 \% i, h) ~
 
 - /* end add */5 }) S; C) G1 t3 D, A+ X
 
 - else if(!strcmp(p, "hdmi"))
 
; v3 n0 H0 b, [ - {. W( k$ G3 q4 S
 
 - sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32- D; p( P. @, V+ v
 
 - video=mxcfb1:off video=mxcfb2:off fbmem=48M");
 
4 l/ e1 F3 x8 O3 b8 R - }
 
6 `6 u+ G. I9 N  C% A! @ - else' H" p" h+ W2 G3 X
 
 - {) R. y. D1 Y8 @6 L4 w. e$ ~# R
 
 - sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off+ M! ^  d3 s3 h4 @# K+ b: [
 
 - video=mxcfb2:off fbmem=10M");5 ^# N  y0 g: z4 V# p' S
 
 - }
 
: B. p8 m! I1 c0 ?: a: D - if(0 == boot_system_flags)//Android2 j& m( F. l4 ~, t: {
 
 - {) q: [9 |* K% P5 N
 
 - sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M
 
8 a5 s) G& X( n( L9 ?1 C2 D* D. m! W - androidboot.console=ttymxc2 androidboot.hardware=freescale+ t# y/ S. n2 x9 F( L/ m, B
 
 - androidboot.serialno=1a0d39d4e3013411", displayArgs);5 d8 ?0 F$ w5 R
 
 - //
 
. f+ x0 F3 F, g0 {2 P$ T( Y  y - setenv("bootargs", bootargs);% A# ^! p, q* J& F/ d# D
 
 - // sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL
 
/ J& _2 n# T/ Z) E1 d4 Z4 F - androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);. O8 i% h3 r: s3 \, |& d
 
 - setenv("bootargs", bootargs);& ~, |( p8 y0 {: e7 N2 K
 
 - p = getenv("bootcmd");0 B. W! W: T+ K4 K  u( t
 
 - if((p == NULL) || (strstr(p, "booti mmc3"))
 
' L& e1 d) ]% B  `& O& y' C - || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))
 
# J" l! @0 M% P - {
 
; e& `7 T$ ~2 |: c - setenv("bootcmd", "booti mmc3");
 
" \5 v( r; \# S' } - }! b/ v- y- A! a5 M# \2 t
 
 - }
 
% _* ~, f5 k6 X2 P( M5 Q$ n - else if(1 == boot_system_flags)//QT
 
& P1 Z' T5 k/ y3 Y - {
 
+ l. |0 b4 d& R! x- f1 R9 h# ? - sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",
 
- N! t+ v4 I; J& H2 g7 f - displayArgs);! d4 Y3 [7 G1 o8 P
 
 - setenv("bootargs", bootargs);
 
3 D2 j- g# L" {2 |$ Q' l - p = getenv("bootcmd");  D/ d, Z+ s5 K6 c3 U& m
 
 - if((p == NULL) || (strstr(p, "booti mmc3"))* L, P4 a6 d* k6 m- t
 
 - || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;4 x) k* B4 U0 V: ]9 f4 t
 
 - bootm")))
 
, i' K5 C  {4 W8 h$ r5 | - {
 
" W! x" R7 O# [1 q9 I - setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
 
3 [4 z6 _1 R6 K$ a2 x3 k) d9 Q - }
 
5 H! {8 S5 Z. C; ^8 Z) o3 S, T - }
 
  d5 o% ~# n6 c" ?/ g% k( t - else if(2 == boot_system_flags)//Ubuntu0 n% D8 O! S7 m. h9 r
 
 - {0 d" R6 T% U/ z# Q
 
 - sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait
 
  `* o! o/ J# R  z6 m - bootsystem=%s", displayArgs, getenv("bootsystem"));
 
0 s- y# G: ]4 {1 M  c% a" b - setenv("bootargs", bootargs);
 
% e: h# H7 v- ~' i3 w - p = getenv("bootcmd");# w. t. K* k" B1 V7 s
 
 - if((p == NULL) || (strstr(p, "booti mmc3"))
 
- v, ^! ?" ?2 S! j. K& }/ P7 E/ ~$ [8 i - || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;% H2 I2 w6 J: l/ J* K" i
 
 - bootm")))4 U* }: U, X& e& q
 
 - {: h3 }( E6 L+ }1 h! S; \( {' Z
 
 - setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
 
4 h* H* M. m& S7 Y - }- n! c& j) m# m" C- k6 f
 
 - }
 
# }6 j& t, y$ W1 v* J5 H - }
 
  复制代码 
2 G. N7 S0 p1 R% r. J7 z2 _![]()  
: g) e/ m5 s1 i! d5 _![]()  
! i% n# Z, j9 C1 g7 ^ |   
 
 
 
 |