//For android
In include/android_image.h - #define ANDR_BOOT_ARGS_SIZE 512
In common/image-android.c- will to get the append_bootargs
//Kernel command line
In arch/arm/lib/bootm.c- will to get the commandline
2017年4月1日 星期六
[U-boot] [I.MX6] bootenv emmc set error
If you bootarg set error ,can clear by mfg_tool
but you need know the emmc block address
MFG_tools/Profiles/Linux/OS Firmware/ucl2.xml
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=384 conv=fsync count=129">clear u-boot arg</CMD>
The persistent storage, where the block comes from, is platform-specific. Some common storage options (and source file handling that storage option):
seek 是略過 of (output file) 所指定的檔案 的 bs * count 大小 然後才開始寫入
bs 大小 default 是 512 bytes, 切記 count 一要給!
dd 常用的參數如下:
if=FILE:指定輸入檔案名稱(input file)為 FILE
of=FILE:指定輸出檔案名稱(output file)為 FILE
ibs=BYTES:指定輸入區塊大小(input block size),一次讀取 BYTES 位元組的資料,預設為 512 位元組
obs=BYTES:指定輸出區塊大小(output block size),一次寫入 BYTES 位元組的資料,預設為 512 位元組
bs=BYTES:指定 block size,一次讀取與寫入 BYTES 位元組的資料,此選項會覆蓋 ibs 與 obs 的設定
cbs=BYTES:一次轉換 BYTES 位元組的資料
count=N:只處理 N 個輸入區塊,每個區塊的大小為 ibs
seek=N:在輸出時跳過輸出檔案的前 N 個區塊,每個區塊的大小為 obs
skip=N:在輸入時跳過輸入檔案的前 N 個區塊,每個區塊的大小為 ibs
conv=CONVS:指定資料的轉換選項,如果一次要指定多種轉換,則以逗點分隔
but you need know the emmc block address
MFG_tools/Profiles/Linux/OS Firmware/ucl2.xml
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=384 conv=fsync count=129">clear u-boot arg</CMD>
The persistent storage, where the block comes from, is platform-specific. Some common storage options (and source file handling that storage option):
NOR flash common/env_flash.c
SPI flash common/env_sf.c
MMC common/env_mmc.c
CONFIG_ definitions in include/configs/yourboard.h will determine the details.#define CONFIG_SYS_ENV_SECT_SIZE (128 << 10) /* 128 KiB */
#define CONFIG_ENV_OFFSET SMNAND_ENV_OFFSET
#define CONFIG_ENV_ADDR SMNAND_ENV_OFFSET
skip 是略過 if (input file) 所指定的檔案 的 bs * count 大小 然後才開始讀入seek 是略過 of (output file) 所指定的檔案 的 bs * count 大小 然後才開始寫入
bs 大小 default 是 512 bytes, 切記 count 一要給!
dd 常用的參數如下:
if=FILE:指定輸入檔案名稱(input file)為 FILE
of=FILE:指定輸出檔案名稱(output file)為 FILE
ibs=BYTES:指定輸入區塊大小(input block size),一次讀取 BYTES 位元組的資料,預設為 512 位元組
obs=BYTES:指定輸出區塊大小(output block size),一次寫入 BYTES 位元組的資料,預設為 512 位元組
bs=BYTES:指定 block size,一次讀取與寫入 BYTES 位元組的資料,此選項會覆蓋 ibs 與 obs 的設定
cbs=BYTES:一次轉換 BYTES 位元組的資料
count=N:只處理 N 個輸入區塊,每個區塊的大小為 ibs
seek=N:在輸出時跳過輸出檔案的前 N 個區塊,每個區塊的大小為 obs
skip=N:在輸入時跳過輸入檔案的前 N 個區塊,每個區塊的大小為 ibs
conv=CONVS:指定資料的轉換選項,如果一次要指定多種轉換,則以逗點分隔
[u-boot] logo background color setting
此logo背景色在圖中所使用比例最高
再由 bmp_logo_bitmap 判定0x24為背景色
在對應至 bmp_logo_palette 可得知0x24 is 0x0FFF
經過下列運算,可得知背景色為 0xf0
在此處如果 *CONFIG_SYS_CONSOLE_FG_COL* & *CONFIG_SYS_CONSOLE_BG_COL*
皆有定義,則會使用所定義之 背景/前景 顏色填入
因此我在project.h加入下方的定義,來完成背景色的填充
再由 bmp_logo_bitmap 判定0x24為背景色
在對應至 bmp_logo_palette 可得知0x24 is 0x0FFF
out/uboot/include/bmp_logo_data.hunsigned short bmp_logo_palette[] = {0x0000, 0x0FFF, 0x0666, 0x0666, 0x0FFF, 0x0666, 0x0666, 0x0F00,0x0F00, 0x0FFF, 0x0FFF, 0x0F00, 0x0666, 0x0666, 0x0000, 0x0F00,0x0666, 0x0666, 0x0E11, 0x0F00, 0x0FFF, 0x0FFF, 0x0F00, 0x0FFF,...}unsigned char bmp_logo_bitmap[] = {0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,...}
經過下列運算,可得知背景色為 0xf0
uboot-imx/drivers/video/cfb_console.cfor (i = 0; i < VIDEO_LOGO_COLORS; i++) {logo_red[i] = (bmp_logo_palette[i] & 0x0f00) >> 4;logo_green[i] = (bmp_logo_palette[i] & 0x00f0);logo_blue[i] = (bmp_logo_palette[i] & 0x000f) << 4;}
在此處如果 *CONFIG_SYS_CONSOLE_FG_COL* & *CONFIG_SYS_CONSOLE_BG_COL*
皆有定義,則會使用所定義之 背景/前景 顏色填入
uboot-imx/include/video_fb.h#if defined(CONFIG_SYS_CONSOLE_FG_COL) && defined(CONFIG_SYS_CONSOLE_BG_COL)#define CONSOLE_BG_COL CONFIG_SYS_CONSOLE_BG_COL#define CONSOLE_FG_COL CONFIG_SYS_CONSOLE_FG_COL#else#define CONSOLE_BG_COL 0x00#define CONSOLE_FG_COL 0xa0#endif
因此我在project.h加入下方的定義,來完成背景色的填充
#define CONFIG_SYS_CONSOLE_FG_COL 0xa0 #define CONFIG_SYS_CONSOLE_BG_COL 0xf0
[bootargs environment]Enable hdmi and uart console
For IMX 6Q
add:
androidboot.selinux=disabled androidboot.dm_verity=disabled
modify:
video=mxcfb1:dev=hdmi,1920x1080M@60,bpp=32
add:
androidboot.selinux=disabled androidboot.dm_verity=disabled
modify:
video=mxcfb1:dev=hdmi,1920x1080M@60,bpp=32
[U-boot] logo
在有實現LCD顯示和LCD命令行終端的U-boot中,默認情況下在左上角都有顯示一個logo,如果是atmel的芯片,就會有atmel的logo,三星的則是denx的logo。如果想把它改成自己喜歡的或者公司的logo,則只要作簡單的修改便可以實現。
一,圖片的放置路徑
所有的開機logo都放在了/tools/logos之下,所以,把你需要顯示的logo圖片(bmp格式)也放置到該目錄下。根據你所設置的顯示幀緩存的大小,圖片大小有所限制。使用這種方法還有一個限制是:圖片只能是8bpp的bmp圖(參考uboot源碼)。Tekkman文章中所說的“所替換的logo必須和原來的大小、格式一模一樣,否則會出現u-boot使用過程中宕機重啟的後果”,我自己親測中並未遇到,當然,我也並沒有做足夠的測試,只是這並不需要和原圖的大小一模一樣。
二,修改Makefile文件
修改/tools目錄下的Makefile文件
三、圖片的轉換腳本
在製作圖片前,請您現確認您的Linux主機上安裝了Netpbm工具包。
使用方法: (腳本名) ( 待處理的JPG圖片名) (輸出文件名)
自定義u-boot的開機logo的方法
refer : http://blog.chinaunix.net/uid-9688646-id-1998453.html
一,圖片的放置路徑
所有的開機logo都放在了/tools/logos之下,所以,把你需要顯示的logo圖片(bmp格式)也放置到該目錄下。根據你所設置的顯示幀緩存的大小,圖片大小有所限制。使用這種方法還有一個限制是:圖片只能是8bpp的bmp圖(參考uboot源碼)。Tekkman文章中所說的“所替換的logo必須和原來的大小、格式一模一樣,否則會出現u-boot使用過程中宕機重啟的後果”,我自己親測中並未遇到,當然,我也並沒有做足夠的測試,只是這並不需要和原圖的大小一模一樣。
二,修改Makefile文件
修改/tools目錄下的Makefile文件
把denx.bmp 替換為你需要顯示的logo圖片的文件名,保存退出,重新編譯uboot。ifeq ($(LOGO_BMP),) LOGO_BMP= logos/denx.bmp endif
三、圖片的轉換腳本
在製作圖片前,請您現確認您的Linux主機上安裝了Netpbm工具包。
sudo apt-get install netpbm
jpegtopnm logo.jpg | ppmquant 31 | ppmtobmp -bpp 8 > logo.bmp
U-Boot中的Splash Screen
U-Boot配置
在U-Boot中使用Splash Screen,可以實現U-Boot啟動後,在LCD上顯示自定義圖片,起到友好的界面顯示作用。使用Splash Screen需要在配置文件中使能BMP圖片功能和SPLASH功能:
#define CONFIG_CMD_BMP
#define CONFIG_SPLASH_SCREEN
#define CONFIG_SPLASH_SCREEN
實例
並且要定義splashimage變量以及在splash變量所定義的地址存放bmp圖片。以2MB的SST30VF1601為例,工32個扇區,規劃如下:
項目
|
地址範圍
|
扇區
|
大小
|
說明
|
U-Boot
|
0x0000 0000 ~ 0x0010 0000
|
0~15
|
1M
| |
參數
|
0x0010 0000 ~ 0x0018 0000
|
16~23
|
512K
| |
splashimage
|
0x0018 0000 ~ 0x0020 0000
|
24~31
|
512K
|
操作
現在要實現splash screen,需要進行操作,先下載一個圖片到內存中,然後擦除FLASH的splashimage區域,接著將圖片寫入splashimage區域,最後設置並保存splashimage環境變量即可。
U-Boot> tftp a0008000 logo.bmp ;下載文件到內存
U-Boot> erase 1:23-31 ;擦除Flash的splashimage區域
U-Boot> cp.b a0008000 00180000 $filesize ;將logo寫到Flash的splashimage區域
U-Boot> setenv splashimage 00180000 ;設置splashimage環境變量
U-Boot> saveenv ;保存環境變量
u-boot啟動後,輸入bmp d $splashimage即可在LCD上顯示logo圖片。為了實現開機就顯示logo,可以修改common/lcd.c文件,在其中加入實現bmp d $splashimage的代碼即可。
自定義u-boot的開機logo的方法
ifeq ($(LOGO_BMP),) LOGO_BMP= logos/denx.bmp endif ifeq ($(VENDOR), atmel) LOGO_BMP= logos/atmel.bmp endif ifeq ($(VENDOR),ronetix) LOGO_BMP= logos/ronetix.bmp endif
refer : http://blog.chinaunix.net/uid-9688646-id-1998453.html
訂閱:
文章 (Atom)