新闻  |   论坛  |   博客  |   在线研讨会
迅为iTOP-iMX6开发板-uboot-怎么修改默认环境变量的?
daybydayi | 2018-06-14 09:29:43    阅读:98   发布文章

iTOP-iMX6 开发板烧写好之后,默认是 android 系统 9.7 寸屏幕的系统参数和屏幕参

数。如下图。本文档主要介绍如何修改默认启动参数。

1.jpg

1、 重要的环境变量


比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。

主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设

置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_arm/board.c”文件。


2、 默认启动系统设置

默认启动系统参数是:bootsystem。打开“board.c”文件。搜索关键词

2.jpg

通过修改“p = "android";”语句,可以修改默认的启动系统参数。下面的程序中,可以

看见用到了“boot_system_flags”标志位。搜索该标志位,可以找到如下内容。

3.jpg

3、 默认屏幕设置

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

代码。

4.jpg

通过修改“p = "9.7";”语句,可以修改默认屏幕设置。在上面截图的程序中可以看到,

通过”sprintf();”函数设置了相应屏幕的“displayArgs”值。


4、 默认bootargs参数设置

打开“board.c”文件。搜索关键词“bootargs”。找到如下代码。


5.jpg

可以在此处修改“bootargs”参数设置。

上面介绍到的详细代码如下:

{

p = getenv("bootsystem");

if (NULL == p) {

printf("*** Warning use default bootsystem:android ***\n");

p = "android";

setenv("bootsystem", (char *)p);

saveenv();

}

printf("Boot system :%s\n", p);

if(!strcmp(p, "android"))

{

boot_system_flags = 0;

}

else if(!strcmp(p, "qt"))

{

boot_system_flags = 1;

}

else if(!strcmp(p, "ubuntu"))

{

boot_system_flags = 2;

}


p = getenv("lcdtype");

if (NULL == p) {

printf("*** Warning use default lcdtype:9.7 ***\n");

p = "9.7";

setenv("lcdtype", (char *)p);

saveenv();

}

printf("LCD type:%s\n", p);

if(!strcmp(p, "9.7"))

{

lcd_type = 0;

//sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,bpp=32 video=mxcfb1:off

video=mxcfb2:off fbmem=30M");

sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 ldb=sin1

video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");

}

else if(!strcmp(p, "7.0"))

{

lcd_type = 1;

//sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,bpp=32 video=mxcfb1:off

video=mxcfb2:off fbmem=30M");

sprintf(displayArgs, "video=mxcfb0:dev=ldb,LDB-7inch,if=RGB666,bpp=32 ldb=sin1

video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");

}

else if(!strcmp(p, "4.3"))

{

lcd_type = 2;

//sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off

video=mxcfb2:off fbmem=10M");

sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_480272,if=RGB24,bpp=32

video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");

}


/* add by cym 20170814 */

else if(!strcmp(p, "1024x600"))

{

lcd_type = 3;

//sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off

video=mxcfb2:off fbmem=10M");

sprintf(displayArgs, "video=mxcfb0:dev=lcd,VGA_1024600,if=RGB24,bpp=32

video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb2:off fbmem=48M");

}

/* end add */

else if(!strcmp(p, "hdmi"))

{

sprintf(displayArgs, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32

video=mxcfb1:off video=mxcfb2:off fbmem=48M");

}

else

{

sprintf(displayArgs, "video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off

video=mxcfb2:off fbmem=10M");

}

if(0 == boot_system_flags)//Android

{

sprintf(bootargs, "console=ttymxc2,115200 init=/init %s vmalloc=400M

androidboot.console=ttymxc2 androidboot.hardware=freescale

androidboot.serialno=1a0d39d4e3013411", displayArgs);

// setenv("bootargs", bootargs);

// sprintf(bootargs, "console=NULL init=/init %s vmalloc=400M androidboot.console=NULL

androidboot.hardware=freescale androidboot.serialno=1a0d39d4e3013411", displayArgs);

setenv("bootargs", bootargs);

p = getenv("bootcmd");

if((p == NULL) || (strstr(p, "booti mmc3"))

|| (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm")))

{

setenv("bootcmd", "booti mmc3");

}



}

else if(1 == boot_system_flags)//QT

{

sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait",

displayArgs);

setenv("bootargs", bootargs);

p = getenv("bootcmd");

if((p == NULL) || (strstr(p, "booti mmc3"))

|| (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;

bootm")))

{

setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");

}

}

else if(2 == boot_system_flags)//Ubuntu

{

sprintf(bootargs, "console=ttymxc0,115200 %s root=/dev/mmcblk0p1 rootwait

bootsystem=%s", displayArgs, getenv("bootsystem"));

setenv("bootargs", bootargs);

p = getenv("bootcmd");

if((p == NULL) || (strstr(p, "booti mmc3"))

|| (strstr(p, "mmc dev 3; mmc read 0x10800000 0x800 0x3000;

bootm")))

{

setenv("bootcmd", "mmc dev 3; mmc read 0x10800000 0x800 0x3000; bootm");

}


}


}


参与讨论
登录后参与讨论
推荐文章
最近访客