Chinaunix首页 | 论坛 | 博客
  • 博客访问: 326361
  • 博文数量: 135
  • 博客积分: 867
  • 博客等级: 准尉
  • 技术积分: 865
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-15 14:50
文章分类

全部博文(135)

文章存档

2012年(135)

分类:

2012-09-19 11:37:18

原文地址:UBOOT LCD驱动流程 作者:iibull

很多情况下都需要在UBOOT的阶段就要显示LOGO,直到内核启动完毕后UI接管FrameBuffer为止。这样可以避免内核启动过程的这段时间大约5-8秒内的黑屏。

UBOOT中的LCD驱动比较简单。

[start_armboot@Board.c] -> [devices_init@device.c] -> [drv_video_init@cfb_console.c] -> [video_init]

这部分就是真正我们要修改的地方,video_init 主要作的内容初始化硬件 video_hw_init,然后显示LOGO图片video_logo。

  • 初始化LCD video_hw_init的调用代码一般是在driver/video/$CPU_fb.c中。 只要是设定好LCD的各个IO口,并且初始化一个GraphicDevice的设备空间。这部分需要改动的地方是Videomodes.c/.h中的mesa_modes和res_mode_init 参数, 这些参数可以从LCD硬件手册中找到。 
    • GraphicDevice 需要设定LCD的X/Y/BPP/显存地址及大小等参数。
    • 真正进行LCD各IO口初始化的部分为调用 board_video_init(pGD), 这个函数定义在$BoardName/$TARGET.c 中, 初始化PWM,VDn,显存地址大小对齐及其使能等等的各个寄存器,这个部分需要参考具体的LCD手册。
  • 硬件初始化完后,我们可以从Nor/Nand或其他某处得到LOGO信息加载到内存处,在video_logo的代码处进行显示 video_display_bitmap
图片显示完毕后,如果后续没有对FB进行处理,则LOGO会一直保持, 这样我们可以在Kernel处进行LCD驱动初始化时无须初始化寄存器和显存,因为UBOOT已经作了这个步骤,我们这样就可以保持LOGO直到UI接管FB为止。



阅读(331) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~