Allwinner v3sスタディノート(3)-u-bootブートロゴの置き換え

1.画像はBMP形式で処理されます

PSは、(例:画面の画素サイズの画像を直接使用する480*272)で
、またはコマンドラインの処理を介してJPEG画像を準備8bit BMP画像、名前mylogo.bmp

vim to_bmp.sh
chmod 777 to_bmp.sh
./to_bmp.sh [待处理的JPG图片名] [输出文件名]

to_bmp.sh

#!/bin/sh
#install Netpbm first
jpegtopnm $1 | ppmquant 31 | ppmtobmp -bpp 8 > $2

2.ブートロゴを変更します

  • UbootのブートロゴCONFIG_VIDEO_LOGOは、デフォルトではペンギンのロゴです(定義されているだけです)。これは、ubootコードに存在するヘッダーファイル(include/video_logo.hまたはbmp_logo.hです。これは、画像の各ピクセルのカラーデータを保持する巨大な構造です。
  • bmpファイルmylogo.bmpuboot/tools/logos/ tools / underに変更しますMakefile
  • bmpファイルはtools/bmp_logo.cbmp_logo作成されものをコンパイルするツールです。include/bmp_logo.h
# Generated LCD/video logo
LOGO_H = $(objtree)/include/bmp_logo.h
LOGO_DATA_H = $(objtree)/include/bmp_logo_data.h
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H)
LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H)

# Generic logo
ifeq ($(LOGO_BMP),)
# LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp
LOGO_BMP= $(srctree)/$(src)/logos/mylogo.bmp	# 修改此处的logo

# Use board logo and fallback to vendor
ifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),)
LOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp
else
ifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),)
LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp
endif
endif

endif # !LOGO_BMP

ロゴ表示構成を追加します。

include/configs/sun8i.h2つのマクロ定義を追加:

/*
 * Include common sunxi configuration where most the settings are
 */
#include <configs/sunxi-common.h>

#define CONFIG_VIDEO_LOGO
#define CONFIG_VIDEO_BMP_LOGO

#endif /* __CONFIG_H */

以下のCONFIG_VIDEO_LOGOコードの実行に関連するカスタムマクロdrivers/video/cfb_console.c

#ifdef CONFIG_VIDEO_LOGO
        /* Plot the logo and get start point of console */
        debug("Video: Drawing the logo ...\n");
        video_console_address = video_logo();

第三に、ロゴは中央に配置されます

変更drivers/video/cfb_console.c、関数で変更static void *video_logo(void)

static void *video_logo(void)
{
    
    
...
	splash_get_pos(&video_logo_xpos, &video_logo_ypos);
	/*
	*增加代码,设置图片居中显示
	*/
	if(video_logo_xpos && video_logo_ypos)
	{
    
    
		video_logo_xpos= (VIDEO_VISIBLE_COLS - BMP_LOGO_WIDTH)>>1;
		video_logo_ypos= (VIDEO_VISIBLE_ROWS - BMP_LOGO_HEIGHT)>>1;
	}
 
#ifdef CONFIG_SPLASH_SCREEN

第四に、uboot起動インターフェースのバージョン情報が隠されています

drivers/video/cfb_console.cコメントアウト#ifndef CONFIG_HIDE_LOGO_VERSIONubootのバージョン情報を非表示にするには、以下のコードを。

#ifndef CONFIG_HIDE_LOGO_VERSION
	// space = (VIDEO_LINE_LEN / 2 - VIDEO_INFO_X) / VIDEO_FONT_WIDTH;
	// len = strlen(info);

	// if (len > space) {
    
    
	// 	video_drawchars(VIDEO_INFO_X, VIDEO_INFO_Y,
	// 			(uchar *) info, space);
	// 	video_drawchars(VIDEO_INFO_X + VIDEO_FONT_WIDTH,
	// 			VIDEO_INFO_Y + VIDEO_FONT_HEIGHT,
	// 			(uchar *) info + space, len - space);
	// 	y_off = 1;
	// } else
	// 	video_drawstring(VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *) info);

#ifdef CONFIG_CONSOLE_EXTRA_INFO

おすすめ

転載: blog.csdn.net/p1279030826/article/details/113481100