LCD显示芯片驱动实例
来源:百度文库 编辑:神马文学网 时间:2024/04/27 14:39:18
以Skeleton LCD 控制器驱动为例,在LINUX中存有一个/fb/skeleton.c的skeleton的Framebuffer驱动程序,很简单,仅仅是填充了 fb_info结构,并且注册/注销自己。设备驱动是向用户程序提供系统调用接口,所以我们需要实现底层硬件操作并且定义file_operations 结构来向系统提供系统调用接口,从而实现更有效的LCD控制器驱动程序。1)在系统内存中分配显存
在fbmem.c文件中可以看到, file_operations 结构中的open()和release()操作不需底层支持,但read()、write()和 mmap()操作需要函数fb_get_fix()的支持.因此需要重新实现函数fb_get_fix()。另外还需要在系统内存中分配显存空间,大多数的LCD控制器都没有自己的显存空间,被分配的地址空间的起始地址与长度将会被填充到fb_fix_screeninfo 结构的smem_start 和smem_len 的两个变量中.被分配的空间必须是物理连续的。2)实现 fb_ops 中的函数
用户应用程序通过ioctl()系统调用操作硬件,fb_ops 中的函数就用于支持这些操作。(注: fb_ops结构与file_operations 结构不同,fb_ops是底层操作的抽象,而file_operations是提供给上层系统调用的接口,可以直接调用.
ioctl()系统调用在文件fbmem.c中实现,通过观察可以发现ioctl()命令与fb_ops’s 中函数的关系:
FBIOGET_VSCREENINFO fb_get_var
FBIOPUT_VSCREENINFO fb_set_var
FBIOGET_FSCREENINFO fb_get_fix
FBIOPUTCMAP fb_set_cmap
FBIOGETCMAP fb_get_cmap
FBIOPAN_DISPLAY fb_pan_display
如果我们定义了fb_XXX_XXX 方法,用户程序就可以使用FBIOXXXX宏的ioctl()操作来操作硬件。文件linux/drivers/video/fbgen.c或者linux/drivers/video目录下的其它设备驱动是比较好的参考资料。在所有的这些函数中fb_set_var()是最重要的,它用于设定显示卡的模式和其它属性,下面是函数fb_set_var()的执行步骤:1)检测是否必须设定模式
2)设定模式3)设定颜色映射4) 根据以前的设定重新设置LCD控制器的各寄存器。第四步表明了底层操作到底放置在何处。在系统内存中分配显存后,显存的起始地址及长度将被设定到 LCD控制器的各寄存器中(一般通过fb_set_var() 函数),显存中的内容将自动被LCD控制器输出到屏幕上。另一方面,用户程序通过函数mmap()将显存映射到用户进程地址空间中,然后用户进程向映射空间发送的所有数据都将会被显示到LCD显示器上。本文来自: (www.91linux.com) 详细出处参考:http://www.91linux.com/html/article/kernel/20071204/8805_2.html
在fbmem.c文件中可以看到, file_operations 结构中的open()和release()操作不需底层支持,但read()、write()和 mmap()操作需要函数fb_get_fix()的支持.因此需要重新实现函数fb_get_fix()。另外还需要在系统内存中分配显存空间,大多数的LCD控制器都没有自己的显存空间,被分配的地址空间的起始地址与长度将会被填充到fb_fix_screeninfo 结构的smem_start 和smem_len 的两个变量中.被分配的空间必须是物理连续的。2)实现 fb_ops 中的函数
用户应用程序通过ioctl()系统调用操作硬件,fb_ops 中的函数就用于支持这些操作。(注: fb_ops结构与file_operations 结构不同,fb_ops是底层操作的抽象,而file_operations是提供给上层系统调用的接口,可以直接调用.
ioctl()系统调用在文件fbmem.c中实现,通过观察可以发现ioctl()命令与fb_ops’s 中函数的关系:
FBIOGET_VSCREENINFO fb_get_var
FBIOPUT_VSCREENINFO fb_set_var
FBIOGET_FSCREENINFO fb_get_fix
FBIOPUTCMAP fb_set_cmap
FBIOGETCMAP fb_get_cmap
FBIOPAN_DISPLAY fb_pan_display
如果我们定义了fb_XXX_XXX 方法,用户程序就可以使用FBIOXXXX宏的ioctl()操作来操作硬件。文件linux/drivers/video/fbgen.c或者linux/drivers/video目录下的其它设备驱动是比较好的参考资料。在所有的这些函数中fb_set_var()是最重要的,它用于设定显示卡的模式和其它属性,下面是函数fb_set_var()的执行步骤:1)检测是否必须设定模式
2)设定模式3)设定颜色映射4) 根据以前的设定重新设置LCD控制器的各寄存器。第四步表明了底层操作到底放置在何处。在系统内存中分配显存后,显存的起始地址及长度将被设定到 LCD控制器的各寄存器中(一般通过fb_set_var() 函数),显存中的内容将自动被LCD控制器输出到屏幕上。另一方面,用户程序通过函数mmap()将显存映射到用户进程地址空间中,然后用户进程向映射空间发送的所有数据都将会被显示到LCD显示器上。本文来自: (www.91linux.com) 详细出处参考:http://www.91linux.com/html/article/kernel/20071204/8805_2.html
LCD显示芯片驱动实例
电子屏 电子显示 液晶显示 显示技术 显示芯片 led lcd led原理 触摸屏_天涯博...
LCD驱动实现原理
LCD驱动实现原理
LCD驱动实现原理 11
在Linux下驱动STN彩色LCD
Linux下的LCD驱动分析
零件采购-LCD TV驱动IC
LCD驱动IC诸元趋势分析
Intel965芯片sony笔记本安装SATA驱动
嵌入式系统中LCD驱动的实现原理
嵌入式系统中LCD驱动的实现原理
中星9号接收机各厂家芯片资料大全和升级接口针脚定义 LCD HOME论坛 - LCD论坛 ...
[选材技巧]LED绿色照明驱动芯片选用技巧
玩转12864液晶:1驱动控制芯片
2006年大尺寸TFT-LCD驱动IC产业研究报告
hd7279键盘显示芯片c51代码 - 西部数码站长资讯中心
Tilcon与Telelogic协作推出模型驱动图形显示方案
EX86 将按键次数写入AT24C02,再读出送LCD显示00
点阵汉字显示原理及其在点阵 LCD&LED 中的应用
LED & LCD
LCD 液晶显示器
LCD名词解释
Response.AddHeader使用实例收集 如何做下载,下载中文显示乱码怎么办 ContentType类型大全