IMX51 uboot中设置启动图标

本文档针对 IMX51 android 平台下设置开机图标,其他本台未作测试。

步骤如下


1、LOGO图片保存在tools/logos目录下,可自行进行修改。注意图片大小不要超过你的屏的大小,色彩深度不能大于256色,即8位色深的图片8bpp的bmp图。


2、打开/tools/Makefile,定位到124行附近,修改如下:

# Generated LCD/video logo
LOGO_H = $(OBJTREE)/include/bmp_logo.h
LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)

ifeq ($(LOGO_BMP),)
#LOGO_BMP= logos/denx.bmp
LOGO_BMP= logos/logott.bmp
endif
ifeq ($(VENDOR),atmel)
LOGO_BMP= logos/atmel.bmp
endif
ifeq ($(VENDOR),ronetix)
LOGO_BMP= logos/ronetix.bmp
endif

如果你将自己制作的logo命名成logos目录下denx.bmp而将之前的替换掉,这里的代码就不用修改了。否则只需将denx.bmp改为自己的图片名称即可。

3、在U-Boot中使用Splash Screen,可以实现U-Boot启动后,在LCD上显示自定义图片,起到友好的界面显示作用。使用Splash Screen需要在配置文件中使能BMP图片功能和SPLASH功能:
打开 inlcude/configs目录下 mx51_bbg_android.h文件,在文件开头加入如下信息

#define CONFIG_LCD
#define CONFIG_VIDEO_MX5
#define CONFIG_SPLASH_SCREEN
#define CONFIG_LCD_LOGO

#define CONFIG_VIDEO_LOGO
#define CONFIG_VIDEO_BMP_LOGO
#define CONFIG_CMD_BMP

作以上修改之后,

4、增加LCD驱动
修改 drivers/video目录下makefile文件第38行附近,加入LCD驱动
COBJS-y += mxc_ipuv3_fb.o ipu_common.o ipu_disp.o

完成以下步骤后,在Uboot启动时,屏幕左上方将出现 freescale 图标,但此时背光仍未开启

5、打开背光

903中采用GPIO1_2端口复用为PWM来实现背光调节。此处事直接将GPIO1_2置为高电平,打开背光。

打开 board/freescale/mx51_bbg目录下的mx51_bbg.c 定位到函数 lcd_enable(),加入如下内容

    mxc_request_iomux(MX51_PIN_GPIO1_2, IOMUX_CONFIG_ALT0);     // 设置GPIO1_2为GPIO口
    //mxc_iomux_set_input(MUX_IN_GPIO1_IPP_IND_G_IN_2_SELECT_INPUT, INPUT_CTL_PATH1);    
    reg = readl(GPIO1_BASE_ADDR + 0x4);     // 设置GPIO1_2为输出状态
    reg |= 0x04;
    writel(reg, GPIO1_BASE_ADDR + 0x4);

    reg = readl(GPIO1_BASE_ADDR + 0x0);     // 设置GPIO1_2输出高电平
    reg |= 0x04;
    writel(reg, GPIO1_BASE_ADDR + 0x0);

    ret = ipuv3_fb_init(&claa_wvga, 1, IPU_PIX_FMT_RGB565,
            DI_PCLK_PLL3, 0);
    if (ret)
        puts("LCD cannot be configured\n");

具体内容可参照 datasheet 第1035——1037   每一组GPIO口为32个,共用一组寄存器对其输入输出状态及输出值进行设置,GDIR寄存器用于设计输入输出状态,DR寄存器用于设置输出值。

6、 编译uboot,启动时将在屏幕左上方显示freescale图标。那么为什么没有显示出自己修改的图标呢,估计中间设置有些小问题。

跟踪程序可知,在 board/freescale/mx51_bbg/mx51_bbg.c 的 setup_splash_image()函数中有一句赋值操作,memcpy((char *)addr, (char *)fsl_bmp_600x400, fsl_bmp_600x400_size); fsl_bmp_600x400数组定义在fsl_bmp_600×400.c文件中。因此只需修改数据fsl_bmp_600x400中的图片数据,。即可显示自己需要的图片了。该图像数据在bmp_logo.h文件中有生成。

