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

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

[复制链接]

该用户从未签到

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

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
  1. {
    7 `5 _* V9 u8 v! i0 M4 u0 b
  2. p = getenv("bootsystem");
    $ F, m+ _, O/ a5 K! I- _3 `
  3. if (NULL == p) {' a  W6 B( q* j. M0 ?
  4. printf("*** Warning use default bootsystem:android ***\n");
    - z' F% F; F- w) X' \' B+ Y2 G
  5. p = "android";9 V" A8 K3 ^$ G" u+ U5 Z% Q
  6. setenv("bootsystem", (char *)p);1 B% c& }9 G$ W& L1 L! H
  7. saveenv();4 i% \1 b( O* r* w
  8. }
    0 m! j8 }! }. l6 i2 R  ^5 i7 N5 N
  9. printf("Boot system :%s\n", p);
    ; h9 E$ z5 d6 V( N. v3 L% I9 h
  10. if(!strcmp(p, "android"))
    ( q# W/ @& ~+ x, c7 {0 r
  11. {% s" ]1 ^7 I: r0 v  y7 f
  12. boot_system_flags = 0;
      u7 m. |0 h) p" I
  13. }4 B( H/ ?" k" u' P  A2 C" \
  14. else if(!strcmp(p, "qt"))
    , y2 B( \  g4 _  f
  15. {
    : j3 @& R# t1 s3 R- H& S
  16. boot_system_flags = 1;  H) m5 {. v) q  H% O
  17. }
    ) Q9 Q% Z# W" J7 d& L
  18. else if(!strcmp(p, "ubuntu")): C% I  |, o7 V! w- F
  19. {5 M: w; r7 d. f; U1 q, [
  20. boot_system_flags = 2;
    4 Y2 Y& q& X! U$ V/ X% ?
  21. }
    ( \8 d3 D3 ^" q. @& E9 m
  22. p = getenv("lcdtype");
    1 Z" Z7 F: W& o- h' P( E8 @
  23. if (NULL == p) {
    3 H3 C. p. Q0 f* |' W4 o* i
  24. printf("*** Warning use default lcdtype:9.7 ***\n");
    ! g8 K, [: t5 |8 a& j
  25. p = "9.7";
    + t: R$ Z$ z$ s5 E. B1 `0 W* U
  26. setenv("lcdtype", (char *)p);
    4 z! Y6 @' `& J3 q9 F2 a$ Y2 P
  27. saveenv();
    : E7 e4 L- h. q
  28. }
    7 R9 y( b- e- g9 R5 d4 d+ J
  29. printf("LCD type:%s\n", p);. l$ d1 m& h1 B8 o8 ~( S
  30. if(!strcmp(p, "9.7"))
    2 ?  i; v% d+ I# l
  31. {
    ' o* @( M6 o- J& f4 O7 ]6 B$ t
  32. lcd_type = 0;& S# j: M6 ~% t. x0 u1 h4 ~
  33. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1ff
    * A% t% ?! }& P3 E
  34. video=mxcfb2ff fbmem=30M");% S9 K2 g& c( I, T3 Z% A& M
  35. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin1
    5 N" m* z4 L  }+ x
  36. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");0 o) E( Y3 a% @. x+ `
  37. }# ~4 T, {' Z5 i2 h# P# s( p+ U) J
  38. else if(!strcmp(p, "7.0"))$ n4 o0 l& O9 W, m% t
  39. {- h8 ~' ?: Z( k5 G) E2 j
  40. lcd_type = 1;
    $ n% S$ |  {% O6 s6 R
  41. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1ff. G7 s; P0 B5 A
  42. video=mxcfb2ff fbmem=30M");
    / d% Z4 k( W) R* d! @/ P
  43. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1
    4 Q, g3 A5 p8 ]6 ?* E, F+ T
  44. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");: ]) k7 Q% J& s, q( I9 U# l
  45. }# h6 ~) x2 x6 Z' ~! V/ x
  46. else if(!strcmp(p, "4.3"))
    ) U8 S/ j' l( i# \. D, @4 ]0 O  U
  47. {
    2 T2 A% m$ P+ l3 V
  48. lcd_type = 2;
    3 V( g0 J8 g8 f3 F2 {" X
  49. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff# h. C4 t6 D- O$ u0 a; [" k% F- }
  50. video=mxcfb2ff fbmem=10M");9 }/ O5 }" {7 F& s- S
  51. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32
    ! G0 ?* y. Z$ y0 m
  52. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");3 Y7 A" s" ~  h7 [8 [2 [1 H/ _
  53. }
    3 c8 B0 x! x0 z! G, E
  54. /* add by cym 20170814 */& m6 d7 @8 M+ f/ S* x* P! S
  55. else if(!strcmp(p, "1024x600"))" K" L; e; k  S) A0 x# B- Y& Z
  56. {
    4 v8 V1 t4 R2 v: Z. }
  57. lcd_type = 3;
    . Q; X- N" X# B, K( R/ R( Z
  58. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff0 q$ p4 V8 z( C: ]
  59. video=mxcfb2:off fbmem=10M");+ D, g% B0 w. [6 V' B, X
  60. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=32
    9 S0 ~% l, N% T4 X& M0 R
  61. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
    1 N$ G/ O5 c, L" Z8 [3 f& \* p
  62. }6 o. h4 O6 r/ U$ B
  63. /* end add */9 z* H1 z4 y9 {5 t' |5 u! S6 C
  64. else if(!strcmp(p, "hdmi"))) v2 V: G6 Z/ X8 s% o$ w
  65. {
    9 Z% ?: O. f* p9 b! ^
  66. sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32
    4 R9 C/ x$ a6 ?' p' A8 ^
  67. video=mxcfb1:off video=mxcfb2:off fbmem=48M");
    - l- z- f$ z6 J$ J& a$ Q) i
  68. }0 D1 D& Y- I% P: D/ T. x8 x
  69. else
    2 t- s' m5 i( G& T4 {4 ~
  70. {8 }. |) ~3 z: A: b( F
  71. sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off' m+ _  L8 D3 _/ j* c, T: I
  72. video=mxcfb2:off fbmem=10M");! o: l$ Y) T  f' {  A* _0 I0 a
  73. }
    + r2 W5 S" C5 S; ^" z! h% r0 A5 n
  74. if(0 == boot_system_flags)//Android4 M( n% i& ]" l# p1 ]+ Z+ S1 B
  75. {
    " O! o4 C& f! L6 v  C$ w
  76. sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M
    ! V. j( P( E9 k, ~
  77. androidboot.console=ttymxc2 androidboot.hardware=freescale2 A3 y. i$ Z! p- A8 W, i/ w8 f
  78. androidboot.serialno=1a0d39d4e3013411", displayArgs);8 G# e# ?/ U: s$ I+ w
  79. //8 L, J; j0 {5 s0 p8 V( |
  80. setenv("bootargs", bootargs);6 d. }- m$ m$ F  Y9 \  |
  81. // sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL1 [$ t/ \" R5 [( m* x
  82. androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);, g& ]1 h! `9 a3 \) {/ M4 W- k
  83. setenv("bootargs", bootargs);
    4 s7 L$ v: x& j) ^, {3 [4 C
  84. p = getenv("bootcmd");. Y( E! ]8 }4 L# _5 i8 R9 r( c
  85. if((p == NULL) || (strstr(p, "booti mmc3"))8 M5 _  u- ^+ Q+ @: w8 ^% Z
  86. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))- t" l* W9 e0 t8 `8 _* _
  87. {6 X8 A# ?" x0 R0 m& D
  88. setenv("bootcmd", "booti mmc3");
    ( k4 p: z- h6 t: r* h/ ^
  89. }
    , `! Y0 [1 r8 f' L
  90. }( w" C2 i" f$ F5 @
  91. else if(1 == boot_system_flags)//QT2 y! U8 e1 F# O9 M+ x5 [$ w
  92. {
    0 q2 j6 D2 u% i( P
  93. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",, T+ C+ h# ]' @* w: [' u
  94. displayArgs);( g8 R8 X9 b+ G" y7 u
  95. setenv("bootargs", bootargs);4 n3 [/ W) K  x" a% z
  96. p = getenv("bootcmd");
    4 A1 g; g0 b  B' X" q, X  r8 H
  97. if((p == NULL) || (strstr(p, "booti mmc3"))
    ( f2 L5 K9 o. ^& U
  98. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
    ! B5 L- S; u5 d9 k6 B
  99. bootm")))
    + E2 X3 t& p( e
  100. {
    - `; ~6 ~8 U3 z2 j" J1 h2 o
  101. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");5 h+ ~- V7 K+ l6 s/ f
  102. }3 a9 n$ a, f6 Z# r' n  _6 ]8 S6 v
  103. }
    2 F8 M8 K1 @, o
  104. else if(2 == boot_system_flags)//Ubuntu& k1 _9 y4 @& l! s
  105. {8 u' o+ N$ c+ N+ [  e/ ^
  106. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait& T/ B( R! o/ `
  107. bootsystem=%s", displayArgs, getenv("bootsystem"));' B% l" u4 {+ S) ]7 Z
  108. setenv("bootargs", bootargs);) _, T. D1 w9 F9 d- I0 C* W) `" {
  109. p = getenv("bootcmd");
    8 k9 C3 q. y2 G. M" ?2 y+ c
  110. if((p == NULL) || (strstr(p, "booti mmc3"))! t" {# Q6 T/ a5 ?
  111. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
    6 i; o# D9 U( A8 E9 ^
  112. bootm")))
    / Q$ w( `* `" U0 C$ V
  113. {
    8 ~, R) ]5 }9 a2 L( u8 J
  114. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");0 L! v2 W% x8 e8 O( ^- r
  115. }
    % n9 |8 N7 @# N  K3 S$ z$ s  t1 `
  116. }
    8 e' ^6 r  {) X& h- O3 M. j
  117. }
复制代码
/ Y6 O# V) t- G9 D
" P( x- Y3 d7 r8 M( w
3 Q! u( F+ |6 f0 r7 h: ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-11 09:23 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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