1. 程式人生 > >【資料分享】使用迅為iTOP-iMX6開發板-uboot-修改預設環境變數

【資料分享】使用迅為iTOP-iMX6開發板-uboot-修改預設環境變數



iTOP-iMX6 開發板燒寫好之後,預設是 android 系統 9.7 寸螢幕的系統引數和螢幕參

數。如下圖。本文件主要介紹如何修改預設啟動引數。

 

 

 

1、 重要的環境變數

比較重要的環境變數或者說經常使用的環境變數,已經在上圖中的紅色方框中。

主要是:bootsystemlcdtype bootargs。這些引數都可以在 uboot 原始碼中進行設

置。具體檔案為:iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/lib_arm/board.c”檔案。

2、 預設啟動系統設定

預設啟動系統引數是:bootsystem。開啟“board.c”檔案。搜尋關鍵詞

bootsystem”,找到如下程式碼:

 


 

通過修改p = "android";”語句,可以修改預設的啟動系統引數。下面的程式中,可以

看見用到了boot_system_flags”標誌位。搜尋該標誌位,可以找到如下內容。

 


 

3、 預設螢幕設定

預設螢幕引數是:lcdtype。開啟“board.c”檔案。搜尋關鍵詞“lcdtype”。找到如下

程式碼。

 

 

通過修改p = "9.7";”語句,可以修改預設螢幕設定。在上面截圖的程式中可以看到,

通過sprintf();”函式設定了相應螢幕的“displayArgs”值。

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,[email protected],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,[email protected],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,[email protected],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,[email protected],if=RGB24 video=mxcfb2:off fbmem=48M");

}

/* end add */

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

{

sprintf(displayArgs, "video=mxcfb0:dev=hdmi,[email protected],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");

}

}

}