首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Android平台Bootloader的刷屏功能扩展设计 02

Android平台Bootloader的刷屏功能扩展设计 02

3 LCD控制器操作流程设计
        C6310采用L3层作为背景层、L4为命令层。当缓冲区的图像数据准备好以后,通过B_LCD_BmpOntoScreen16Bpp_ILI9481()函数启动LCD控制器,并将图像数据搬移到LCD驱动器。B_LCD_BmlpOntoScreen16Bpp_ILI9481()启动控制器后,启动一个等待队列,等待图像数据传输完毕。
        图像搬移过程中会产生中断,这里用到L4_EOF、L3_EOF、和L1_EOF中断,其中L4_EOF为命令传输完成中断,L3_EOF和L1_EOF分别为L3层和L1层数据传输完成中断。首先,C6310_LCDC向LCD驱动器发送一组数据,命令发送完毕后产生L4_EOF中断。然后,C6310_LCDC向LCD驱动器发送图像数据,发送完毕后产生L3_EOF和L1_EOF中断。
        在LCD进行数据显示前,首先要对LCD控制器的相关寄存器进行正确的设置。表1是C6310中的主要寄存器及其说明。

   
        连接16位RGB并行接口屏,其寄存器的操作流程如下;
        ①将命令index和命令数据写入存储器,如果命令是16位,则每一个字对应15:0是命令。如果命令为8位,则每一个字对应7:0是命令,通过每一个字中的第17位、WR_RD和第16位A0控制命令属性,如果该命令是最后一个命令,命令的第19位设置为1。
        ②配置LCD寄存器。配置第4层的起始地址为命令存储地址,配置LCD_PCONF控制读写时序,配置LCD_L1_SIZE的屏幕大小,配置LCD_PCONF控制读写时序,配置LCD_LCONF控制每层的开关和透明覆盖使能等。
        ③使能LCD控制位LCD_SEL,LCD控制器自动读取存储器中数据传输到接口。
        ④等待L1_SOF中断产生后,可以写下一帧所需要的命令和修改其他层起始地址等。
        ⑤等待BOF中断可以配置下一帧的LCD_CTRL寄存器或者每一层起始地址。
        ⑥如果连接的是并口或者串口LCD屏,在图像数据写入存储器的同时将命令写到第4层图像对应地址,LCD控制器会自动读取这些命令输出。LCD控制器操作流程如图3所示。

   
        从流程图可以看出,当EOF中断产生之后,就可以配置LCD控制器下一帧数据的起始地址。此时,这些配置不会在当前帧起效,而是在下一帧起效,如果需要当前命令发送完毕之后发送图像数据,L4_WINTH需配置为大于实际命令发送个数。本驱动为了让LCD控制器传送一帧图像后停止工作,当L4_EOF中断到来后,配置下一帧发送的命令为0x30003。



        4 LCD驱动程序设计
        LCD驱动程序开发过程中,主要需要实现的是底层驱动程序,底层驱动大体分为两个部分:硬件初始化部分和实现splash_screen函数。
    4.1 硬件初始化实现
        硬件初始化部分主要由display_init函数来实现,主要包括初始化LCD控制器、初始化LCD处理器、Frame-buffer设备的配置等工作,主要实现的函数如下:
        
        fb_config首先使能I2S写函数,对ILI9481进行复位操作,fbcon_setup函数记录了LCD屏幕参数,包括屏幕分辨率、时序参数、像素比特数(bpp)等参数,B_LCD_Init_ILI9481函数肩负着向framebuffer驱动程序传递数据的任务。初始化LCD控制器的寄存器主要是对LCD的PCD、ARM_INYEN、PBUS_WIDTH、OUT_BPP、LCD_TYPE等寄存器进行配置。LCD控制寄存器主要是对屏幕参数、arm中断使能、并口LCD中片选信号极性、LCD屏类型、时序特性进行配置。主要寄存器如下:
        PCD,配置像素时钟分屏。
        ARM_INTEN,配置ARM中断使能信号。当信号为0时,达到中断产生条件后,不产生送到ARM的中断信号;当信号为1时,达到中断产生条件后,产生送到arm的中断。
        PBUS_WIDTH,输出数据线位宽,当配置为并口显示屏时有效。
        OUT_BPP,配置BPP位宽。
        LCD_TYPE,配置LCD屏类型选择。00为普通RGB接口TFT显示屏,01为Sharp接口TFT显示屏,10为并口LCD显示屏,11为串口LCD显示屏。

返回列表