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

[复制链接]
 楼主| linzhao789 发表于 2021-1-7 11:30 | 显示全部楼层 |阅读模式
iTOP-iMX6 开发板烧写好之后,默认是 android 系统 9.7 寸屏幕的系统参数和屏幕参数。如下图。本文档主要介绍如何修改默认启动参数.

70.1  重要的环境变量
比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_arm/board.c”文件。
70.2  默认启动系统设置
默认启动系统参数是:bootsystem。打开“board.c”文件。搜索关键词“bootsystem”,找到如下代码:

通过修改“p = "android";”语句,可以修改默认的启动系统参数。下面的程序中,可以看见用到了“boot_system_flags”标志位。搜索该标志位,可以找到如下内容。

70.3  默认屏幕设置
默认屏幕参数是:lcdtype。打开“board.c”文件。搜索关键词“lcdtype”。找到如下代码。

通过修改“p = "9.7";”语句,可以修改默认屏幕设置。在上面截图的程序中可以看到,通过”sprintf();”函数设置了相应屏幕的“displayArgs”值。
70.4 认 默认 bootargs  参数设置
打开“board.c”文件。搜索关键词“bootargs”。找到如下代码。

可以在此处修改“bootargs”参数设置。
上面介绍到的详细代码如下:
  1. {
  2. p = getenv("bootsystem");
  3. if (NULL == p) {
  4. printf("*** Warning use default bootsystem:android ***\n");
  5. p = "android";
  6. setenv("bootsystem", (char *)p);
  7. saveenv();
  8. }
  9. printf("Boot system :%s\n", p);
  10. if(!strcmp(p, "android"))
  11. {
  12. boot_system_flags = 0;
  13. }
  14. else if(!strcmp(p, "qt"))
  15. {
  16. boot_system_flags = 1;
  17. }
  18. else if(!strcmp(p, "ubuntu"))
  19. {
  20. boot_system_flags = 2;
  21. }
  22. p = getenv("lcdtype");​​​​​​​
  23. if (NULL == p) {
  24. printf("*** Warning use default lcdtype:9.7 ***\n");
  25. p = "9.7";
  26. setenv("lcdtype", (char *)p);
  27. saveenv();
  28. }
  29. printf("LCD type:%s\n", p);
  30. if(!strcmp(p, "9.7"))
  31. {
  32. lcd_type = 0;
  33. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1:off
  34. video=mxcfb2:off fbmem=30M");
  35. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin1
  36. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
  37. }
  38. else if(!strcmp(p, "7.0"))
  39. {
  40. lcd_type = 1;
  41. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1:off
  42. video=mxcfb2:off fbmem=30M");
  43. sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1
  44. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
  45. }
  46. else if(!strcmp(p, "4.3"))
  47. {
  48. lcd_type = 2;
  49. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off
  50. video=mxcfb2:off fbmem=10M");
  51. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32
  52. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
  53. }
  54. /* add by cym 20170814 */
  55. else if(!strcmp(p, "1024x600"))
  56. {
  57. lcd_type = 3;
  58. //sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off
  59. video=mxcfb2:off fbmem=10M");
  60. sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=32
  61. video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");
  62. }
  63. /* end add */
  64. else if(!strcmp(p, "hdmi"))
  65. {
  66. sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32
  67. video=mxcfb1:off video=mxcfb2:off fbmem=48M");
  68. }
  69. else
  70. {
  71. sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off
  72. video=mxcfb2:off fbmem=10M");
  73. }
  74. if(0 == boot_system_flags)//Android
  75. {
  76. sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M
  77. androidboot.console=ttymxc2 androidboot.hardware=freescale
  78. androidboot.serialno=1a0d39d4e3013411", displayArgs);
  79. //
  80. setenv("bootargs", bootargs);
  81. // sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL
  82. androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);
  83. setenv("bootargs", bootargs);
  84. p = getenv("bootcmd");
  85. if((p == NULL) || (strstr(p, "booti mmc3"))
  86. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))
  87. {
  88. setenv("bootcmd", "booti mmc3");
  89. }
  90. }
  91. else if(1 == boot_system_flags)//QT
  92. {
  93. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",
  94. displayArgs);
  95. setenv("bootargs", bootargs);
  96. p = getenv("bootcmd");
  97. if((p == NULL) || (strstr(p, "booti mmc3"))
  98. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
  99. bootm")))
  100. {
  101. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
  102. }
  103. }
  104. else if(2 == boot_system_flags)//Ubuntu
  105. {
  106. sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait
  107. bootsystem=%s", displayArgs, getenv("bootsystem"));
  108. setenv("bootargs", bootargs);
  109. p = getenv("bootcmd");
  110. if((p == NULL) || (strstr(p, "booti mmc3"))
  111. || (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;
  112. bootm")))
  113. {
  114. setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");
  115. }
  116. }
  117. }
复制代码



您需要登录后才可以回帖 登录 | 注册

本版积分规则

253

主题

697

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部