整理LCD驱动架构.docx

上传人:b****7 文档编号:11431185 上传时间:2023-03-01 格式:DOCX 页数:14 大小:271.96KB
下载 相关 举报
整理LCD驱动架构.docx_第1页
第1页 / 共14页
整理LCD驱动架构.docx_第2页
第2页 / 共14页
整理LCD驱动架构.docx_第3页
第3页 / 共14页
整理LCD驱动架构.docx_第4页
第4页 / 共14页
整理LCD驱动架构.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

整理LCD驱动架构.docx

《整理LCD驱动架构.docx》由会员分享,可在线阅读,更多相关《整理LCD驱动架构.docx(14页珍藏版)》请在冰豆网上搜索。

整理LCD驱动架构.docx

整理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.评估环境影响的价值(最重要的一步):

采用环境经济学的环境经济损益分析方法,对量化后的环境功能损害后果进行货币化估价,即对建设项目的环境费用或环境效益进行估价。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1