基于arm的嵌入式触摸屏系统设计本科论文.doc

上传人:教**** 文档编号:88288978 上传时间:2023-04-24 格式:DOC 页数:54 大小:4.54MB
返回 下载 相关 举报
基于arm的嵌入式触摸屏系统设计本科论文.doc_第1页
第1页 / 共54页
基于arm的嵌入式触摸屏系统设计本科论文.doc_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《基于arm的嵌入式触摸屏系统设计本科论文.doc》由会员分享,可在线阅读,更多相关《基于arm的嵌入式触摸屏系统设计本科论文.doc(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、三亚学院毕业论文(设计)论文(设计)题目:基于ARM的嵌入式触摸屏系统设计学 院:理工学院专 业(方 向):测控技术与仪器年 级、班 级:测控1201学 生 学 号: 1学 生 姓 名:指 导 老 师:2016年3月30日 目录1. 要求:.1 1.2设计目的.11.3设计意义.11.4设计内容.11.5主要任务.12. 正文. 2.0 linux的基本指令2.0.1关于vim编辑器的基本使用 2.1液晶屏的介绍以及工作原理.2.1.1液晶屏的介绍2.1.2液晶屏的工作原理 2.2触摸屏的工作原理 2.3设计总体方案 2.4设计所需工具 2.5平台搭建详解 2.6Uboot介绍与移植 2.7内

2、核介绍与移植 2.8创建根文件系统3. 程序 3.1驱动乘虚的算法以及数据结构的介绍 3.2驱动程序的编写4.心得4.1课程设计心得体会5.参考文献 章一 要求1.1设计目的(1)基于LINUX Ubuntu系统以及s3c2440开发板,能够利用触摸屏正确返回触点坐标以及动作信息(2)坐标及动作信息的具体显示包括:触摸笔动作,触点X坐标值,触点Y坐标值2.1设计意义(1) 熟悉linux基本命令(2)熟悉ARM嵌入式系统开发平台(3)掌握linux下uboot及内核的移植(4)会创建跟文件系统(3)掌握linux下驱动程序的结构以及编写(4)掌握嵌入式系统下交叉环境编译,下载及调试3.1设计内

3、容(1) 内核及u-boot的正确移植(2) 跟文件系统的移植与使用(3) 驱动程序的编写与编译及烧写3.2主要任务(1) 熟悉实验流程(2) 了解驱动源程序(3) 了解程序的数据结构 章二 正文0. s3c2440开发板介绍:CPU:处理器:S3C2440A-40 400MHz主频,ARM 920T内核LCD:Hitachi 4.3寸触摸屏LCD闪存:256M NAND FLASH,8bit宽度内存:64M SDRAM,133MHz,32bit宽度(两片组成)电源:5-12V宽电压输入,LT1765高效DC/DC降压,标配5V电源网络:100Mbps低功耗嵌入式专用以太网网络芯片DM9000

4、A,接口为准RJ45插座, 集成网络变压器,安全可靠串口:3路串口,两路带握手信号,可接调制解调器或者GPRS。COM3位3线制和IRDA共用CPU的UART2信号,COM3和IRDA只能同时使用其中一个IRDA:用户可以自行安装,标准配置没有焊接。和COM3共用摄像头接口:预留20pin插座,方便用户连接数字摄像头音频接口:WM8976芯片,带3.5寸麦克风、耳机接口USB HOST:1个USB HOST接口,USB FULL SPEED。可外接HUB扩展USB DEVICE:1路USB DEVICE接口,USB FULL SPEEDMICROSD卡接口:支持MICROSD/TF存储卡,最高

5、可达32G总线扩展:通过96针高可靠欧式插座提供外部扩展,32*3排列,集成总线和其他可能用到的信号。外部总线通过高速双向缓冲器隔离1. linux的基本指令打开终端使用以下指令,由于linux指令太多,这里我只说明关于ARM嵌入式触摸屏系统的相关指令(1)ls -al:用与查看某个目录的内容和文件,以及目录和文件的权限,并且连同隐藏文件一起显示(2)chmod xxx(代表数字0-7):用于修改文件或目录的权限,参数有:-R:修改连同目录以及目录下所有文件的权限xxx:代表r,x,w对应的数字每个数字是07范围(3) cd:用于前往某个目录(4) pwd:用于查看当前所在的目录位置(5) m

6、kdir:用于创建目录,参数有-m:建立目录的同时设置目录权限-p:若路径中某些目录不存在,则系统自动创建那些指定的目录(6) rm:用于删除文件或者目录,参数有-f:不进行交互模式,直接删除目录或者文件-r:用于删除目录,不加则只删除文件(7) cp:用于目录和文件的复制,参数有-a:连同目录或者文件的权限一起复制-r:用于复制目录及该目录里面的内容(8) mv:用于文件或者目录的移动(9) find:用于查找文件或者特定的内容,以及目录,常用的参数有-name:指定字符串作为查找文件或目录的表达式(10) tar:用于解压或者压缩文件,常用参数有-j:用于解压格式后缀为.bz2的压缩文件-

7、z:用于解压格式后缀为.gz的压缩文件-x:用于打包或解压缩的功能-v:显示解压缩的过程-f:厚街目标文件-c:用于打包文件(11) su -:切换为root用户2. 关于vim编辑器的基本使用Vim是linux自带的功能强大的文本编辑器,可以用来编辑c/c+源程序有自动提示错误的功能,如果有错误则颜色和平时不一样,下面只介绍vim的基本使用首先在终端输入vim进入vim编辑器,在vim编辑器下有三种工作模式命令模式,插入模式,底行模式。插入模式常用的参数有:i:从光标所在位置前面开始插入内容,光标后的内容随新增内容想后移动o:从光标所指下一行进行插dd:删除光标所指该行u:撤消上一次操作yy

8、:复制光标所在行命令模式:进入命令模式就可以进行光标的移动,字符,字或行的删除,移动复制某字段底行模式常用的参数有:wq 用于保存并且退出vim文本编辑器:q!用于强制退出vim编辑器3. 关于s3c2440嵌入式开发板环境工程的工具及搭建的介绍与使用3.1.本人在Linux编程使用的是ubuntu自带的vim文本编辑器。具体功能如上所述3.2make工具的介绍与使用:1.介绍:在linux下所使用的make是GNU的工程管理器,make工具是用来创建一个属于自己的工程,整个工程的编译命令只需要一个make命令解决,解决的有头文件预处理,源文件的编译(自动编译为目标文件,二进制文件,汇编文件等

9、),多个目标的链接等具有强大的自动功能,该make命令依赖于一个Makefile文件(名字必须是makefile或Makefile),make是一个命令工具,它用于解释makefile文件中的指令或规则,在mkaefile文件中描述了整个工程所有文件的编译顺序,编译规则。由于Makefile文件内的规则太多这里至介绍大概格式:目标: 生成目标所需的文件生成这个目标所需文件的命令(1)目标:是指最终生成的文件,如机器可运行的二进制文件,汇编文件,目标文件等,当编写完makefile文件后在该目录执行make命令就可以在当前目录看到我们所需要的目标文件,后面的:号一定要有。(2)生成目标所需的文件

10、:如,目标是一个二进制文件那么生成目标所需的文件就是多个或一个头文件h以及目标文件o等(3)生成这个目标和生成这些目标所需文件的所需命令:注意!开头必须是一个tab键,在输入gcc等命令2.make的使用make有许多关于内核构架的参数但是学到现在也基本没用到,直接执行make即可。但是执行make编译的时候必须要指定需要编译的makefile文件所在目录3.3gcc和g+工具介绍:gcc是用来编译C语言文件,g+是用来编译C+语言文件。由于我在这个实验中并没有用到gcc/g+工具,所以略过3.4交叉编译器arm-linux-gcc工具:该工具的作用是在一种计算机环境中运行的编译程序,能够编译

11、出在另外一种环境下运行的代码,这个过程就叫做交叉编译,也就是说在一个平台(PC机为ubuntu)上生成另一个平台(S3C2440开发板)上的可执行代码使用:arm-linux-gcc有很多参数在本次实验中也没有用到,但是在ubuntu上编译的代码要在s3c2440开发板上运行,就必须要在ubuntu上安装arm-linux-gcc工具,安装过程大致为:(1) 在网上下载arm-linux-gcc的工具包(tar)(2) 下载完后随意放到一个目录然后在该目录终端输入:tar -j(-j或者-z由安装包后缀决定)xvf arm-linux-gcctarbz2(3) 进入该目录看到有个bin目录该目

12、录里面就是关于arm-linux-gcc工具的二进制文件(4) 有两种方式使用该交叉编译工具;1将bin文件里面所需的指令放到根目录的bin文件里。2这种方式更为保险:首先修改PATH环境变量vi /etc/profile然后在最后一行添加arm-linux-gcc/bin目录即可我的目录设置如下:(5) 保存退出后要立即使环境变量生效,而不用重启电脑,可以在终端输入:source /etc/profile3.5oflash烧写工具的介绍与使用1介绍:oflash是用于linux在线用JTAG烧写u-boot,内核,文件系统等到s3c2440开发板指定的地址2. 使用oflash:由于ofla

13、sh有两种版本一个是用于windows下的(用的ubuntu所以不介绍),另一个是用于ubuntu中的,买的开发板有自带的两个版本,无需下载,所以我用的是第二个。将目录里面的oflash复制到ubuntu下根目录的/bin目录里面(因为oflash是一个bin文件),然后将JTAG连接到开发板上,在终端下输入oflash就可以进入烧写界面如图然后选择对应的烧写模式与烧写到对应的NOR FLASH或NAND FLASH中的指定地址3烧写完毕后需要重启开发板,在重启之前要拔掉开发板上的JTAG接口,因为如果不拔掉会把对应的电平拉低。3.6ubuntu下minicom的介绍与使用1. 介绍:mini

14、com工具是用与PC机远程控制开发板的超级终端,可以在ubuntu上对开发板进行控制,线路连接方式为:将开发板上的USB-COM1接口用USB线链接到电脑上就可以了,驱动一般开发板会自带。2. Minicom的使用:(1) 安装minicom:在终端下输入:aptget install minicom(2) 安装完毕后进行minicom的配置,如下步骤:首先在终端输入minicom -s出现如下界面:然后选择serival port setup出现如下再打开一个终端输入dmesg用于查看cpu进程,找到/dev/ttyx的关键字查看x是几,然后在这个设置界面按下a就可以设置minicom所使用

15、的对应串口之后按下F将hardware flow control关闭再按下回车保存。然后进入Modem and dialing之后将A,B,K全部设置为空,在按下回车保存,在选择save setup df1进行保存。Minicom的配置结束之后在minicom界面就可以看到开发板运行情况,文件系统,内核,u-boot等并且控制开发板关于minicom的界面操作:只绍基本操作参数,先按下crtl+a后才能使用下面的按键C :清屏 R :接收文件S :发送文件Q :退出和复位X :退出没有复位3.7串口下载工具dnw的介绍与使用1. 介绍:串口下载工具dnw和JTAG一样是只是用于进行串口的下载(

16、但是前提必须是在有u-boot的基础上)2. 使用:dnw工具也是在购买开发板时自带的,有两个版本一个是用于ubuntu的叫dnw串口工具,一个是用于windows的叫tftp串口下载工具,这一个不做介绍,只介绍dnw。将开发板自带的dnw复制到ubuntu的根目录中/bin目录里面,和oflash安装一样,然后打开另一个终端打开minicom并连接开发板的usb口和usb-com1口,打开开发板,在u-boot菜单界面如图,该界面就是u-boot的菜单界面,可以通过该界面用dnw进行内核,u-boot,文件系统的烧写等功能按下相应的字母后会显示等待下载,然后再切换到dnw工具,在终端输入dn

17、w xxxx(xxxx是需要烧写的文件)按下回车就可以在开发板minicom界面看到对开发板烧写的过程。需要注意的是在使用dnw命令时后面的文件一定要指定该文件所在的目录,并且必须是绝对路径。3.8 nfs的下载,配置与使用3.8.1 首先下载ubuntu的远程登录服务器工具(ssh),如果没有该服务就不能用nfs远程工具,安装过程为首先更新源代码:apt-get upadte,等待更新完毕后输入:apt-get install openssh-server,安装完毕后查看ssh是否启动成功,此时分两种情况,(1).在终端输入:ps -e| grep ssh,如果出现sshd关键字说明已经开启

18、 (2).如果没有则在终端输入service ssh start进行启动 3.8.2 下载nfs工具,nfs是用网络进行远程登录系统的工具,在嵌入式中的作用主要是:(1).用pc机的ubuntu系统内的某个相关目录挂载到开发板的/mnt目录下 (2).让开发板从pc机里定制的s3c2440内核来启动开发板 (3).用网口进行开发板u-boot,内核,文件系统等的烧写由于本机自带nfs工具所以这里不进行安装的说明,下面进行nfs配置说明,用vim工具打开/etc/exports文件,在最下面加入一行/home/paddy/jz2440/kaifa/nfs_root/LCD *(rw,sync,n

19、o_root_squash) 说明:LCD目录是我自己新建的目录,随意放哪都可以,但路径要写对,*代表允许所有IP访问。设置好后保存退出,此时nfs配置文件设置完毕,设置完毕后并没有生效,必须要在终端输入:exportfs -r来进行重启nfs服务4. 烧写裸板(u-boot,内核,跟文件系统)的过程介绍4.1u-boot的介绍与烧写过程:4.1.1U-BOOT的介绍在嵌入式系统当中,从开发板开机硬件的初始化到启动操作系统内核,这些都是由bootloader程序完成的。Bootloader是嵌入式系统当中最先运行的程序,用于完成对硬件的初始化,就和计算机当中的BOIS一样的效果,并建立内存的映

20、像工作,为内核准备好软硬件运行的环境,最终bootloader把操作系统内核映像加载到S3C2440的SDRAM中,并将系统的控制权交给它,所以bootloader的最终目的就是将内核成功加载到SDRAM中并且成功的在SDRAM中运行。Bootloader主要是针对硬件设计的所以对于不同架构的开发板有其对应的bootloader。Bootloader都是使用C语言进行编写,并且有两种操作模式分别是(1) 启动加载模式:就是通过PC机将内核烧写到我们SC32440开发板中的NAND FLASH 中,然后通过这个FLASH将系统加载到SDRAM中运行。整个过程并没有用户的介入。(2) 下载模式:就

21、是通过PC机将就是将内核直接烧写到SDRAM或者NOR FLASH中运行,然后再将内核复制到NAND FLASH中。4.1.2 这里插播一下NAND FLASH和NOR FLASH的主要区别:NAND FLASH要比NOR FLASH内存大主要存放的是数据和代码,而NOR FLASH由于太小只能存放代码,bootloader可以烧写到NAND FLASH中也可以烧写到NOR FLASH中,区别主要是NAND FLASH启动bootloader时是要加载到SARAM中才可以运行,而NOR FLASH启动bootloader不需要加载到内存而可以直接启动,所以速度比较快。S3C2440所需要的bo

22、otloader是U-boot,U-boot的最终目的时启动内核所以就需要(1)能够读写FLASH。(2)需要初始化SDRAM,如初始化时钟和串口。(3)能够启动内核4.1.3 NAND FLASH和 NOR FLASH的启动过程,如下图S3C2440 4K NAND FLASH cpu NOR FLASH SRAM 4k SDRAM sS3C2440开发板(1) NAND FLASH启动过程:打开开发板后SRAM首先会将NAND FLASH前4K程序完整复制到SRAM中然后CPU从0地址开始启动SRAM,这是bootloader只有4k以下的大小的情况,如果bootloader大于4K那么,

23、首先将前4k内容完整复制到SRAM中并且在SRAM中启动,之后通过SRAM控制器将剩下的程序内容完整复制到SDRAM中并且从SDRAM中启动。(2) NOR FLASH启动过程:当bootloader烧写到NOR FLASH中后开机,由于NOR FLASH的首地址为0,所以cpu会直接到NOR FLASH中去执行bootloader并且执行,而不用在放到SDRAM中4.2 u-boo裸板的移植过程在网上下载S3C2440开发板的u-boot,是一个tar压缩文件,比如下载的名字为uboot.tar.bz2。(1) 将这个压缩文件解压:tar -jxvf uboot.tar.bz2,进入uboo

24、t目录(2) 如果下载时附带补丁文件则需要打补丁:patch p1 ./补丁文件.patch补丁文件是一个后缀为.patch的文件,patch是打补丁命令,p1(是数字1不是字母l):代表后退一个目录,因为补丁文件不在uboot目录里面,:代表打到那里去。./:代表上一层目录(3) 在uboot目录下输入:make 100ask24x0_config进行配置用来说明这个u-boot支持s3c24x0这个ARM构架(4) 在终端输入make进行u-boot的编译编译完成后在这个目录下输入ls命令可以看到一个u-boot.bin这个文件,该文件就是bootloader(5) 将开发板JTAG连接好

25、后在终端输入oflash u-boot.bin(6) 进入了之前所说的oflash界面,然后将u-boot.bin文件烧写到NAND FLASH里面为0的地址,之后重启开发板(7) 用USB连接开发板的USB-COM1接口,打开minicom(8) 然后就将u-boot成功移植到开发板中,就可以看到并且进入u-boot菜单和调试界面了4.3 S3C2440内核的介绍与移植过程4.3.1内核的介绍建立好交叉编译环境和uboot的移植后就可以进行内核的移植,内核是指内核源码经过编译链接生成的映像文件。通常编译嵌入式内核是通过不同的make命令来实现的,它所执行的配置文件就是上面所介绍的Makefi

26、le,内核的编译并不是加强这个内核的性能而是将一些驱动加载到这个内核。一般内核编译方式有三种:(1)将该功能编译进内核,(2)或者将该功能不编译进内核(功能指的就是驱动),(3)将该功能动态加载到内核里面,也就是将该功能编译成一个模块,当需要的时候才进行加载。每个编译模式都有自己的优点和缺点,如果把平时使用不到的功能动态的加载可以减小内核的大小,避免造成内存空间的浪费,但是缺点是加载时需要手动调用这些模块。如果将这些功能静态加载到内核则会使使用这个内核的人感觉方便,快捷,但缺点却是加大了内核,浪费更多资源。一般都是将功能静态加载到内核中,LINUX内核主要是由5个子系统组成:进程调度,内存管理

27、,虚拟文件系统,网络接口和进程间通信,下面将不介绍各系统和内核的配置,因为网上有现成的下载所以不做深究。4.3.2内核的编译与移植4.3.2.1内核的编译过程:首先在网站下linux内核一般是tar格式,这里起名为kernel.tar.bz2。(1) 将内核文件解压:tar -jxvf kernel.tar.bz2,这里最好将内核和之前的uboot放在同一个目录(不是放到uboot目录)(2) 解压完后进入kernel这个目录(3) 如果在下载时附带补丁文件则需要打补丁:patch p1 ./补丁文件.patch补丁文件是一个后缀为.patch的文件,patch是打补丁命令,p1(是数字1不是

28、字母l):代表后退一个目录,因为补丁文件不在kernel目录里面, 则说明里面还有更多的驱动可以按下回车进入。(2)按下m代表将内核动态加载,也就是编译的时候不会加载到内核里面,只有当你需要的时候进行手动加载。(3)按下y代表将该驱动直接编译进内核里面(静态加载)。(4)按下n代表不加载到内核也不会动态加载。(5)键盘左右键用来控制最下面一行,进行设置,退出,帮助。在推出时系统会自动询问是否保存所以不必担心(5) 配置完后进行内核的编译:编译方式有两种1.直接make会生成一个不可移植的内核。2.执行make uImage可以编译出一个映像文件,该映像文件才可以进行移植。(6) 可以在kern

29、el/arch/arm/boot目录下看到uImage这个内核映像文件。需要注意的是,要生成s3c2440所需的内核文件(uImage)就需要mkimage这个bin文件,下面大致介绍进行make menuconfig后生成的内核文件种类:内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件 ,uImage是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的头,说明这个内核的版本,加载位置,生成时间,大小等信息。其0x40之后与zImage没区别。制作uImage文件首先在uboot

30、的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就完成制作工具。然后在内核目录下运行make uImage。如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比zImage多64个字节。 也可以在kernel下生成zImage后手动执行mkimage来生成uImage,不过需要一些参数。(7) 然后将USB-COM1和USB连接到开发板,打开minicom,在进入菜单后按下k,如图(8) 再打开另一个终端,输入之前介绍的dnw uImage将内核烧写到开发板,然后烧写过程完毕,重新给开发板上电或者输入r来重启开

31、发板。就可以看到内核启动信息。4.4 根文件系统的介绍与移植过程4.4.1跟文件系统的介绍U-boot的最终目的是启动内核,而内核的最终目的是启动应用程序(如busybox等),但是应用系统在跟文件系统上才能运行,所以就要构建根文件系统,并且挂在跟文件系统。文件系统是一种系统软件,它是操作系统为了存储和管理数据,而在存储器上建立的一些结构总和,文件系统必须提供创建文件,删除文件,读写文件等功能的系统调用为文件操作服务。嵌入式文件系统是指嵌入式系统中实现文件的存取和管理等功能的模块,他提供文件的传输功能,为嵌入式系统和设备提供文件系统的支持,常用的文件系统有:TFS,FAT,JFFS,EXT2和

32、EXT3,SWAP,CRAMFS,YAFFS等,本试验所使用的是YAFFS文件系统,它的特点是和JFFS有非常类似的FLASH文件系统,是唯一针对NAND FLASH设计的文件系统,和JFFS相比,它裁剪了一些功能,所以速度更快,对内存的占用更少。4.4.1 跟文件系统的移植这里是直接使用开发板所带的文件系统,也可以网上直接下载,文件名是fs_qtopia.yaffs2 (1)将USB-COM1和USB连接到开发板(2)打开minicom然后进入菜单模式按下k,会显示等待下载(3) 进入fs_qtopia.yaffs2 所在的目录(4) 再打开另一个终端输入dnw fs_qtopia.yaff

33、s2 ,然后就可以在minicom界面看到下载过程(5) 完成烧写后按下b重启开发板,然后就可以进入最终的开发板界面经过所上的步骤之后一台完整的开发板裸机烧写完毕。5 液晶屏的介绍以及工作原理LCD液晶显示屏主要用于显示文本及图形信息。液晶显示屏具有轻薄,体积小,耗电量低,无辐射危险,平面直角显示以及影像稳定不闪烁等特点,因此,在许多电子应用系统中,常使用液晶显示屏作为人机界面5.1 LCD工作原理及组成: LCD显示器中的液晶体在外加交流电场的作用下排列状态会发生变化,呈不规则扭转形状,形成一个个光线的闸门,从而控制液晶显示器件背后的光线束否穿透,呈现明与暗或者透过与不透过的效果,这样人们才

34、能在LCD屏幕上看到深浅不一,的图像,LCD显示器中的每个显示像素都可以被电场或者磁场控制,不同的显示像素按照控制信号的“指挥”便可以在显示屏上组成不同的字符,数字及图形。因此建立显示所需的电场与显示像素的组合就成为液晶显示驱动器和液晶显示控制器的功能,与传统的CRT相比,LCD占用空间小,低功耗,无闪烁,降低视觉疲劳,具有很大的发展潜力。LCD的横截面及很像是很多层三明治叠在一起。每面最外层是透明的玻璃基体,玻璃基体中间就是薄膜电晶体。液晶之所以可以显示彩色,是因为它在液晶显示屏上加了一个彩色滤光片,并将单色显示矩阵中的每一个像素分成3个子像素,分别通过彩色滤光片显示红 绿 蓝三原色,就可以

35、显示出色彩,通常,LCD后面都有照明灯用来显示画面。LCD的种类有TN型,STN型,DSTN型,这三个类型的基本原理都差不多,而S3C2440采用的是最新的TFT型显示器,TFT-LCD是一种用与笔记本电脑,监视器,液晶电视,手机等产品的有源矩阵液晶显示器件,TFT-lcd彩色显示原理如下图:光源 基片 R G B R G B R G B 彩色滤光片 液晶LCD从光源发出的白光透过基片,基片就是一层玻璃薄膜,然后通过彩色滤光片将像素分为红,绿,蓝三个子像素,此时液晶显示器件仅仅作为一个光阀,就可以控制滤色膜透过光的通断,再通过液晶将颜色显示出来。如果R,G,B这三个子像素均可实现人眼对灰度的分

36、辨能力64级灰度驱动,就可以实现64x64x64约26万种彩色的“真彩色”5.2 内部LCD控制器介绍 S3C2440内置LCD控制器可以支持规格为每个像素16位(16bpp:颜色有2的16次方种),32位,但是不支持8位,S3C2440采用16位,LCD控制器可以通过编程支持不同的LCD屏幕需求,例如行和列像素数,数据总线宽度,接口时序和刷新频率等。5.3 LCD驱动程序设计概括设计一个驱动程序需要这个应用程序(APP)通过对应的驱动程序,如open,write,read等来控制对应的硬件。LCD驱动为字符驱动,s3c2440开发板内核自带LCD驱动位于linux/drivers/char目

37、录下,驱动设计步骤为:(1)构造出这些驱动程序。(2)放到类似于file_openations结构体中。(3)使用这些结构体(registerchrdev),register_chrdev主要存放主设备号和file_openations。(4)设计程序入口。(5)设计程序出口。5.4 LCD工作时序图和工作时扫面的时序图介绍 工作时扫描的时序和硬件图如下图(1) VSYNC帧同步信号:用高电平或低电平表示每一帧扫描的开始(2) HSYNC行同步信号:用高电平或低电平表示每一行扫描的开始(3) VCLK时钟:在上升沿或下降沿将数据写入液晶屏(4) VDEN数据有效控制:表示是否开启TFT液晶屏(

38、5) VD数据信号:表示每个点的颜色,通常有16位,24位等TFT-LCD工作时序图介绍该图需要结合上图来看,LCD屏幕的显示可以想象为屏幕背后有一个喷枪,喷枪将颜色打在屏幕上,喷枪运动的顺序是一个Z字型。VSYNC是垂直方向的同步信号,首先VSYNC是一个下降沿,当要变成上升沿时喷枪会到屏幕的最上方黑框(每个屏幕都有黑框,他的作用是起一个缓冲的作用)的起始位置,HSYNC是水平方向同步信号,首先是一个下降沿,当要变成上升沿时喷枪会到屏幕的最左边黑框的起始位置,然后喷枪开始打出颜色这个颜色是我们看不到的,持续时间为HSPW+1+HBPD+1个时间,之后VDEN开启,此时喷枪才真正从我们能看到的

39、屏幕开始,然后打出一行的颜色,这段时间是HOZVAL+1,之后又进入黑框持续时间为HFPD+1,也就是说扫描水平方向两边的黑框所持续的时间总共为HSPW+1+HBPD+1+HFPD+1,一行结束时会有一个VSYNC垂直方向的同步信号,然后喷枪就到了下一行的最左边,和水平方向一样屏幕上下也有一段黑框,上面的黑框持续时间为VSPW+1+VBPW+1(单位是行),之后喷枪才能真正从我们看到的屏幕开始,一直持续LINEVAL+1的时间,之后由会进入下面的黑框持续VFPD+1的时间,所以扫描上下黑框所占的时间为VSPW+1+VBPW+1+VFPD+1,当一个垂直方向结束时代表一帧的结束,喷枪又会回到最上

40、方。LCD每个点认为是一个像素,喷枪从最头开始,VD就会传输数据(颜色),如何知道喷枪该往下一个像素:此时会有一个VCLK信号,每来一个VCLK就会移动到下一个像素然后再用VD来传输颜色。5.5基于framebuffer的TFT-LCD液晶屏(只做简单介绍)Framebuffer是出现在linux 2.2.xx内核版本以后的一种驱动程序接口,该接口将显示设备抽象成帧缓冲区,应用程序不需要知道底层硬件的任何信息,它只和framebuffer抽象出来的接口打交道,这样就大大降低了所有GUI界面程序的移植工作。对于用户来说帧缓冲区刻意被看做是一个显示内存的映像,将其映射到进程的地址空间后,就可以进行直接的读写操作,操作结果也可以现实在屏幕上。其结构如下图: 一个像素 HSYNC16bbp VSYNC LCD控制器 VCLK显存framebuffer VD SDRAM S3C2440 TFT-LCDSDRAM会给LCD分配一个显存叫framebuffer,framebuffer中每一个数据代表着对应LCD上的一个像素,像素的颜色由内存对应的那一块的数值决定,并且将每个数据的地址告诉LCD控制器,LCD才会知道取出什么颜色来传输给LCD,并且通过VD,VCLK,VSYNC,HSYNC,VDEN来进行传输,S3C2440的LC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