UBOOT LCD驱动流程

很多情况下都需要在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为止。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值