整理LCD驱动架构.docx
- 文档编号:5903384
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:14
- 大小:271.96KB
整理LCD驱动架构.docx
《整理LCD驱动架构.docx》由会员分享,可在线阅读,更多相关《整理LCD驱动架构.docx(14页珍藏版)》请在冰点文库上搜索。
整理LCD驱动架构
LCD设备驱动
1、LCD硬件原理
a、利益液晶制成的显示器称为LCD,嵌入式系统中主要用TFT屏。
b、TFT屏工作时序图:
VCLK,VSYNC,HSYNC都是像素时钟信号。
VSYNC:
帧同步信号
HSYNC:
行同步信号
VDEN:
数据有效标志位
VD:
图像数据信号
每发一个行同步脉冲,表示开始传输一行新的数据,每发一个帧同步脉冲,意味着新的一屏数据信号开始发送。
对于数据的传输可以理解为,一帧(即一整屏幕),一行,一点。
数据的传输是一个震荡周期传输一个点,一个行周期传一行,然后是一个帧脉冲开始传一屏。
C、回扫时间,行切换和帧切换的回扫时间。
左右边界为行切换需要的回扫时间,上下边界为帧切换需要的回扫时间,水平同步和垂直同步为行和帧同步本身需要的时间。
Xres,yres指屏幕的水平和垂直分辨率。
d、以我们TFT-LCD中需要了解到的硬件参数描述为例。
分辨率:
768*1024(256*3=768)
Spec中的时序图。
了解硬件参数需要根据具体不同的硬件设置参数。
2、帧缓冲(framebuffer)
帧缓冲是linux系统为显示设备提供的借口,将显示缓冲区抽象。
帧缓冲设备为标准的字符设备,因此我们可以参加一般字符设备驱动的架构来理解。
上层应用程序只需要往帧缓冲设备的显示缓冲区中写入与显示点对应的区域的颜色值,对应的颜色就会显示在屏幕上。
所以对于LCD驱动的理解,主要部分就是对帧缓冲设备的操作。
a、帧缓冲设备驱动架构:
b、理解帧缓冲设备需要了解的几个重要结构体,也就是在注册驱动时需要用到的几个结构体
fb_info结构体(简称FBI)
FBI是帧缓冲设备中最关键的一个结构体,包括了帧缓冲设备属性和操作的完整性
structfb_info{
intnode;
intflags;
structfb_var_screeninfovar;/*Currentvar*///可变参数
structfb_fix_screeninfofix;/*Currentfix*///固定参数
structfb_monspecsmonspecs;/*CurrentMonitorspecs*/
structwork_structqueue;/*Framebuffereventqueue*/
structfb_pixmappixmap;/*Imagehardwaremapper*/
structfb_pixmapsprite;/*Cursorhardwaremapper*/
structfb_cmapcmap;/*Currentcmap*/
structlist_headmodelist;/*modelist*/
structfb_videomode*mode;/*currentmode*/
#ifdefCONFIG_FB_BACKLIGHT
/*assignedbacklightdevice*/
/*setbeforeframebufferregistration,
removeafterunregister*/
structbacklight_device*bl_dev;
/*Backlightlevelcurve*/
structmutexbl_curve_mutex;
u8bl_curve[FB_BACKLIGHT_LEVELS];
#endif
structfb_ops*fbops;
structdevice*device;/*Thisistheparent*/
structdevice*dev;/*Thisisthisfbdevice*/
intclass_flag;/*privatesysfsflags*/
#ifdefCONFIG_FB_TILEBLITTING
structfb_tile_ops*tileops;/*TileBlitting*/
#endif
char__iomem*screen_base;/*Virtualaddress*/
unsignedlongscreen_size;/*AmountofioremappedVRAMor0*/
void*pseudo_palette;/*Fakepaletteof16colors*/
#defineFBINFO_STATE_RUNNING0
#defineFBINFO_STATE_SUSPENDED1
u32state;/*Hardwarestatei.esuspend*/
void*fbcon_par;/*fbconuse-onlyprivatearea*/
/*Fromhereoneverythingisdevicedependent*/
void*par;
};
其中,fb_ops,是指向硬件底层操作的函数指针。
他们最终适合LCD控制器硬件打交道
staticstructfb_opspxafb_ops={
.owner=THIS_MODULE,
.fb_check_var=pxafb_check_var,//用于检查可以修改的屏幕参数并调整到合适的值
.fb_set_par=pxafb_set_par,//是的用户设置的屏幕参数在硬件上有效。
.fb_setcolreg=pxafb_setcolreg,
.fb_fillrect=cfb_fillrect,//定义在cfbfillrect.c
.fb_copyarea=cfb_copyarea,//定义在cfbcopyarea.c
.fb_imageblit=cfb_imageblit,//定义在cfbimgblt.c
.fb_blank=pxafb_blank,
.fb_mmap=pxafb_mmap,
#ifdefCONFIG_FB_PXA_MINILCD
.fb_ioctl=pxafb_minilcd_ioctl,
#endif
};
fb_var_screeninfo结构体记录用户可修改的显示控制器参数,如分辨率,每个点的比特数。
fb_fix_screeninfo结构体记录用户不能修改的显示控制器参数,如屏幕的缓冲区物理地址,长度。
Fb_cmap结构体,记录设备无关的颜色表信息。
用户可以通过FBIOGETCMAP,FBIOSETCMAP读取和设定颜色表值。
C、文件操作函数集
File_operation(在fbmem.c中实现,驱动程序一般不需要修改)
3、
帧缓冲设备驱动的模块加载卸载
模块加载的工作应该有:
a、申请FBI结构体的内存空间,初始化FBI结构中的固定和可变屏幕参数,
b、根据具体的LCD特点完成硬件LCD控制器硬件的初始化、
c、申请帧缓冲设备的显示缓冲区空间
d、注册帧缓冲设备、
以我们的drivercode中的实现为例:
int__initpxafb_probe(structplatform_device*dev)
{
structpxafb_info*fbi;//其中包含fb_info结构体。
structpxafb_mach_info*inf;
……
fbi=pxafb_init_fbinfo(&dev->dev);//申请FBI,初始化。
……
/*Initializevideomemory*/
ret=pxafb_map_video_memory(fbi);//显示缓冲区的申请
……
/*
*Thismakessurethatourcolourbitfield
*descriptorsarecorrectlyinitialised.
*/
pxafb_check_var(&fbi->fb.var,&fbi->fb);
pxafb_set_par(&fbi->fb);
platform_set_drvdata(dev,fbi);
ret=register_framebuffer(&fbi->fb);//注册framebuffer
if(ret<0){
dev_err(&dev->dev,"Failedtoregisterframebufferdevice:
%d\n",ret);
gotofailed;
}
……
#ifdefCONFIG_FB_PXA_MINILCD//如果有minilcd则注册minilcd
pxafb_minilcd_register(&fbi->fb);
#endif
set_ctrlr_state(fbi,C_ENABLE);//nowenabletheLCDcontroller
……
}
卸载则是释放FBI,关闭LCD,释放显示缓冲区以及注销设备。
4、帧缓冲设备显示缓冲区的申请。
显示缓冲区的大小=max_res(最大x解析度)*max_res*max_BPP(bitperpixel)
嵌入式中,是直接在RAM空间分配一段显示缓冲区。
staticint__initpxafb_map_video_memory(structpxafb_info*fbi)
{
u_longpalette_mem_size;
#if0
fbi->map_size=PAGE_ALIGN(fbi->fb.fix.smem_len+PAGE_SIZE);
#else
/*wereserve3pagesaftertheframebufferforoccasionallyout
*ofboundaryaccess
*/
fbi->map_size=PAGE_ALIGN(fbi->fb.fix.smem_len+4*PAGE_SIZE);//显示缓冲区大小
#endif
fbi->map_cpu=dma_alloc_writecombine(fbi->dev,fbi->map_size,
&fbi->map_dma,GFP_KERNEL);//分配内存
if(fbi->map_cpu){
/*preventinitialgarbageonscreen*/
memset(fbi->map_cpu,0,fbi->map_size);
fbi->fb.screen_base=fbi->map_cpu+PAGE_SIZE;
fbi->screen_dma=fbi->map_dma+PAGE_SIZE;
fbi->fb.fix.smem_start=fbi->screen_dma;//帧缓冲设备显示缓冲区的首地址
fbi->palette_size=fbi->fb.var.bits_per_pixel==8?
256:
16;
palette_mem_size=fbi->palette_size*sizeof(u16);
pr_debug("pxafb:
palette_mem_size=0x%08lx\n",palette_mem_size);
fbi->palette_cpu=(u16*)(fbi->map_cpu+PAGE_SIZE-palette_mem_size);
fbi->palette_dma=fbi->map_dma+PAGE_SIZE-palette_mem_size;
}
returnfbi->map_cpu?
0:
-ENOMEM;
}
5、帧缓冲设备的用户空间访问
a、读写dev/fb,相当于读写屏幕缓冲区
b、映射操作:
通过mmap()映射操作将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址,之后用户就可以通过读写这段虚拟地址访问屏幕的缓冲区,在屏幕上绘图。
c、I/O控制:
6、LCDcontroller(参考文档PXA3xx_DM_Vol_III)
驱动加载时,需要对LCD控制器进行初始化,如果需要对硬件配置有所修改可通过LCD控制器相应寄存器修改。
其中针对多planes(base,overlay1,overlay2)的方面稍微做些介绍。
a、TheLCDcontrollerhasahardwarecursorandthreeimageplanes:
base,Overlay1,andOverlay2,对应的DMA通道如下:
b、Dependingonthetypeofpanelused,theLCDcontrollerisprogrammedtouse8-,16-,or18-bit
output-datapins。
以下是cpu对应的gpiopin。
8,16,18bit的不同会使得每个时钟传递的pixel值不同。
例如:
8bitpin时每个clock传输22/3个pixel,16-bit的时候pixel/pixel_clock
。
C、baseoverlay1,overlay2的显示层次并非一定,可以通过controller控制LCCR0[OUC]=0b0:
根据工程、系统生命周期和评价的目的,安全评价分为三类:
安全预评价、安全验收评价、安全现状评价。
7、
8、(3)专项规划环境影响报告书的内容。
除包括上述内容外,还应当包括环境影响评价结论。
主要包括规划草案的环境合理性和可行性,预防或者减轻不良环境影响的对策和措施的合理性与有效性,以及规划草案的调整建议。
LCDControllerRegister,参考spec文件
2.环境影响评价工作等级的划分依据
(2)是否符合国家产业政策和清洁生产标准或要求。
3.完整性原则;参考文件:
1、设备驱动开发详解
2、
3、
(1)资质等级。
评价机构的环评资质分为甲、乙两个等级。
环评证书在全国范围内使用,有效期为4年。
TFT-LCDTentativeSpecificationN080X1-T01ver0.0.pdf
4.环境影响评价工作等级的调整3、PXA3xx_DM_Vol_III.pdf
对于不同的评价单元,可根据评价的需要和单元特征选择不同的评价方法。
4、EEENOTE_EV_GPIO-201002042.xls
5、基础视讯
建设项目环境影响评价技术服务机构(以下简称“环评机构”)应当按照《建设项目环境影响评价资质管理办法》的规定申请建设项目环境影响评价资质(以下简称“环评资质”),经国家环境保护部审查合格,取得《建设项目环境影响评价资质证书》后,方可在环评证书规定的资质等级和评价和范围内从事环境影响评价技术服务。
3.评估环境影响的价值(最重要的一步):
采用环境经济学的环境经济损益分析方法,对量化后的环境功能损害后果进行货币化估价,即对建设项目的环境费用或环境效益进行估价。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 LCD 驱动 架构