找回密码
 注册
关于网站域名变更的通知
查看: 349|回复: 0
打印 上一主题 下一主题

迅为IMX6Q开发板非设备树uboot-修改默认环境变量

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-1-7 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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
  1. {  B, \3 I1 }: M# c$ u
  2. p = getenv("bootsystem");( m3 [6 I  ^; H+ a6 X) r
  3. if (NULL == p) {5 W; S. e. a6 f, v5 r- f' z
  4. printf("*** Warning use default bootsystem:android ***\n");
    + Q$ n) _, F4 L( s) K2 @# |( D
  5. p = "android";4 ?. P( R+ ^8 w+ i1 Z; l7 ]0 f- L
  6. setenv("bootsystem", (char *)p);
    : V4 @+ F1 p0 ~$ r, p
  7. saveenv();( S7 X% t) P8 s+ a4 A: g3 L6 i
  8. }
    ' S5 x4 u1 R$ s) s% Y
  9. printf("Boot system :%s\n", p);
    : l8 w! |4 l  f
  10. if(!strcmp(p, "android"))
    * g/ K; l, r4 ]+ M
  11. {
    9 Y$ x5 Y6 l9 f0 k
  12. boot_system_flags = 0;
    ( o5 B9 ?. v0 R$ i
  13. }
    : {0 A+ t& Z+ X, ?: p
  14. else if(!strcmp(p, "qt"))
    + W" q, ?6 l0 t; V; d0 ]9 J$ e" k# u
  15. {
      C4 _* S% f% P3 G7 `' ]# Q' Y
  16. boot_system_flags = 1;
    4 y/ c8 J' k$ M, L) I: ?
  17. }
    * H( u3 |' ^' |2 n1 V
  18. else if(!strcmp(p, "ubuntu")); F% y6 M/ L4 E, W- F
  19. {+ t1 H. b5 D7 Z8 l$ a
  20. boot_system_flags = 2;9 P0 e" h$ ~  K* Q" _7 m
  21. }
    1 Z* z4 F4 n) t" z6 t9 i
  22. p = getenv("lcdtype");& n) _1 a4 m9 h- o, |2 a; U
  23. if (NULL == p) {
    : g; Q, ~7 `  I% G, V8 \
  24. printf("*** Warning use default lcdtype:9.7 ***\n");
    ' z$ ?" o! a2 z; {- b
  25. p = "9.7";8 k1 A2 i9 r' ]+ `; @4 S* l
  26. setenv("lcdtype", (char *)p);
    + i# E0 S. e( r( p' l
  27. saveenv();
    5 ?& X- L  d: [9 W# G" c, H8 c& c
  28. }
    3 Y1 b4 u: }) A, D# i0 i
  29. printf("LCD type:%s\n", p);( d  Y3 c: |- S$ e0 |7 I
  30. if(!strcmp(p, "9.7"))
    4 G7 c  o0 c# o. c/ R! E* N! F
  31. {
    2 i6 \5 f4 r1 C8 x- w9 ?
  32. lcd_type = 0;$ n8 f4 e3 i/ ?+ x" O$ c+ Q. t
  33. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1ff
    4 m4 f2 y: K6 W8 L+ R1 a3 g6 H
  34. video=mxcfb2ff fbmem=30M");
    - Z. [) u9 z1 N. W, w
  35. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin16 Y: a3 y* n: c
  36. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");7 e% @0 m& p, {* H
  37. }- P( D/ N0 ~) Q
  38. else if(!strcmp(p, "7.0"))' G( c2 S2 r, r; b
  39. {9 h8 V- }5 [3 u" q# J8 x; R0 M  t2 `
  40. lcd_type = 1;
    1 S6 F: C7 ~2 F! ?5 i' y
  41. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1ff. J; s/ H- v3 d+ ^5 s
  42. video=mxcfb2ff fbmem=30M");
    # K4 L# S2 p: D# d. d
  43. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1
    . |2 S& Q5 _, {: M  K+ K( e9 m
  44. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");' ^% s, e$ `! a3 K) I* {/ ?: ?; O1 W
  45. }8 ?' e9 D8 v6 W0 M) }4 a
  46. else if(!strcmp(p, "4.3"))
    + N* s5 E0 ?' e$ j4 L  G% T. t
  47. {+ M% J( G9 a9 h5 G0 ]/ O
  48. lcd_type = 2;
    4 T) u, d6 _. W9 D# S! w1 L
  49. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff
    2 d5 P) M$ ?- J
  50. video=mxcfb2ff fbmem=10M");
    # ]* _! |% [- h+ {! k
  51. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32
    8 [% U% U6 e: R* m" _6 h9 B
  52. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");
    ' s/ G9 a  N+ e+ O# L
  53. }1 \/ r6 S; ?0 T1 E& t% m
  54. /* add by cym 20170814 */
    4 I4 |: r+ q; p; X% a6 f
  55. else if(!strcmp(p, "1024x600"))) i; a7 |4 y- T6 @4 v1 R
  56. {
    / T- w& m9 A5 G# A# s. t+ T
  57. lcd_type = 3;& g' i- f* R" _8 h+ F
  58. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff/ j8 [, r% X8 O
  59. video=mxcfb2:off fbmem=10M");  s3 @; ~3 f9 {1 J; m
  60. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=323 e1 `  N. }; L! A4 x: r7 E
  61. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
    3 r' q) }: v6 p7 Q0 y9 y, v
  62. }& A: c- ~* W6 Z" B8 n: u+ d: Y
  63. /* end add */
      m1 X* G4 w7 }! S) g
  64. else if(!strcmp(p, "hdmi"))
    * ]) s9 U" g5 |3 G# P  Y
  65. {
    - z! j5 b1 b' m# j# O1 A, v5 |, U$ R
  66. sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32: U* X4 h0 @! o
  67. video=mxcfb1:off video=mxcfb2:off fbmem=48M");! o8 O  o/ K! j
  68. }
    1 }' n. G0 [, V- |5 c7 U5 i+ ^
  69. else: B* [6 ^6 p! A! z; v  E0 @) H/ ^
  70. {  n3 |( o  i/ N# }9 l  F6 V
  71. sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off# c. Y1 _1 A# T  i5 J+ R
  72. video=mxcfb2:off fbmem=10M");. P4 ?  {  _( |. x/ l: e
  73. }
    1 h, Y" X! o8 k8 R3 g1 D6 w
  74. if(0 == boot_system_flags)//Android
    . o  o8 ]+ z" u+ E
  75. {
    : E. E( S7 {( M2 q5 O1 m7 \; Y" @
  76. sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M
    ( ]# m* w2 \7 R5 y
  77. androidboot.console=ttymxc2 androidboot.hardware=freescale, u( ^( \* e  E) ]- M/ D
  78. androidboot.serialno=1a0d39d4e3013411", displayArgs);" Y8 z1 `3 U5 w+ Z/ M
  79. //' i# d; C0 K7 d& B2 h
  80. setenv("bootargs", bootargs);0 ^3 s9 \) Y* A- f  D
  81. // sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL3 H5 D6 Z/ t# e
  82. androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);4 n7 H( ]% P' L, W
  83. setenv("bootargs", bootargs);
    ) Q7 h$ r: p+ q$ Q$ ~3 n8 ]
  84. p = getenv("bootcmd");
    ( a5 `) ]1 N1 K; O: ?
  85. if((p == NULL) || (strstr(p, "booti mmc3"))
    7 [! P+ b! p! I% J& I: J
  86. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))
    . e  H2 L: Z) [. O9 M+ N
  87. {7 u# c& P: p5 K" K
  88. setenv("bootcmd", "booti mmc3");. a( T+ u- U# T4 v0 f  m+ X) ^  t$ t0 M
  89. }0 Z  _, ?2 e+ x. S6 W
  90. }: E: T" `% P! f" Q& D7 X' d4 F
  91. else if(1 == boot_system_flags)//QT/ U8 ?2 `& m" C+ r2 b7 `/ q
  92. {
    . |# D0 y8 z6 ]& {$ t
  93. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",
    * n; v  N& D4 g9 R# C8 ^
  94. displayArgs);9 F- p# n7 W- e1 I: [) C* N- @1 M
  95. setenv("bootargs", bootargs);4 U+ \  N- |  z
  96. p = getenv("bootcmd");
    ) V$ r6 l0 x4 D7 G3 P
  97. if((p == NULL) || (strstr(p, "booti mmc3"))2 V+ ^4 Z8 R9 U1 m- U3 S  d
  98. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
    % N; M: `( `% b5 T8 a. \
  99. bootm")))8 O* |8 d' R' _0 B9 r
  100. {" l; E  {7 C$ q& u8 J# e
  101. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
    / c; u9 T! |6 z
  102. }! `" i" o. f1 Z: d# W
  103. }
    # {  x" j# F$ m% e" x) d
  104. else if(2 == boot_system_flags)//Ubuntu
    ; \2 z  I  r! x  F
  105. {
    2 M9 I3 t& {8 b! S5 \2 @
  106. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait
    6 g; r+ P/ }( q+ M6 s9 d* [" W/ ^
  107. bootsystem=%s", displayArgs, getenv("bootsystem"));) D4 |7 w9 O5 B5 i, Z
  108. setenv("bootargs", bootargs);
    9 [3 r  V/ `1 p: o, V5 I
  109. p = getenv("bootcmd");. N& {- w: C( @7 G2 I* `
  110. if((p == NULL) || (strstr(p, "booti mmc3"))* j' d8 v4 [7 t& K2 L# ~
  111. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
    ; k+ f% h) g% J7 P) _/ e
  112. bootm")))
    6 _' Y6 b% b5 D
  113. {( e. k( D! ?5 ]! B- a) a1 |8 k
  114. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
      f* C, ]; Z& g7 W- R
  115. }
    / [6 o! Y( K2 C. A( Z+ V; _1 h
  116. }
    7 m1 a% m' b* N: o  j* g3 f$ h
  117. }
复制代码

" b+ F- k7 C% v& h9 M
. \0 w, }  C3 x" A- b1 d5 c7 A. f0 y: _+ Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-21 04:15 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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