u-boot显示logo
2015-03-12 18:37
218 查看
经过个人实践一下两种方法都可以实现:
首先lcd驱动必须能正常运行,想确定是不是正常,就看uboot启动时能不能显示默认的logo。
#define CONFIG_LCD
其次想在u-boot里面显示图片,图片格式必须是bmp的,最开始阶段u-boot是没有图片解码的。
将一个图片制作成8位bmp的格式,例如logo.bmp。
1、在板级头文件中加入配置选项
u-boot-2009.08/lib_arm/board.c的函数start_armboot()是系统的启动流程,在系统和外设的初始化之后,执行以下程序,就可以显示Logo
将准备好的logo.bmp图片拷贝到spi-flash的100000处,编译下载完成后,重新启动就能显示logo了
优点:便于修改,想换图片只需要将另外一张图片拷贝到指定的地方就可以了
缺点:当图片过大时,显示出来会看到它是一点点的刷新出来的。
2、板级头文件中加入配置
在板级文件中添加
将重新编译生成的u-boot文件烧录到设备中,启动后在uboot中设置环境变量
优点:logo显示速度快,不用刷新显示
缺点:要先将图片数据写到文件中,不方便修改,而且会导致uboot文件变大
液晶屏上显示logo:
首先要使能LCD,#defien CONFIG_LCD,因为mx53_loco已经有lcd驱动的支持
我们要做的就是点亮液晶和调节pwm的亮度
首先lcd驱动必须能正常运行,想确定是不是正常,就看uboot启动时能不能显示默认的logo。
#define CONFIG_LCD
其次想在u-boot里面显示图片,图片格式必须是bmp的,最开始阶段u-boot是没有图片解码的。
将一个图片制作成8位bmp的格式,例如logo.bmp。
1、在板级头文件中加入配置选项
//支持BMP命令 #define CONFIG_CMD_BMP //支持BMP命令 #define CONFIG_BMP_8BPP这里是让u-boot支持bmp命令
u-boot-2009.08/lib_arm/board.c的函数start_armboot()是系统的启动流程,在系统和外设的初始化之后,执行以下程序,就可以显示Logo
// 使能串口Flash run_command("sf probe 1", 0 ); // 从串口Flash中Logo的存储地址读BMP数据到RAM run_command("sf read 70800000 100000 40000", 0 ); // 调用u-boot的BMP命令显示Logo run_command("bmp display 70800000 400 320", 0 );
将准备好的logo.bmp图片拷贝到spi-flash的100000处,编译下载完成后,重新启动就能显示logo了
优点:便于修改,想换图片只需要将另外一张图片拷贝到指定的地方就可以了
缺点:当图片过大时,显示出来会看到它是一点点的刷新出来的。
2、板级头文件中加入配置
#define CONFIG_VIDEO_MX5 #define CONFIG_SPLASH_SCREEN将logo.bmp的数据拷贝到fsl_bmp_600x400.c中。
在板级文件中添加
void setup_splash_image(void) { char *s; ulong addr; s = getenv("splashimage"); if (s != NULL) { addr = simple_strtoul(s, NULL, 16); #if 0 #if defined(CONFIG_ARCH_MMU) addr = ioremap_nocache(iomem_to_phys(addr), fsl_bmp_600x400_size); #endif memcpy((char *)addr, (char *)fsl_bmp_600x400, fsl_bmp_600x400_size); printf("setup_splash_image 0x%8x\n",addr); } #else #if defined(CONFIG_ARCH_MMU) addr = ioremap_nocache(iomem_to_phys(addr), fsl_bmp_800x600_size); #endif memcpy((char *)addr, (char *)fsl_bmp_800x600, fsl_bmp_800x600_size); } #endif }这里是将图片拷贝到了指定的地址中。
将重新编译生成的u-boot文件烧录到设备中,启动后在uboot中设置环境变量
setenv splashimage '0x97c90000' //设置图片存储地址 setenv splashpos '0,0' //设置图片显示的位置 setenv lvds_num 0 //设置lvds设备号保存重启就能显示logo了。
优点:logo显示速度快,不用刷新显示
缺点:要先将图片数据写到文件中,不方便修改,而且会导致uboot文件变大
液晶屏上显示logo:
首先要使能LCD,#defien CONFIG_LCD,因为mx53_loco已经有lcd驱动的支持
我们要做的就是点亮液晶和调节pwm的亮度
void lcd_enable(void) { char *s; int ret; unsigned int reg; s = getenv("lvds_num"); di = simple_strtol(s, NULL, 10); printf("Lcd_enable *** %d\n",di); /* * hw_rev 2: IPUV3DEX * hw_rev 3: IPUV3M * hw_rev 4: IPUV3H */ g_ipu_hw_rev = IPUV3_HW_REV_IPUV3M; /* 20KHz PWM wave, 50% duty */ if (di == 1) { imx_pwm_config(pwm1, 25000, 50000); imx_pwm_enable(pwm1); } else { <span style="white-space:pre"> </span>imx_pwm_config(pwm0, 25000, 50000); imx_pwm_enable(pwm0); } mxc_request_iomux(MX53_PIN_GPIO_1, IOMUX_CONFIG_ALT4); <span style="white-space:pre"> </span>ret = ipuv3_fb_init(&lvds_svga, di, IPU_PIX_FMT_RGB24, DI_PCLK_LDB, 65000000); if (ret) puts("LCD cannot be configured\n"); reg = readl(CCM_BASE_ADDR + CLKCTL_CSCMR2); reg &= ~0xFC000000; reg |= 0xB4000F00; writel(reg, CCM_BASE_ADDR + CLKCTL_CSCMR2); reg = readl(CCM_BASE_ADDR + CLKCTL_CCGR6); reg |= 0xF0000000; writel(reg, CCM_BASE_ADDR + CLKCTL_CCGR6); if (di == 1) writel(0x4AB, IOMUXC_BASE_ADDR + 0x8); else writel(0x2A9, IOMUXC_BASE_ADDR + 0x8); <span style="white-space:pre"> </span>//GPIO_9是pwm的引脚,配置成pwm功能脚 mxc_request_iomux(MX53_PIN_GPIO_9, IOMUX_CONFIG_ALT4); mxc_iomux_set_pad(MX53_PIN_GPIO_9, 0x1E4); <span style="white-space:pre"> </span>//GPIO_8是LCD背光控制脚,配置成GPIO模式并设置输出电平1 // udelay(1000*50); mxc_request_iomux(MX53_PIN_GPIO_8, IOMUX_CONFIG_ALT1); mxc_iomux_set_pad(MX53_PIN_GPIO_8, 0x1E4); <span style="white-space:pre"> </span> reg = readl(GPIO1_BASE_ADDR + 0x0); <span style="white-space:pre"> </span>reg |= 0x100; writel(reg, GPIO1_BASE_ADDR + 0x0); // Set pin direction as output reg = readl(GPIO1_BASE_ADDR + 0x4); reg |= 0x100; writel(reg, GPIO1_BASE_ADDR + 0x4); }
相关文章推荐
- 修改u-boot的开机logo及显示过程
- u-boot的开机logo及显示过程
- u-boot logo全屏显示
- mipi屏在内核可以显示logo但是u-boot无法显示的问题
- 修改u-boot的开机logo及显示过程
- 制作u-boot LCD开机logo 及LCD字符显示错误的解决
- Linux开机液晶屏Logo显示:boot-logo bigger than screen
- Springboot 中 使用thymeleaf 显示自定义Logo
- Kernel logo到Bootanimaiton显示之源码分析
- 制作uboot LCD开机logo以及lcd字符显示错误的解决方法
- mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】
- [uboot]uboot中显示logo
- (三)uboot移植--GSC3280芯片logo显示
- am3359 u-boot显示logo
- 双framebuffer显示两张uboot logo
- Linux开机液晶屏Logo显示:boot-logo bigger than screen
- U-boot显示LOGO之LOGO篇
- 实现uboot到内核logo的持续显示
- 修改u-boot的开机logo及显示过程
- 修改u-boot的开机logo及显示过程