7、在 lcd.c 文件中的905行左右,可修改 bitmap_plot(500,320); 来改变图标显示位置。








参考资料:
【1】U-boot开机logo的制作方法(Tekkaman Ninja):http://blog.chinaunix.net/u1/34474/showart_2085233.html
【2】U-Boot中的Splash Screen(Charlie Chen):http://blog.chinaunix.net/u1/51797/showart.php?id=2070554
【3】UBOOT LCD驱动流程(牛蹄印章):http://blog.chinaunix.net/u3/90973/showart_2303809.html
【4】u-boot-2009.08在mini2440上的移植增加LCD显示功能  http://www.linuxidc.com/Linux/2011-05/35982p7.htm

在有实现LCD显示和LCD命令行终端的U-boot中,默认情况下在左上角都有显示一个logo,如果是atmel的芯片,就会有atmel的logo,三星的则是denx的logo。如果想把它改成自己喜欢的或者公司的logo,则只要作简单的修改便可以实现。




相关配置选项说明:

CONFIG_CFB_CONSOLE:使能终端设备的彩色帧缓冲. 在/divers/video/cfb_console.c)有相关定义。
            VIDEO_FB_LITTLE_ENDIAN    图像存储组织 (默认为大端序)
            VIDEO_HW_RECTFILL    图像芯片支持矩形填充(rectangle fill)(cf. smiLynxEM)
            VIDEO_HW_BITBLT        图像芯片支持位块传输(bit-blit) (cf. smiLynxEM)
            VIDEO_VISIBLE_COLS    可视像素列 (cols=pitch)
            VIDEO_VISIBLE_ROWS    可视像素行
            VIDEO_PIXEL_SIZE    每像素字节数
            VIDEO_DATA_FORMAT    图像数据格式 (0-5, cf. cfb_console.c)
            VIDEO_FB_ADRS        帧缓冲地址
            VIDEO_KBD_INIT_FCT    keyboard int fct(i.e. i8042_kbd_init())
            VIDEO_TSTC_FCT        test char fct (i.e. i8042_tstc)
            VIDEO_GETC_FCT        get char fct (i.e. i8042_getc)
            CONFIG_CONSOLE_CURSOR    打开/关闭 光标绘制 (需要 blink timer cf. i8042.c)
            CFG_CONSOLE_BLINK_COUNT    blink 间隔 (cf. i8042.c)
            CONFIG_CONSOLE_TIME    在右上角显示时间/日期信息 (需要 CONFIG_CMD_DATE)
            CONFIG_VIDEO_LOGO    在左上角显示Linux logo
            CONFIG_VIDEO_BMP_LOGO    使用bmp_logo.h作为logo(默认是linux_logo.h)。 需要 CONFIG_VIDEO_LOGO。
            CONFIG_CONSOLE_EXTRA_INFO  除了logo外的其它单板信息

如果定义了CONFIG_CFB_CONSOLE, 视频终端是默认的i/o. 使用'console=serial'环境可以强制使用串口终端
如果定义了 CONFIG_SILENT_CONSOLE, 可以用'silent'环境变量屏蔽所有终端消息(包括U-Boot和Linux的输出!)。更多信息见doc/README.silent

CONFIG_SYS_CONSOLE_IS_IN_ENV:如果你想将标准输入、标准输出、标准错误设为usbttyusbtty(USB串口终端),定义该宏。

CONFIG_VIDEO_BMP_GZIP:如果设置该选项, 除了支持标准BMP图像外, splashscreen或者bmp命令可以使用gzip压缩的BMP图像

CONFIG_SPLASH_SCREEN:如果设置该选项, 将检查环境变量"splashimage"。 如果变量存在则显示一张BMP图像,普通的logo, 版权及系统信息不再显示。 "splashimage"指定了位图的存放地址。终端也被重定向到"nulldev"。由于启动的早期就会加载Splash screen,使用它可以实现安静的启动。











你可能感兴趣的:(Android开发)