基于ARM+Linux的LCD驱动设计毕业设计说明书(57页).doc
《基于ARM+Linux的LCD驱动设计毕业设计说明书(57页).doc》由会员分享,可在线阅读,更多相关《基于ARM+Linux的LCD驱动设计毕业设计说明书(57页).doc(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于ARM+Linux的LCD驱动设计毕业设计说明书-第 - 45 - 页 学号: 毕业设计说明书 题 目 基于ARM+Linux的LCD驱动设计英文并列题目 LCD driver design on ARM + Linux广东石油化工学院本科毕业设计(论文)诚信承诺保证书本人郑重承诺:基于ARM+Linux的LCD驱动设计毕业设计(论文)的内容真实、可靠,是本人在 指导教师的指导下,独立进行研究所完成。毕业设计(论文)中引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处,如果存在弄虚作假、抄袭、剽窃的情况,本人愿承担全部责任。 学生签名: 年 月 日系主任批准日期毕 业 设 计
2、(论 文)任 务 书计算机科学与技术 系 计算机科学与技术 专业 计算机 班 学生 一、毕业设计(论文)课题 基于ARM+Linux的LCD驱动设计 二、毕业设计(论文)工作自 2012 年 3 月 11 日起至 2012 年 6 月 15 日止三、毕业设计(论文)进行地点 广东石油化工学院 四、毕业设计(论文)的内容要求 1、基于ARM+Linux的LCD驱动设计是在ARM9平台上移植Linux系统,然后基于Linux系统内核进行LCD驱动实现的设计,最终在LCD液晶显示器上显示图片。该设计可以分为三个部分,即LCD驱动层实现、图片解码实现和LCD应用程序实现。其中在LCD驱动层的实现中,必
3、须对ARM9 s3c2410的硬件结构进行分析,虽然在Linux内核中已经对该芯片提供的支持,但要设置芯片的相应输出引脚为LCD引脚;其次要对LCD液晶显示器进行分析,参考该LCD的手册进行时序的分析,并进行相应的硬件编程;最后也是最为重要的就是要了解在Linux内核中LCD驱动是如何实现的,当然可以参考内核中其他类型LCD的实现,对在Linux内核中是如何进行LCD驱动实现的层次化结构必须要了解清楚。在图片解码中,对于要显示到LCD液晶显示器上的图片,首先必须对图片进行解码分析,然后得到图片的像素值,将这些像素值存储到LCD的缓存中,然后LCD控制器就会将这些像素值打印到LCD液晶显示器上,
4、从而实现了对图片的显示,其中对于图片解码,用到了图片的解码库。在LCD应用程序实现上,在LCD驱动程序实现了并创建了设备节点时,在应用程序中就可以直接open该设备节点,得到LCD驱动层实现的buffer后,从而可以相应的write和read操作,实现将图片显示到LCD液晶显示器上。 2、基于ARM+Linux的LCD驱动设计采用了ARM+Linux的实现平台,体现了高端性能上的LCD驱动的实现。在LCD驱动层的实现中,本设计采用三个步骤进行;步骤一是设置fb_info结构体,fb_info结构体中的成员元素包含了对要实现的LCD的硬件信息和对LCD操作的函数,所以直接根据LCD硬件信息进行设
5、置fb_info结构体成员元素,然后实现对LCD操作的函数即可。步骤二是要设置ARM s3c2410平台的硬件,设置芯片的相应输出引脚为LCD输入引脚,如何根据LCD手册进行ARM LCD寄存器的设置,设置好LCD的时序。步骤三是在上面两个步骤都实现了之后,就可以向内核注册LCD驱动,同时向Linux内核上层提交设置的fb_info结构体对象。这样就实现了对LCD驱动的设计。在图片解码实现中,本设计只实现对JPG格式图片的显示,对于输入的JPG格式的图片,由于对于JPG格式的图片的数据格式排列不了解,所以首先将通过图片库将该格式的图片转换成PMB格式的图片,而对于PMB格式的图片可以直接知道数
6、据格式的排列信息,首先开始的56个字节为信息头和数据头,然后接下来的才是位图信息,所以就可以直接读取位图信息进行显示到LCD上,实现对LCD图片的动态显示。在LCD应用程序实现上,关键的是要获得LCD驱动层申请的buffer空间,然后通过mmap进行映射到用户空间进行直接的操作,通过往该buffer中写入位图数据后,LCD控制器就会根据时序的设置将该位图打印到LCD液晶显示器上。 2、基于ARM+Linux的LCD驱动设计实现在ARM的硬件平台和Linux软件平台上显示图片,使得我对LCD实现的过程的硬件部分、图片解码和LCD应用程序的实现都有了深刻的理解,也进一步加深了对Linux下驱动实现
7、原理的理解,对图片的解码有了更深一步的认识,同时也对于Linux用户层的应用程序如何调用到驱动层的实现有了深刻的理解。通过本次的设计,对于在LCD上如何进行视频的播放和其他用户空间界面的操作都有了一定的理解,对于以后进行相应的实现起到了最为关键的作用。教研室负责人 指导教师 接受设计论文任务开始执行日期 年 月 日学生签名 摘 要 近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式提出了新的挑战。在本设计中硬件平台采用ARM
8、9些列,属于中高端性能的芯片。ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。而这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。同时采用型号为WXCAT35-TG3的LCD液晶显示器,该液晶显示器的尺寸为3.5寸,分辨率为320240,可以实现触摸屏的相应时间小于10ms。软件平台采用Linux内核,版本为2.6.38.8。Linux系统在嵌入式领域应用越来越广,与其自身的模块化程度高、源码公开、广泛的硬件支持、安全性及可靠性好、具有优秀的开发工具、有很好的网络支持利文件系统支持和与UNIX
9、完全兼容的自身特性是分不开的,所以本设计中采用Linux作为软件的实现平台。本设计的最终目的是在LCD液晶显示器上动态显示多张图片,涉及到了从LCD驱动层到应用层的实现,关键技术为LCD驱动实现、图片解码、LCD应用程序实现。关键词:嵌入式 ARM9系列 LCD Linux内核 动态显示 关键技术 Abstract In recent years, with the development of computer technology and integrated circuit technology, embedded technology is the growing popularity
10、 of playing an increasingly important role in communications, networking, industrial, medical, electronics and other fields. Information age, the digital age makes embedded products was a great opportunity for development, show a bright future for the embedded market, but also new challenges for emb
11、edded.In this design, hardware platform of ARM9 more columns, the performance of high-end chip. The ARM9 family processors mainstream British company ARM embedded processors, new design, the more transistors can be achieved more than twice the processing capabilities of the ARM7 processor. This proc
12、essing capability is achieved by increasing the clock frequency and reduce the cycle of instruction execution. Using model WXCAT35-TG3 LCD display, the size of the LCD display is 3.5 inch with a resolution of 320 240 touch screen response time less than 10ms.The software platform uses the Linux kern
13、el version 2.6.38.8. Linux system more widely in the embedded field, with its own high degree of modular, open source, a wide range of hardware support, security and reliability, with excellent development tool, have a good network to support the Lee file system support and is fully compatible with
14、UNIX features are inseparable, so the design of Linux as a software platform.The ultimate goal of this design is a dynamic display on the LCD display multiple pictures related to the LCD driver layer to the application layer, key technologies, LCD driver, the picture decoding, LCD applications to ac
15、hieve.Keywords: Embedded ARM9 series LCD Linux kernel Dynamic display key technologies目 录摘 要IAbstractII引 言- 1 -第一章 ARM9 s3c2410简介- 2 -1.1 ARM技术- 2 -1.2 s3c2410处理器介绍- 2 - 1.2.1 AMBA、AHB、APB 总线特点- 3 - 1.2.2 S3C2410处理器体系结构- 4 - 1.2.3 S3C2410处理器体系结构- 4 - 1.2.4 S3C2410处理器存储器映射- 4 - 1.2.5 S3C2410处理器时钟和电源管
16、理- 4 -第二章 嵌入式Linux简介- 6 -2.1嵌入式Linux系统概述- 6 -2.2嵌入式Linux系统的优势- 6 -2.3 构建嵌入式Linux- 7 - 2.3.1 精简内核- 7 - 2.3.2 系统启动- 8 - 2.3.3 设备驱动程序- 9 -第三章 开发工具- 11 -3.1 开发环境- 11 - 3.1.1 虚拟机中安装ubuntu10.10- 11 - 3.1.2 配置网络- 13 - 3.1.3 配置samba服务器- 14 -3.2 交叉编译工具- 15 -3.3 安装TFTP和NFS服务- 15 - 3.3.1 安装TFTP服务- 16 - 3.3.2 安
17、装NFS服务- 17 -3.4 系统启动环境搭建- 18 - 3.4.1 uboot启动搭建- 18 - 3.4.2 Linux内核启动搭建- 19 - 3.4.3 文件系统搭建- 21 -第四章 LCD驱动实现- 22 -4.1 S3C2410 LCD控制器分析- 22 - 4.1.1 TFT屏时序分析- 23 - 4.1.2 LCD控制器主要寄存器介绍- 24 -4.2 LCD驱动内核层次分析- 26 - 4.2.1 FrameBuffer的介绍- 27 - 4.2.2 FrameBuffer的数据结构- 27 - 4.2.3 FrameBuffer对驱动的统一管理- 30 - 4.2.4
18、 实现消息分派- 31 -4.3 LCD驱动实现代码分析- 32 - 4.3.1 设置fb_info- 32 - 4.3.2 设置LCD硬件- 38 - 4.3.3 注册fb_info- 50 -4.4 添加驱动到内核- 51 - 4.4.1 修改内核Makefile- 51 - 4.4.2 支持启动LCD显示- 51 -第五章 LCD应用程序实现- 53 -5.1 在LCD上显示JPG格式图片的主流程图- 53 -5.2 bmp图片格式分析- 53 - 5.2.1 文件头- 54 - 5.2.2 信息头- 55 - 5.2.3 颜色数据结构- 56 - 5.2.4 提取图像数据- 56 -5
19、.3 应用程序代码实现分析- 57 - 5.3.1 获取显存地址- 58 - 5.3.2 读取JPG格式图片- 59 - 5.3.3 用位图数据填充LCD显存- 59 - 5.3.4 main函数实现- 60 - 5.3.5 编译- 61 -第六章 程序运行测试- 62 -6.1 启动uboot- 62 -6.2 装载内核与文件系统- 63 -6.3 运行应用程序- 63 -结论- 65 -致谢- 66 -参考文献- 67 -引 言嵌入式技术是将计算机作为一个信息处理部件,嵌入到应用系统中的一种技术,也就是说,它将软件固化集成到硬件系统中,将硬件系统与软件系统一体化。嵌入式具有软件代码小、高度
20、自动化和响应速度快等特点,因而进入21世纪后其应用越来越广泛,例如,各种家用电器如电冰箱、自动洗衣机、数字点电视机、数码相机等广泛应用这种技术。随着计算机技术的飞速发展,尤其是嵌入式系统的发展,嵌入式Linux系统和液晶显示器优点就越显突出。正是由于嵌入式Linux 系统具有低成本、多种硬件平台支持、优异的性能和良好的网络支持的优点,而且液晶显示器作为输出设备具有体积小,耗电省的优点,让它们在各类仪器设备的控制过程中占据着越来越重要的角色。 本设计通过利用基于Linux的ARM9系统开发平台和嵌入式系统开发常用的“宿主机/目标机”开发模式,使用嵌入式Linux系统下的各类编辑编译程序的工具,改
21、写Linux内核驱动程序,通过编译内核,更新内核程序,利用帧缓冲的方式,实现了液晶显示器的驱动,同时实现在LCD液晶显示屏上动态显示多张图片。此设计是为了在ARM9硬件平台上,通过Linux系统实现LCD液晶显示器的驱动,并通过LCD应用程序实现图片在该LCD液晶显示器上进行动态显示。该LCD驱动只是在Linux-2.6.38.8内核的基础上实现,对于不同版本的内核,可能需要进行相应的修改变动;同时设置的LCD的时序要根据不同的LCD显示器说明书进行设置。对于在Linux内核中实现LCD液晶显示器的驱动,内核中本身有相应的实现,可以进行参考实现,但是本项目实现中,不采用内核中的定义实现方法,而
22、是采用独立对相关变量进行定义和赋值,最终向Linux内核的上层进行提交fb_info结构体实现对LCD硬件的向上层注册。而对于LCD应用程序的实现将会是本项目的一个难点,在应用程序上通过向LCD驱动设置buffer数据区获得映射后,可以直接往该LCD的buffer里面直接写要显示的位图的值,然后LCD控制器会自动将该buffer中的位图数值进行显示到LCD液晶显示器中。而对于要写入的buffer的位图信息,必须要对图片进行解码,从而获得要现实的图片的位图数值,从而进行写入。该LCD驱动模块以“-y”的编译选项编译到Linux内核中,从而可以实现在Linux内核启动的过程中,可以从LCD上打印出
23、相应的启动信息,并在内核启动后显示登陆窗口。该项目的实现是在ubuntu 10.10环境下进行实现的,通过交叉编译工具链arm-linux-gcc进行编译内核、LCD应用程序,通过网络的形式将Linux内核烧入到norflash中,然后在内核启动后通过网络进行挂载文件系统。第一章 ARM9 s3c2410简介在嵌入式领域中,为了开发更为高效的嵌入式设备,ARM由于其自身的高效特性成为很多开发者的首选,即使相对于MIPS架构的CPU来说,它的价格更高,但它带来的收益也会更多。1.1 ARM技术ARM体系结构是业界领先的微处理器体系结构,为系统和软件工程师提供了开发低能耗、高性能消费类和工业产品的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM Linux LCD 驱动 设计 毕业设计 说明书 57
限制150内