搜索

121

主题

128

帖子

665

积分

网站编辑

Rank: 8Rank: 8

积分
665
发表于 2021-6-30 15:49:59 7141 浏览 0 回复

i.MX6开发板非设备树uboot-修改默认环境变量

本文档主要介绍如何非设备树uboot修改默认启动参数。iTOP-iMX6 开发板烧写好之后,默认是 android 系统 9.7 寸屏幕的系统参数和屏幕参数,如下图所示。输入以下命令查看默认启动参数
printenv
1 重要的环境变量
比较重要的环境变量或者说经常使用的环境变量,已经在上图中的红色方框中。
主要是:bootsystem、lcdtype 和 bootargs。这些参数都可以在 uboot 源码中进行设置。具体文件为:“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_arm/board.c”文件。
2 默认启动系统设置
默认启动系统参数是:bootsystem。打开“board.c”文件。搜索关键词“bootsystem”,找到如下代码:
通过修改“p = android;”语句,可以修改默认的启动系统参数。
如果想要默认启动的系统是Android,则修改p = "android";
如果想要默认启动的系统是QT,最小系统,YOCTO,则修改p = "qt";
如果想要默认启动的系统是ubuntu,则修改p = "ubuntu";
下面的程序中,可以看见用到了“boot_system_flags”标志位。搜索该标志位,可以找到如下内容。
3 默认屏幕设置
默认屏幕参数是:lcdtype。打开“board.c”文件。搜索关键词“lcdtype”。找到如下代码。
通过修改“p = "9.7";”语句,可以修改默认屏幕设置。在上面截图的程序中可以看到,通过”sprintf();”函数设置了相应屏幕的“displayArgs”值。
如果想要设置默认屏幕是9.7寸屏幕,则设置“p = "9.7";”
如果想要设置默认屏幕是7.0寸屏幕,则设置“p = "7.0";”
如果想要设置默认屏幕是4.3寸屏幕,则设置“p = "4.3";”
如果想要设置默认屏幕是1024x600的屏幕,则设置“p = "1024x600";”
如果想要设置默认屏幕是5寸屏幕,则设置“p = "5.0";”
如果想要设置默认屏幕是vga_1024768寸屏幕,则设置“p = "vga_1024768";”
如果想要设置默认屏幕是10.1寸屏幕,则设置“p = "10.1";”
如果想要设置默认屏幕是hdmi屏幕,则设置“p = "hdmi";”
4 默认 bootargs 参数设置
打开“board.c”文件。搜索关键词“bootargs”。找到如下代码。
可以在此处修改“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");
}
}
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

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