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

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

[复制链接]

该用户从未签到

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

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
  1. {
    * i! \. @/ w4 C
  2. p = getenv("bootsystem");6 T) l8 Q4 h* K6 x
  3. if (NULL == p) {& Q9 t- I7 {  Z, B4 j' u4 [+ C6 g
  4. printf("*** Warning use default bootsystem:android ***\n");& E  R" a* j- S& |! e* S/ t
  5. p = "android";
    $ }" B( }! @# Q' o3 b) v6 s& Y) ?% w
  6. setenv("bootsystem", (char *)p);) F& k9 D/ w( B& S9 T" D5 |
  7. saveenv();1 ~6 W5 t1 y" I* Z3 X# q! D# Z
  8. }
    # s. Y0 A) T8 Q5 V+ l# \
  9. printf("Boot system :%s\n", p);
    * J( d3 `) b; R9 O
  10. if(!strcmp(p, "android"))( X$ e1 @+ I8 M$ X0 I/ b9 l9 C
  11. {- M# X6 j8 M2 }# S# r1 o. u
  12. boot_system_flags = 0;
    ! d6 [/ g% X7 h8 s( L; ^
  13. }
    # ]! w/ A$ d- F
  14. else if(!strcmp(p, "qt"))1 g" X. C) z7 s7 P% V4 S
  15. {
    ! E9 ?5 @, V$ Y1 }. t& z
  16. boot_system_flags = 1;, [3 @: c) M  Q. d- p( F# H
  17. }6 K$ R  t) n$ `0 \) ]: j
  18. else if(!strcmp(p, "ubuntu"))# R1 u! z6 f3 g, n0 x
  19. {
    4 ]( v6 x5 B8 g$ p* |, V2 p
  20. boot_system_flags = 2;
    $ t4 I2 x' U( l5 }' l
  21. }" P6 Z' @" D  w& r
  22. p = getenv("lcdtype");
    " }; _( \, Q3 \. d: f
  23. if (NULL == p) {! b2 e9 J5 H) T
  24. printf("*** Warning use default lcdtype:9.7 ***\n");
    ' N4 f4 }' y! d! v
  25. p = "9.7";0 r) V/ e# P6 `' l
  26. setenv("lcdtype", (char *)p);
    ( \* ?0 A: o- K' B4 W: ?5 f( Y
  27. saveenv();
    0 U& v$ V# A* }+ Q
  28. }
    * m2 [) E: P( p% I
  29. printf("LCD type:%s\n", p);' U- s2 U- c) J$ K  l( M
  30. if(!strcmp(p, "9.7"))9 G0 [: N3 d3 _: s. P
  31. {1 C( F5 k/ H3 |3 |. x$ X8 G4 f& f' e& T
  32. lcd_type = 0;3 J6 O) L# s3 A+ B7 W
  33. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1ff% {# [0 ?" z1 [  V/ s, |
  34. video=mxcfb2ff fbmem=30M");% J2 C5 T  k8 o+ {6 a2 @/ w
  35. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin12 b# O5 H3 ?" p5 B/ i. Q/ _8 L: Q
  36. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");
    1 \% D- S+ F0 U, x
  37. }" Q/ g4 [) I/ L6 {. o  S4 t
  38. else if(!strcmp(p, "7.0"))( N( ?+ \" k" M4 r" @5 `8 s! ^6 }
  39. {5 S8 y% a- E2 H$ G, F
  40. lcd_type = 1;
    % q* y( ]# U, Z" v0 U7 h) ~, e
  41. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1ff
    8 V/ f  x0 w: w: I" E
  42. video=mxcfb2ff fbmem=30M");; H6 B/ b+ i8 N2 t  T
  43. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1
    % z; \( y5 w- Y
  44. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");4 U6 A' Q9 X1 l$ R' K- l
  45. }: q4 s9 r: H* e1 Y+ m5 m% P: y9 N) d
  46. else if(!strcmp(p, "4.3"))! X" V+ N- [/ D6 {, }& k
  47. {- W+ g' z. Q& f0 Y
  48. lcd_type = 2;! `  E$ v. i' n
  49. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff  L1 Q- n) I) D9 W: U  C- Z
  50. video=mxcfb2ff fbmem=10M");
    0 [& X$ f4 C- ^" D. t7 S5 J0 W
  51. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32
    0 i, z+ r) i2 Y# t* u; L; Y, U
  52. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2ff fbmem=48M");
    * g! z, u# Q2 F, U
  53. }
    , [& u* b0 I! F8 C
  54. /* add by cym 20170814 */
    . Q' K" w6 Y$ V5 e. U" h
  55. else if(!strcmp(p, "1024x600"))
    4 v2 m) a: k& {7 u5 t4 l
  56. {
    / A7 m5 H1 h4 K% q5 m5 Y, }3 Q
  57. lcd_type = 3;$ H2 {; y9 E$ N  o7 _7 J) n2 r* C
  58. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1ff2 _1 I2 U- p6 C. F, P' a6 x9 t
  59. video=mxcfb2:off fbmem=10M");
    ! a' X' Q$ ?8 }4 B  \1 w* X
  60. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=32
    , e6 p3 J" O  Y# z9 Q) `: ^
  61. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
    / r3 [% g4 `  ~) F( h; @4 _& R
  62. }" Z2 \% i, h) ~
  63. /* end add */5 }) S; C) G1 t3 D, A+ X
  64. else if(!strcmp(p, "hdmi"))
    ; v3 n0 H0 b, [
  65. {. W( k$ G3 q4 S
  66. sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32- D; p( P. @, V+ v
  67. video=mxcfb1:off video=mxcfb2:off fbmem=48M");
    4 l/ e1 F3 x8 O3 b8 R
  68. }
    6 `6 u+ G. I9 N  C% A! @
  69. else' H" p" h+ W2 G3 X
  70. {) R. y. D1 Y8 @6 L4 w. e$ ~# R
  71. sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off+ M! ^  d3 s3 h4 @# K+ b: [
  72. video=mxcfb2:off fbmem=10M");5 ^# N  y0 g: z4 V# p' S
  73. }
    : B. p8 m! I1 c0 ?: a: D
  74. if(0 == boot_system_flags)//Android2 j& m( F. l4 ~, t: {
  75. {) q: [9 |* K% P5 N
  76. sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M
    8 a5 s) G& X( n( L9 ?1 C2 D* D. m! W
  77. androidboot.console=ttymxc2 androidboot.hardware=freescale+ t# y/ S. n2 x9 F( L/ m, B
  78. androidboot.serialno=1a0d39d4e3013411", displayArgs);5 d8 ?0 F$ w5 R
  79. //
    . f+ x0 F3 F, g0 {2 P$ T( Y  y
  80. setenv("bootargs", bootargs);% A# ^! p, q* J& F/ d# D
  81. // sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL
    / J& _2 n# T/ Z) E1 d4 Z4 F
  82. androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);. O8 i% h3 r: s3 \, |& d
  83. setenv("bootargs", bootargs);& ~, |( p8 y0 {: e7 N2 K
  84. p = getenv("bootcmd");0 B. W! W: T+ K4 K  u( t
  85. if((p == NULL) || (strstr(p, "booti mmc3"))
    ' L& e1 d) ]% B  `& O& y' C
  86. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))
    # J" l! @0 M% P
  87. {
    ; e& `7 T$ ~2 |: c
  88. setenv("bootcmd", "booti mmc3");
    " \5 v( r; \# S' }
  89. }! b/ v- y- A! a5 M# \2 t
  90. }
    % _* ~, f5 k6 X2 P( M5 Q$ n
  91. else if(1 == boot_system_flags)//QT
    & P1 Z' T5 k/ y3 Y
  92. {
    + l. |0 b4 d& R! x- f1 R9 h# ?
  93. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",
    - N! t+ v4 I; J& H2 g7 f
  94. displayArgs);! d4 Y3 [7 G1 o8 P
  95. setenv("bootargs", bootargs);
    3 D2 j- g# L" {2 |$ Q' l
  96. p = getenv("bootcmd");  D/ d, Z+ s5 K6 c3 U& m
  97. if((p == NULL) || (strstr(p, "booti mmc3"))* L, P4 a6 d* k6 m- t
  98. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;4 x) k* B4 U0 V: ]9 f4 t
  99. bootm")))
    , i' K5 C  {4 W8 h$ r5 |
  100. {
    " W! x" R7 O# [1 q9 I
  101. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
    3 [4 z6 _1 R6 K$ a2 x3 k) d9 Q
  102. }
    5 H! {8 S5 Z. C; ^8 Z) o3 S, T
  103. }
      d5 o% ~# n6 c" ?/ g% k( t
  104. else if(2 == boot_system_flags)//Ubuntu0 n% D8 O! S7 m. h9 r
  105. {0 d" R6 T% U/ z# Q
  106. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait
      `* o! o/ J# R  z6 m
  107. bootsystem=%s", displayArgs, getenv("bootsystem"));
    0 s- y# G: ]4 {1 M  c% a" b
  108. setenv("bootargs", bootargs);
    % e: h# H7 v- ~' i3 w
  109. p = getenv("bootcmd");# w. t. K* k" B1 V7 s
  110. if((p == NULL) || (strstr(p, "booti mmc3"))
    - v, ^! ?" ?2 S! j. K& }/ P7 E/ ~$ [8 i
  111. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;% H2 I2 w6 J: l/ J* K" i
  112. bootm")))4 U* }: U, X& e& q
  113. {: h3 }( E6 L+ }1 h! S; \( {' Z
  114. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
    4 h* H* M. m& S7 Y
  115. }- n! c& j) m# m" C- k6 f
  116. }
    # }6 j& t, y$ W1 v* J5 H
  117. }
复制代码

2 G. N7 S0 p1 R% r. J7 z2 _
: g) e/ m5 s1 i! d5 _
! i% n# Z, j9 C1 g7 ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-4 13:49 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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