微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 嵌入式LCD驱动开发要如何进行?LCD维护常见的几种方法

嵌入式LCD驱动开发要如何进行?LCD维护常见的几种方法

时间:04-26 来源:网络整理 点击:

  Struct fb_ops在include/linux/fb.h中定义。这些函数都是用来设置/获取fb_info结构中的成员变量的。当应用程序对设备文件进行 ioctl操作时候会调用它们。对于fb_get_fix(),应用程序传入的是fb_fix_screeninfo结构,在函数中对其成员变量赋值,主 要是smem_start(缓冲区起始地址)和smem_len(缓冲区长度),最终返回给应用程序。而fb_set_var()函数的传入参数是 fb_var_screeninfo,函数中需要对xres、yres和bits_per_pixel赋值。

  对于/dev/fb,对显示设备的操作主要有以下几种。

  ● 读/写(read/write)/dev/fb:相当于读/写屏幕缓冲区。

  ● 映射(map) 操作:由于Linux工作在保护模式,每个应用程序都有自己的虚拟地址空间,在应用程序中是不能直接访问物理缓冲区地址的。为此,Linux在文件操作 file_operations结构中提供了mmap函数,可将文件的内容映射到用户空间。对于帧缓冲设备,则可通过映射操作,可将屏幕缓冲区的物理地址 映射到用户空间的一段虚拟地址中,之后用户就可以通过读写这段虚拟地址访问屏幕缓冲区,在屏幕上绘图了。

  ● I/O控制:对于帧缓冲设备,对设备文件的ioctl操作可读取/设置显示设备及屏幕的参数,如分辨率、显示颜色数和屏幕大小等。ioctl的操作是由底 层的驱动程序来完成的。在应用程序中,操作/dev/fb的一般步骤如下:打开/dev/fb设备文件;用ioctrl操作取得当前显示屏幕的参数,如屏 幕分辨率和每个像素的比特数,根据屏幕参数可计算屏幕缓冲区的大小;将屏幕缓冲区映射到用户空间;映射后即可直接读写屏幕缓冲区,进行绘图和图片显示了。

  LCD模块化驱动

  在对S3C2410 的LCD编写模块化驱动程序时,首先要从内核中去除LCD驱动。这里需要做一些改动,系统调用被加在以下文件中,需去除: /root/usr/src/arm/linux/kernel/sys.c;/root/usr/src/arm/linux/include/arm -arm下的unistd.h和lcd.h;/root/usr/src/arm/linux/arch/arm/kernel下的calls.s。

  编写模块化驱动程序,有以下几个关键的函数。

  ● lcd_kernel_init(void)//当模块被载入时执行

  ● lcd_kernel_exit(void)//当模块被移出内核空间时被执行

  ● lcd_kernel1_ioctl(struct*inode, struct*file, unsigned int cmd, unsigned longarg) //其他功能

  每当装配设备驱动程序时,系统自动调用初始化模块lcd_kernel_init(void)。

  另一个必须提供的函数是lcd_kernel_exit(void),它在模块被卸载时调用,负责进行设备驱动程序的工作。

  执行insmod lcd.o命令即可将LCD驱动添加到内核中,执行rmmod lcd命令即可从内核中删除LCD驱动。

  静态加载LCD驱动

  将写好的lcd 驱动程序lcd.c放到arm/linux/drivers/char目录下,修改arm/linux/drivers/char/config.in文 件,加上一行:Bool‘LCD driver support‘CONFIG_LCD;修改arm/linux/drivers/char/Makefile文件,加上一行:obj-$ (CONFIG_LCD)+=lcd.o。

  这样,当再进行make xconfig时,就会选择是否将LCD驱动编译进内核。同样的办法也可用在其他设备上。

  LCD怎样维护?

  显示器发展至今天,在消费级领域已经真正地进入到液晶时代了。对价格较为敏感的国内市场,降价不断的事实也使得LCD走进了千家万户家中。甚至更前卫的液晶电视也正在受到越来越多用户的关注。LCD或者液晶电视,它们都是属于消耗型产品,同时也是属于有点娇气的电器设备,不少用户由于缺乏一定的知识,在平时的使用中采用了一些不当的操作手段以致影响了LCD的显示效果甚至人为地损坏了LCD,所以要想让您的LCD总能保持好的效果,又能延年益寿的话,那么良好的使用习惯和定期保养就显得比较重要了。

  一、如何清洁LCD屏幕?

这是众多用户所关注的一个问题。液晶显示器在工作时会对周围的灰尘有一定的吸力,所以我们可以发现LCD屏幕在使用一段时间后就会沾上较多的灰尘。在这里先不说正确的操作方法,我们来看一看一些错误的清洁方法:1、用手掌或者手指直接擦试LCD。要知道,LCD是不允许受到压迫的,用手掌或者手指去擦试的时候,用力很难做到恰到好处的程度,如果用力过猛,会有可能引起LCD液晶分子永久性物理损害,从而出现了坏点甚至会发生小区域异常的情况,所以切勿用手掌或者手指去直接擦试LCD屏幕。2、用较粗糙的毛巾擦试LCD屏幕。笔者曾经看到过某些用户直接用家里平时擦试桌子的毛巾来擦LCD屏幕,这种情况发生的机率其实还不少,因为有些用户在用毛巾清洁电脑桌的时候顺

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top