• 君正Ingenic X1000E_halley2 更改Logo


    有两种方法可以改变开机logo,编译进内核或者修改u-boot。
    《一》、编译进内核
    一、 制作LOGO图片(可以使用gimp)
    1. 制作一个.ppm格式图片(logo_tvu_clut.ppm)
    2. ppmquant 224 logo_tvu_clut.ppm > logo_tvu_clut224.ppm
    3. pnmnoraw logo_tvu_224.ppm > logo_tvu_clut224_ascii.ppm
    4. cp logo_tvu_clut224_ascii.ppm logo_tvu_clut224.ppm
    5. mv logo_tvu_clut224.ppm ~/ingenic/.../kernel/drivers/video/logo/
     
    二 、修改相关文件
    一、修改kernel目录下的如下文件:
    1、 在include/linux/linux_logo.h添加
    extern const struct linux_logo logo_tvu_clut224;
    2、在drivers/video/logo.c添加: 
    #ifdef CONFIG_LOGO_TVU_CLUT224
    /* Tvu Linux logo */
    logo = &logo_tvu_clut224;
    #endif
    3、修改Makefile:
    添加 obj-$(CONFIG_LOGO_TVU_CLUT224) += logo_tvu_clut224.o
    4、修改Kconfig:
    添加:config LOGO_TVU_CLUT224
    bool "Tvu 224-color logo"
    default y
    二、修改 u-boot 目录下的如下文件:
    1.修改include/configs/halley2.h文件
    /* #define CONFIG_LCD_LOGO */ 注释掉此行,否则如果u-boot中也存在开机logo的话,会先在LCD上显示u-boot LOGO,再显示framebuffer上的LOGO。
    三、配置内核
    1.Device Drivers
    -->Graphics support
    -> Support for frame buffer devices
    2.Device Drivers
    -->Graphics support
    --><*>Backlight & LCD device support
    --> Lowlevel LCD controls
    SLCD TRULY TFT240240-2-E with control IC st7789s (240x240)
    SLCDC USE TE SIGNAL
    SLCDC CONTINUA TRANFER
    Lowlevel Backlight controls
    Generic PWM based Backlight Driver V13
     
     
    3.Device Drivers
    -->Graphics support
    --><*>JZ LCDC framebuffer V1.3
    -->set lcd gpio (lcd v13 8bit slcd)
    ---> lcd v13 8bit slcd
     
     
    4.Device Drivers
    -->Graphics support
    ----->Console display driver support
    --------> < * > Framebuffer Console support
    [ * ] Map the console to the primary display device
     
    5.Device Drivers
    -->Graphics support
    ---> [ * ] Bootup logo --->
    ----> [ * ] Tvu 224-color logo (选取哪一个取决于../kernel/drivers/video/logo/Kconfig)
    eg.
    config LOGO_TVU_CLUT224
    bool "Tvu 224-color logo"
    default y
     
     
    四、编译内核及u-boot
    注意:编译之前要先初始化编译环境
    source build/envsetup.sh
    lunch halley2_norflash-user
    1、编译内核:
    进入kernel目录下,执行make uImage, 会在arch/mips/boot/下生成uImage.
    2、编译u-boot:
    进入u-boot目录下,先执行make distclean, 再执行make halley2_v10_uImage_sfc_nor, 会在u-boot目录下生成u-boot-with-spl.bin。
    将uImage 和 u-boot-with-spl.bin 烧录进X1000E核心板,开机即可显示你所设计的logo。
     
    五、开机黑屏没有显示logo
    如果出现黑屏现象,可能是由于图片像素不正确,可以先找一个像素较小的图片来测试一下是否成功,再制作与屏幕相对应的图片。
    想实现logo的居中显示、拉伸显示修改、kernel/drivers/video/fbmem.c文件中的fb_show_logo_line函数(大概位于第500行左右)和kernel/drivers/console/fbcon.c文件中的fbcon_prepare_logo函数(大概位于第596行左右)。
    居中显示:
    (1)修改源码/driver/video/fbmem.c中的fb_show_logo_line函数。
    //image.dx=0;  
    //image.dy=y;  
    image.width=logo->width;  
    image.height=logo->height;  
    下增加:
    image.dx = (info->var.xres / 2) - (image.width / 2);  
    image.dy = (info->var.yres / 2) - (image.height / 2);
    全屏显示:
    (2)修改源码/driver/video/console/fbcon.c中的fbcon_prepare_logo()函数
    在logo_height = fb_prepare_logo(info, ops->rotate);后增加下面一行代码
    logo_height += (info->var.yres / 2) - (logo_height / 2);  
    经过以上方式重新编译内核,把uImage烧录进X1000E核心板,开机即可居中全屏显示logo。
     
    六、Linux下LCD 10分钟自动熄屏的问题
    Linux下的LCD驱动默认10分钟后会自动关闭屏幕,我们可以修改一下代码让其不自动关屏。
    方法1:修改kernel/drivers/tty/vt/vt.c 文件中的变量blankinterval,设置为0;
    方法2:修改kernel/drivers/tty/vt/vt.c 文件中的函数(blank_screen_t),在函数开头直接return;
     
    七、去除开机LOGO中的光标
    打开fbcon.c文件(kernel/drivers/video/console/fbcon.c)
    方法一:
    1.将static void fb_flashcursor(struct work_struct *work)制成空函数
    static void fb_flashcursor(struct work_struct *work)
    {
    #if 0
    ...
    ...
    #endif
    }
    2.同样的方法将函数static void fbcon_cursor(struct vc_data *vc, int mode)制成空函数。
    方法二:
    打开Makefile文件(kernel/drivers/video/console/Makefile)
    #obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o
    改为:
    obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o
    编译遇到一个soft_cursor没有定义的问题问题,注释代码:
    /kernel/drivers/video/console/bitblit.c
    //ABING
    //      if (err)
    //              soft_cursor(info, &cursor);
     
     
    《二》、U-boot logo
    一、制作logo图片,并命名为tvu_logo.bmp,把tvu_logo.bmp拷贝到u-boot/tools/logos/目录下
    二、修改u-boot/tools/Makefile文件,大约在第158行
    158 LOGO_BMP ?= logos/ingenic.bmp
    改为 LOGO_BMP ?= logos/tvu_logo.bmp
    三、在u-boot目录下,先执行make distclean, 再执行make halley2_v10_uImage_sfc_nor,会在u-boot目录下生成u-boot-with-spl.bin。
    将u-boot-with-spl.bin 烧录进X1000E核心板,开机即可显示你所设计的logo。
    注意:
    此种方法具有局限性,不适合显示较大的logo图片,如果图片较大,u-boot-with-spl.bin大小大于烧录器所分配的空间大小,不能进行烧录(经验证15K左右的.bmp图片可以)。此种方法制作开机logo可能会出现u-boot使用过程中宕机重启的后果!
     
  • 相关阅读:
    adb命令之adb install
    GNU make and Makefile
    Makefile经典教程(掌握这些足够)
    Android.mk简介
    PhoneFactory.getDefaultPhone must be called from Looper thread
    Android源码目录结构
    软件部通用技术类网站名录
    β测试
    α测试
    白盒测试
  • 原文地址:https://www.cnblogs.com/wanglouxiaozi/p/9577380.html
Copyright © 2020-2023  润新知