




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 编 号: 审定成绩: 重庆邮电大学毕业设计(论文)设计(论文)题目:linux下的单片机lcd驱动的设计学 院 名 称 :计算机科学与技术学 生 姓 名 :林成专 业 :计算机科学与技术班 级 :0410601学 号 :06100109指 导 教 师 :段小林答辩组 负责人 :填表时间: 年 月重庆邮电大学教务处制摘 要lcd由于其工作电压低、功耗低、无辐射、寿命高、轻巧方便、易于实现大规模集成和生产等一系列优点,率先进入显示器市场并不断扩宽其领域。又由于人机交互技术的快速发展,lcd凭借其高清晰度、大容量的显示效果,成为了显示领域的新秀。嵌入式系统是以应用为中心,以计算机技术为基础,并且软
2、硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。本文应用了嵌入式开发方面的知识,从实际出发,对zlg240128f型号的lcd进行了驱动。本文的工作主要体现在以下几点:第一,本文深刻分析了当今嵌入式lcd驱动开发的背景、开发现状以及应用前景,对lcd驱动技术的发展作了展望,确定了本文的目的将是对总线结构控制的lcd和扫描方式控制的lcd的开发方式的探讨。第二,本文以zlg240128f型号的lcd为开发对象,以armsys44b
3、0-p 嵌入式系统开发板为硬件平台,以linux为操作系统进行了开发。本文先是采用linux应用程序开发的方式,对lcd直接进行引脚控制,直接对其显存读写来达到我们驱动的目的。在第六章,本文继续探讨了采用linux内核对lcd驱动的技术,主要是探讨了基于framebuffer的写驱动程序的过程。【关键字】lcd 液晶 framebuffer 嵌入式abstractlcd, with a series of advantages such as low working voltage and power consumption, no radiation, longevity, being li
4、ght and convenient and easy to implement large-scale integration and production, has led way into the display market and is constantly widening its field. additionally, due to rapid development of human-computer interaction technology, lcd has become the rookie in the display area with its high-defi
5、nition, and large-capacity display. embedded system is a specialized computer system, which is application-centric and based on computer technology. it is such a system that its software and hardware can be tailored and applied to application system which has strict requirements on function, reliabi
6、lity, cost, size and power consumption. generally, composed of four parts as embedded operating microprocessors, peripheral hardware devices, embedded operating system and user application, the system is used to realize controlling, monitoring or managing other equipments.based on the practice, in t
7、his paper, the zlg240128f lcd model is driven by making use of the knowledge of embedded development. the main job of the article is reflected in the following: first, this paper deeply analyzes the development background, the status quo and application prospect of the present embedded lcd driver, a
8、nd makes a prospect of the lcd driver technology, thus aims to discuss the development approach of both lcds that controls the bus structure and scanning respectively.second, with the armsys44b0-p embedded system development board as the hardware platform and linux the operating system, this paper d
9、evelops the zlg240128f lcd. it first makes a direct pin control of lcd by using of the linux application development approach, thus achieve our driving objective by direct memory read and write. in the sixth chapter, the paper continues to explore the use of linux kernel on the lcd-driven technology
10、, mainly focusing on the write-driver process based on framebuffer.keywords: lcd liquid crystal embedded frambuffer前 言随着电子科学技术的不断发展,无论是高尖端的军工、航天领域,还是低要求的我们的生活领域,嵌入式系统的应用可以说是得到了铺天盖地的发展。嵌入式系统的出现最初是基于单片机的,并应用于汽车、家电、工业机器、通信装置以及成千上万种产品,通过内嵌电子装置使这些产品获得更佳的性能。但是这些装置交互性较差,只是初步的具备了嵌入式系统的特点。随着人们对嵌入式系统的应用越来越多,需
11、求的功能也越来越多,因此嵌入式系统也就具有了更强的交互性。为了更便利的进行个性化设置,就需要用户和系统有着亲密的交互,而这就需要将交互过程可视化。因此,越来越多的嵌入式产品配备了液晶屏。这样,无论是增强人机的交互性,还是为像mp3、mp4等多媒体产品增加广阔的空间,液晶屏的应用都是很重要的。在众多的操作系统中,linux有着很多其他操作系统不及的优点。其开源性、广泛性以及灵活性使其倍受各个开发厂商的青睐。在其众多的优点中,最重要的就是开源性,让我们可以方便的对其学习以及应用。我们可以随意的裁剪、移植和装载其中的某些部分,并应用于各种嵌入式的开发。驱动程序在linux内核中扮演着特殊的角色,它使
12、某个特定的硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的细节问题。用户通过调用来执行特定的驱动程序,从而服务于自己的软件。而这些驱动程序,就是将用户的要求反映给那些特定的设备,从而实现用户期望的功能。这些驱动程序在内核中都是独立于其他部分而建立,以模块的形式,在需要的时候以动态的形式插入到内核中。鉴于液晶显示器的大量需求和linux操作系统的众多优点,因此本题的设计选择了以linux作为嵌入式设备的操作系统,对于基于linux开发的lcd驱动,将会有着广阔的应用前景。第一章 绪论第一节 开发的背景及意义 现在的嵌入式开发始于微机时代的嵌入式应用。在1946年电子计算机诞生以后,其
13、接下来的漫长生涯始终是供养在在特殊的机房中,实现数值计算的大型昂贵设备。直到20世纪70年代,微处理器的出现,计算机才出现了历史性的变化。以微处理器为核心的微型计算机以其小型、价廉、高可靠性特点,迅速走出机房;基于高速数值解算能力的微型机,表现出的智能化水平引起了控制专业人士的兴趣,要求将微型机嵌入到一个对象体系中,实现对象体系的智能化控制。例如,将微型计算机经电气加固、机械加固,并配置各种外围接口电路,安装到大型舰船中构成自动驾驶仪或轮机状态监测系统。这样一来,计算机便失去了原来的形态与通用的计算机功能。为了区别于原有的通用计算机系统,把嵌入到对象体系中,实现对象体系智能化控制的计算机,称作
14、嵌入式计算机系统。因此,嵌入式系统诞生于微型机时代,嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去,这些是理解嵌入式系统的基本出发点。随着嵌入式开发和智能设备的不断发展,科学赋予人们的人机交互的能力越来越强,对其的要求也是越来越高。而显示屏幕的应用无疑让人机交互达到了一个新的发展层次。由于lcd体积小,重量轻,故而使得其在可视化人际交互的过程中成为人们的首选,也使得其开发成为当今嵌入式开发中比较热门的应用。本设计选择以嵌入式lcd的开发为题,正是为了更好的研究与应用lcd服务我们的社会生活,促进嵌入式应用的发展。第二节 嵌入式lcd的应用前景 当今社会,嵌入式lcd开发的应用可以说
15、是数不胜数,小到我们的mp3、mp4,大到我们的电脑、电视甚至是军工的飞机、大炮,都离不开对lcd的应用。所以,应用成熟的嵌入式技术对我们的lcd进行开发就具有了广阔的前景。其主要应用就体现在以下一些方面:1数字、字符显示这方面的应用和led相似,属于小型显示器件,可以显示数字、字符及标志等简单信息,在钟表家用电器,仪器仪表等有广泛的应用。2平面显示lcd的优势在于平面显示,例如电视机、计算机显示器,公共场合的大屏幕显示器等,具有很大的应用前景。3可以作为光开关利用液晶对光的通过,遮断特性,可将液晶器件做为光开关来使用。例如在光纤通信系统的交叉连接设备中,已开发出基于液晶器件的光开关矩阵。在光
16、信息处理中,液晶光开关也得以应用。4军用上的应用也有很多这方面的应用可以说举不胜举。我们的飞机、大炮,已经各种最先进的武器都会装载有lcd。第三节 lcd驱动技术的现状及演进趋势lcd显示器有两大发展方向。一个方向是屏幕尺寸更大、分辨率更高、动态画质更好的lcd-tv,其中最重要的任务是提高运动图像的质量,即解决lcd显示器天生的运动伪像问题。另一个方向是用于移动显示(例如手机显示屏) 的显示屏向着更高速、更高分辨率方向发展,即移动显示屏要显示1280800或1366 768像素的视频信号和画面,屏幕尺寸也加大到5英寸6英寸。为此要开发出一系列成本低、功耗低的芯片。维持型显示和较慢的时间响应是
17、lcd产生运动伪像(motion artifacts)的原因。crt显示属于瞬态显示,每个像素荧光粉在一帧中只有在约0.1ms时间内被电子束激发而发光,显示该位置图像的亮度,然后在约1ms时间内衰减到零。在下一帧中再发光,显示另一个位置。人眼感受到的运动是平滑的,其中暗的时段被人眼的低通时间响应特性(即所谓视觉暂留)滤掉了。tft-lcd是维持型,显示任何运动物体,在一帧时间内总是停留在一个位置上,在下一帧跳到另一个位置,加上人眼对运动物体的自动跟踪特性,将不同帧的发光强度积分在一起,人眼因此对运动图像感到模糊,这就是运动伪像。解决lcd较慢的响应时间可采用过驱动(od,over drive)
18、技术,以此将液晶(lc)的响应时间降低到8ms或更短。但是如何正确选择过驱动电压的大小仍是一个较大的技术问题。过分的od将使运动目标边缘产生亮、暗双边,即过驱动中的边缘伪像;不足的od则使lc的响应时间不够短,引起运动图像模糊。即使lc的响应时间问题已完满地解决,lcd维持型显示器特性仍会对运动图像产生一系列伪像。对于高分辨率大显示屏,运动伪像问题变得严重。因此出现一系列降低维持时间(即积分时间),使lcd显示更接近于瞬态型显示的措施,以减轻运动伪像的生成。与此相对应的是驱动程序开发技术的演进。早期,由于嵌入式的应用主要是基于单片机的开发,故而随之而来的lcd驱动程序的应用也主要是利用单片机的
19、开发,而相应的lcd的控制方式也主要是基于intel8080时序和m6800时序的总线控制方式。随着嵌入式linux的应用和微处理器的功能越来越强大,目前的lcd驱动程序开发技术更多的是利用linux内核的开发。而这类lcd的控制方式也是扫描控制方式。这类开发方式加强了程序员对lcd的可操作性,减少了和硬件之间的联系,但是由于利用了linux内核部分,所以加强了对linux的应用。这有利于应用于高级lcd工控系列产品的开发。第四节 本文的研究工作和论文组织结构一 、本文需要解决的问题 lcd的驱动程序的开发,归根结底就是要利用lcd自身提供的硬件接口和硬件平台,利用编程技术对这些硬件平台进行操
20、作,按照一定的步骤和顺序往这些硬件设备或者是硬件的部件中写入数据,然后让其转化成相应的显示图像显示出来。目前,大多数的lcd的驱动程序的开发都是基于linux的内核,对framebuffer的操作进行的,这种方式主要是针对扫描控制方式的lcd进行开发。对于目前的很多自带总线控制接口的lcd,一般都采用单片机开发。在本文中,我们将同时探讨对两种lcd应用linux平台的开发。二、本文的组织与结构本文共分六章,各章的主要内容如下:在第一章中, 本文介绍了开发的背景、意义,lcd嵌入式应用的前景,lcd的驱动技术的现状以及发展趋势等等,并且介绍了本文需要解决的问题和组织结构。在第二章中,本文将介绍我
21、们需要用到的基础知识,比如linux的定义、特点以及嵌入式系统的定义、特点及组成等方面的知识。在第三章中, 我们将具体介绍我们的linux交叉编译环境以及配置我们的arm平台的移植环境。在第四章中,将对我们整个程序的开发设计一个算法,分析各个层次结构。在第五章中,将具体实现第四章中的算法。在第六章中,对现有的开发方案进行改进。第二章 linux与嵌入式基础知识第一节 什么是linuxlinux是一类unix计算机操作系统的统称。linux操作系统的内核的名字也是“linux”。linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,linux这个词本身只表示linux内核,但在
22、实际上人们已经习惯了用linux来形容整个基于linux内核,并且使用gnu 工程各种工具和数据库的操作系统。linux得名于计算机业余爱好者linus torvalds。当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替minix(是由一位名叫andrew tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有unix操作系统的全部功能,因而开始了linux雏形的设计。出于爱好,他根据可在低档机上使用的minix设计了一个系统核心linux 0.01,但没有使用任何minix或unix的源代码。他通过u
23、senet(就是新闻组)宣布这是一个免费的系统,主要在x86电脑上使用,希望大家一起来将它完善,并将源代码放到了芬兰的ftp站点上任人免费下载。linux以它的灵活性和高效性著称。能够在个人计算机上面实现全部的unix的特性。具有多任务、多用户的能力。linux在gnu的gpl公共许可权下免费获得。linux不仅仅包括完整的操作系统,还包括文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的x-windows图形用户界面。目前,linux能够运用于各种版本的cpu的计算机上,还能运用于一些手持设备,比如说,pda,游戏机,手机,嵌入式产品等等。由于linux的开源性以及免费性,很
24、多厂家都选择应用linux开发,以降低成本,在增强竞争力的同时也推进了linux系统的发展。第二节 linux的优点 绝大多数基于linux内核的操作系统使用了大量的gnu软件,包括了shell程序、工具、程序库、编译器及工具,还有许多其他程序,例如emacs。linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说linux是基于unix的,很大程度上也是因为这两者的基本思想十分相近。linux的优点集中体现在以下
25、几点:低廉性:基于其低廉成本与高度可设定性,linux常常被应用于嵌入式系统,例如机顶盒、移动电话及行动装置等。在移动电话上,linux已经成为与symbian os、windows mobile系统并列的三大智能手机操作系统之一;而在移动装置上,则成为windows ce与palm os外之另一个选择。广泛性:基于linux的开源性给人们带来的巨大诱惑,linux的的应用越来越广,linux社区的人员的增多,致使基于linux的开发越来越方便容易。根据2005年11月号的top500超级电脑列表,显示世上最快速的两组超级电脑都是使用linux作为其操作系统。而在表列的500套系统里,采用li
26、nux为操作系统的,占了371组(即74.2%),其中的前十位者,有7组是使用linux的。目前,除了一部分专家之外,大多数人都不自己选择每一样组件或自行设置,而是直接使用linux套件。灵活性:linux以它的高效性和灵活性著称。它能够在pc计算机上实现全部的unix特性,具有多任务、多用户的能力。linux是在gnu公共许可权限下免费获得的,是一个符合posix标准的操作系统。linux操作系统软件包不仅包括完整的linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的x-window图形用户界面,如同我们使用windows nt一样,允许我们使用
27、窗口、图标和菜单对系统进行操作。总的来说,linux由于有着诸多windows操作系统所缺乏的优点,能够让我们在嵌入式应用中如鱼得水。第三节linux常用命令简介在我们运行的过程中,要用到一系列linux命令,我们这里列举一些常用的命令,方便我们使用。 ftpget 下载文件使用ftpget option remote-host local-file remote-file 例: ftpget 2 uboot.bin u-boot.binftpput 上传文件使用 ftpput option remote-host remote-file local-file执行 以上2
28、个命令时需在主机运行ftp服务器(iis)tftp ftp option host port下载文件使用: ftp -g -l local-file-name -r remote-file-name remote-host例:ftp -g -l a.bin -r u-boot.bin 2上传文件使用: ftp -p -l local-file-name -r remote-file-name remote-host例:ftp -p -l u-boot.bin -r a.bin 2ifconfig 设 置或显示网络接口 ifconfig 接口名称 参数
29、 地址信息 参数: up 启用此接口 down 停用此接口 netmask 设置子网掩码 broadcast 设置广播地址 eth0 设置网卡0 例: 设置ip: ifconfig eth0 9 tar 压缩/解压文件 解压 *.tar.bz2 文件 tar -jxvf *.tar.bz2压缩成 *.tar.bz2 文件tar -cjxf dest-file-name src-file-namels -s 以 数据块为单位,列出文件的大小ls 命令的 s 选项也可用于显示以1024字节为单位的文件 的大小如: ls -ls 类似的命令还有很多,在此不一一列出。 第四节 m
30、akefile的编写什么是makefile?或许很多winodws的程序员都不知道这个东西,因为那些 windows的ide都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多 的html的编辑器,但如果你想成为一个专业人士,你还是要了解html的标识的含义。特别在unix下的软件编译,你就不能不自己写makefile 了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。下面我们介绍makefile的编写。首先,我们来看makefile的原则:target.:prerequisites. comm
31、and . .target也就是一个目标文件,可以是objectfile,也可以是执行文件。还可以是 一个标签。prerequisites就是,要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于 prerequisites中的文件,其生成规则定义在command中。第五节 嵌入式系统的定义及特点在当今中国嵌入式系统领域,对嵌入式系统的定义可以说是五花八门。实际上,嵌入式系统本身是一个外延极广的名词,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统,因此很难给它下一个准
32、确的定义。目前比较认同的嵌入式系统的概念是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统主要有以下几个特点:系统内核小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件
33、的变化和增减不断进行修改。系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。高实时性的系统软件(os)是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。多任务化。嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配rtos(realtime operating system)开发平台,这样才能保证程序执行的实时性、可靠性
34、,并减少开发时间,保障软件质量。第六节 本章总结 本章主要是对linux的基础知识和嵌入式的基本概念作了一个简要的介绍,本章介绍的这些内容都是在本论文后面要用到的必不可少的知识。其中尤其是介绍的linux命令和makefile的编写是一定会用到的知识。第三章 开发的工具和环境第一节 硬件开发平台 本文中的硬件平台是采用的杭州立宇泰电子有限公司的 armsys44b0-p 嵌入式系统开发板。改开发板提供作工精良、资源丰富的硬件电路板,和完整全面、极具价值的源代码包和开发工具,是一块比较优秀的arm7开发板。该开发板的系统图如下:图3-1 在本文中,我们将借助这块arm的开发板进行我们的开发,我们
35、将选用arm的pd和pg端口进行连接我们的液晶屏,利用对gpio端口的读写实现我们的控制 第二节 液晶屏的选取在本题中,我们采用深圳卓立恩公司的zlg240128f型号的lcd进行开发,这是一款自带ra8806控制器的lcd,控制方式为总线控制方式。该屏的自带中文字库,对我们显示文字很方便。该屏的引脚图及对应的参数如下:表3-1第三节 嵌入式linux下自制工具链由于嵌入式系统是专用的计算机系统,它的功能和使用环境和我们的普通的pc机是有区别的。有的嵌入式系统的处理能力较弱,有的嵌入式系统的存储能力较弱;基于很多嵌入式处理器不能在上面安装开发工具,所以,在开发嵌入式系统时,通常要用交叉编译的方
36、式进行。 利用vmware虚拟机安装linux,安装版本unbutu9.10,然后装上gcc,gdb等工具,最好是为虚拟机留下10g左右的空间,然后就是配置samba服务器等等,以后就是用samba服务器来进行数据传输。 交叉编译工具的安装: 由于gcc,glibc,binutils等工具是独立开发和维护的,所以他们之间的版本兼容性比较复杂,使用crosstool则可简化三部分的版本匹配和构造。从crosstool官网上面下载glibc-2.3.6-0.43.tar.gz;从crosstool官网上面下载glibc-2.3.6-versioninfo.h_err.patch补丁,并将其复制到c
37、rosstool-0.43/patches/glibc-2.3.6/; 执行以下命令加压缩: $ tar xzf crosstool-0.43.tar.gz glibc-2.3.6-version-info.h_err.patch是个补丁文件,修改glibc-2.3.6/csu/makefile里面的一个小错误,导致自动生成的version-info.h文件编译出错。将其复制到crosstool的补丁目录下:$ cp glibc-2.3.6-version-info.h_err.patch crosstool-0.43/patches/glib c-2.3.6/ 需要修改crosstool-0
38、.43目录下的demo-arm-softfloat.sh、arm-softfloat.dat、all.sh这三个文件。1 修改demo-arm-softfloat.sh,修改后的内容如下:07 tarballs_dir=/work/tools/create_crosstools/src_gcc_glibc (源码存放的位置)08 result_top=/work/tools (编译结果存放位置)2 修改arm-softfloat.dat,修改如下:02 target=arm-softfloat-linux-gnu 改为: 02 target=arm-linux 它表示编译出来的工具样式为:ar
39、m-linux-gcc、arm-linux-ld等,这是常用的名字。 3 修改all.sh如下: 如果现在就执行demo-arm-softfloat.sh,就是结果存放在/work/tools/gcc-3.4.5 -glibc-2.3.6/arm-linux目录下。为简洁起见,修改all.sh,将结果存放在/work/tools/gcc-3.4.5-glibc-2.3.6目录下。 将70 prefix=$prefix-$result_top/$toolcombo/$target改为: 70 prefix=$prefix-$result_top/$toolcombo 编译、安装工具链: 执行以下
40、命令:$ cd crosstool-0.43/ $./demo-arm-softfloat.sh经编译后,将在/work/tools/目录下生成gcc- 3.4.5-glibc-2.3.6子目录,交叉编译器、库、头文件都包含在里面。设置path环境变量:$ export path=$path:/work/tools/gcc-3.4.5-glibc-2.3.6/bin为了不要每次使用时都手工设置path,可以在/etc/environment中修改path的值:$ vim environment path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr
41、/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin第四节 配置和编译uclinux运行 uclinux 之前要有程序来加载其内核,bootloader 就是完成在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。armsys44b0-p 开发板用的 bios 中已经包含了bootloader代码,在开发板bios运行后可直接将uclinux内核下载运行,或者直接在开发板启动后输入命令
42、“uclinux”即可加载 uclinux 到内存并运行。 编译好的 uclinux 内核可以存放在 norflash 中,也可以用“uclinux”为文件名存放到nandflash中,开发板的bios中的“uclinux”命令会自动寻找的。我们这里选择简单的nandflash的存储方法,可以随时更改保存。保存过程就是先将编译好的uclinux 内核下载到sdram 中,然后用 bios 中的“nfw uclinux”命令将其写入即可,那么内核就会长期保存在开发板上。接下来我们就是运行uclinux,将光盘中的image.ram,image.rom改名为imageram.bin和imagero
43、m.bin将它们下载到指定的位置运行,启动uclinux 时,由 bootloader拷贝到sdram再解压运行。下面我们正式进入对uclinux的配置和编译。将uclinux- armsys -20050101.tar.gz拷贝到/home/ 下,运行解压命令:tar xvzf uclinux-armsys-20050101.tar.gz解压结束后会在/home/下生成uclinux-dist目录。将arm-elf-tools-20030314.sh拷贝到根目录,运行安装:sh arm-elf-tools-20030314.sh。打开终端:# cd /home/uclinux-dist (进
44、入/home/uclinux-dist 目录下)# make menuconfig (运行 uclinux 配置环境)进入uclinux配置(uclinux v3.1.0 configuration),选中“kernel/ library/defauts selection -” 敲空格进入。选取:“内核设置和用户选项设置”: * customize kernel settings * customize vendor/user settings按下esc键退出并保存。终端将首先进入内核配置选单。我们在配置uclinux内核时,就可以通过对这些选项的选择和取消选择来设定内核所具有的功能项。这也
45、是裁减uclinux内核的基本方法。按下esc退出后将进入用户选项选单。我们自己编写的应用程序就可以放在用户选项菜单中。下面我们对uclinux进行编译。在/opt/目录下,按下面的步骤对 uclinux 源码包进行编译:make dep建立依赖关系 make clean (非必要) 清除旧的编译结果 make lib_only 编译库 make user_only编译用户程序 make romfs产生 rom 文件系统 make image产生映像文件 make编译内核编译成功后,在 uclinux-dist/ 目录下将产生 images 目录,其中包含的2个文件:image.ram, im
46、age.rom 就是我们可以用来下载和烧录的映像文件。然后下载或烧录这些二进制文件,并启动运行uclinux。第五节 本章小结 本章对开发所需的硬件器件和软件平台都作了一个简单的介绍,并叙述了配置linux工具链和配置uclinux内核的过程,为后面程序的设计与实现提供了良好的条件。第四章 总体设计第一节 硬件电路的设计由于本设计是采用的自带总线控制接口的lcd,故而对我们来说开发将变得异常简单。我们将直接利用arm7的通用输入/输出端口进行控制。对lcd的连接图如下:图4-1(该图有问题)这里我们选择pg口为控制端口,pd口为数据端口。由于片选信号cs2都是高有效,所以这里我们将这个cs2始
47、终拉高,保证有效。另外,对于vss、vdd、vr、vout以及a、k这几个引脚,我们分别给其加上电压。vr和vout是调节对比度的引脚,由于是负压,所以我们对其用10k滑动变阻器接地。第二节 程序的开发过程我们主要是利用arm对lcd进行控制。在其过程中,我们先将程序在linux编译,然后又下载到arm板上,由arm板控制lcd进行显示,最后数据将在lcd上显示成相应的文字和图片,具体的流程如下: 图4-2第三节 程序的设计 由于是基于arm7的开发,所以在整个程序中,我们必须先对arm7的端口进行配置,将我们所选取的pg、pd端口配置成我们需要的gpio端口。其后部分将是集中于对lcd的控制
48、。这部分我们主要是要实现对lcd的初始化、开显示、清屏以及读状态、写命令、写数据等。而满足用户的要求对什么样的文字或图片进行显示将是建立在这些函数的基础之上。这些函数的层次结构用图表示如下:图4-3在上图中,我们能清楚的看到我们需要的各个函数之间的关系,只要将这些函数各个击破,我们就能达到我们的将lcd显示出来的目的。另外,我们的显示函数其实都是以三个基本函数为基础的,这三个基本函数就是lcd_cmdread()、lcd_cmdwrite()、lcd_datawrite(),而这三个函数就是严格的按照lcd的总线时序来进行读写的。由于arm不是像单片机那样按位控制的,所以这三个函数还得依靠另外
49、一个函数进行输入 outdata()。其关系如下:图4-4第四节 本章总结 本章主要是对整个项目作了一个分析,根据具体的问题提出相应的解决方案。本章第一节主要是考虑到lcd的控制方式,指定出相应的硬件连接图,然后第二节、第三节主要是针对软件层次结构做出相应的设计。本章为后面第五章的具体实现作了充分的准备。第五章 程序的实现第一节 对arm7的相应配置 在整个程序中,该部分可以说是最重要的部分。由于我们选取的lcd是总线接够控制的,所以我们的lcd初始化必须严格按照厂家提供的数据手册进行操作。下面我们就分析一下我们怎么实现我们的初始化函数。由于是基于arm的控制,所以首先我们必须对arm的gpi
50、o端口进行配置这个就具体的体现在我们的port_init()函数,首先我们来分析一下这个函数:void port_init(void) rpcond= 0x0000;/初始化pd的各位都是输出状态rpdatd= 0x00; /端口的初始化数据为0rpcong = 0x0000; /初始化pg的各位都是输出状态rpapg = 0x00; /端口的初始化数据为0通过上面的定义我们就将arm的pd、pg端口定义为gpio口,通过它们实现对lcd的控制。由于对arm端口的操作不能像普通单片机一样一位一位的直接读写,所以我们要进行相应的处理,这部分任务主要是在头文件config.h中完成,由于程序较长,
51、本文不在此对其分析,详情请见附录。然后我们将利用该文件中的配置,实现对arm的位读写,这主要依靠我们的函数outdata():void outdata(unsigned int dat) if( (dat&0x01)=1 ) h_db0(); else l_db0();/利用按位与的方式实现 if( (dat&0x02)=2 ) h_db1(); else l_db1();/对各位的置高和置低 if( (dat&0x04)=4 ) h_db2(); else l_db2(); if( (dat&0x08)=8 ) h_db3(); else l_db3(); if( (dat&0x10)=16
52、 ) h_db4(); else l_db4(); if( (dat&0x20)=32 ) h_db5(); else l_db5(); if( (dat&0x40)=64 ) h_db6(); else l_db6(); if( (dat&0x80)=128 ) h_db7(); else l_db7();第二节 对lcd的软件复位以及初始化操作由于该lcd要求必须在初始化之前对其进行一个低电平操作,然后再拉高,我们必须写一个软件复位的函数softrst(),具体如下:void softrst() delay_nms(2); l_cs1(); /片选有效 h_rd(); /读信号无效 l_r
53、st(); /低电平 delay_nms(5); h_rst(); /高电平 delay_nms(5);下面我们就可以对lcd进行初始化操作。其实初始化函数是基于读命令、写命令以及写状态函数的,对于这几个函数我们将在下节介绍。下面我们来看我们的lcd初始化函数:void lcd_inital() lcd_cmdwrite(wlcr);/00h , 设置成正常模式,显示模式置为图形模式lcd_datawrite(0x00); lcd_cmdwrite(misc);/01h , seg扫描顺序为0-319,com扫描为0-239lcd_datawrite(0x08);lcd_cmdwrite(adsr);/03h , 设置卷动功能,卷动方向从左到右lcd_datawrite(0x00);lcd_cmdwrite(intr);/0fh , 禁能中断和唤醒模式lcd_datawrite(0x00);lcd_cmdwrite(wccr);/10h , 设置字体和光标模式lcd_datawrite(0x00);lcd_cmdwrite(chwi);/11h ,设置光标高度和行距lcd_datawrite(0x00);lcd_cmdwrite(mamr);/12h , 光标水平模式,ddram1数据显示lcd_datawrite(0x11);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路施工施工信息发布与应急沟通措施
- 医院环境健康宣教
- 内科肺炎护理常规
- 衡水七调数学试卷
- 心肌淀粉样变超声诊断与应用
- 杭州市二模初中数学试卷
- 拆除工程安全防护设施防范计划
- 小学人生与健康课件图片
- 撤销工伤协议书范本
- 梅毒传染病病人的护理
- 中广核中山科研基地建设项目环境影响报告表
- 便利店进货查验记录制度范本
- 氮气置换专项方案
- 实验室上岗证样本
- 动脉采血操作并发症及处理
- 糖尿病并发症筛查
- 清淤工程检验批报审、报验表
- 职业技能大赛:电子商务师(四级)理论知识鉴定要素细目表(征求意见稿)
- 基于PLC的恒压供水系统设计(有梯形程序图)
- 微机原理与接口技术(清华大学课件,全套)
- LY/T 2622-2016天麻林下栽培技术规程
评论
0/150
提交评论