基于ARMLinux的LCD驱动设计说明书.doc

上传人:知****量 文档编号:28085565 上传时间:2022-07-26 格式:DOC 页数:77 大小:3.69MB
返回 下载 相关 举报
基于ARMLinux的LCD驱动设计说明书.doc_第1页
第1页 / 共77页
基于ARMLinux的LCD驱动设计说明书.doc_第2页
第2页 / 共77页
点击查看更多>>
资源描述

《基于ARMLinux的LCD驱动设计说明书.doc》由会员分享,可在线阅读,更多相关《基于ARMLinux的LCD驱动设计说明书.doc(77页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、学号:毕业设计说明书 题 目基于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驱动层的实现中,必须对ARM9 s3c2410的硬件结构进行分析,虽然在Linux核中已经对该芯片提供的支持,但要设置芯片的相应输出引脚为LCD引脚;其次要对LC

3、D液晶显示器进行分析,参考该LCD的手册进行时序的分析,并进行相应的硬件编程;最后也是最为重要的就是要了解在Linux核中LCD驱动是如何实现的,当然可以参考核中其他类型LCD的实现,对在Linux核中是如何进行LCD驱动实现的层次化结构必须要了解清楚。在图片解码中,对于要显示到LCD液晶显示器上的图片,首先必须对图片进行解码分析,然后得到图片的像素值,将这些像素值存储到LCD的缓存中,然后LCD控制器就会将这些像素值打印到LCD液晶显示器上,从而实现了对图片的显示,其中对于图片解码,用到了图片的解码库。在LCD应用程序实现上,在LCD驱动程序实现了并创建了设备节点时,在应用程序中就可以直接o

4、pen该设备节点,得到LCD驱动层实现的buffer后,从而可以相应的write和read操作,实现将图片显示到LCD液晶显示器上。2、基于ARM+Linux的LCD驱动设计采用了ARM+Linux的实现平台,体现了高端性能上的LCD驱动的实现。在LCD驱动层的实现中,本设计采用三个步骤进行;步骤一是设置fb_info结构体,fb_info结构体中的成员元素包含了对要实现的LCD的硬件信息和对LCD操作的函数,所以直接根据LCD硬件信息进行设置fb_info结构体成员元素,然后实现对LCD操作的函数即可。步骤二是要设置ARM s3c2410平台的硬件,设置芯片的相应输出引脚为LCD输入引脚,如

5、何根据LCD手册进行ARM LCD寄存器的设置,设置好LCD的时序。步骤三是在上面两个步骤都实现了之后,就可以向核注册LCD驱动,同时向Linux核上层提交设置的fb_info结构体对象。这样就实现了对LCD驱动的设计。在图片解码实现中,本设计只实现对JPG格式图片的显示,对于输入的JPG格式的图片,由于对于JPG格式的图片的数据格式排列不了解,所以首先将通过图片库将该格式的图片转换成PMB格式的图片,而对于PMB格式的图片可以直接知道数据格式的排列信息,首先开始的56个字节为信息头和数据头,然后接下来的才是位图信息,所以就可以直接读取位图信息进行显示到LCD上,实现对LCD图片的动态显示。在

6、LCD应用程序实现上,关键的是要获得LCD驱动层申请的buffer空间,然后通过mmap进行映射到用户空间进行直接的操作,通过往该buffer中写入位图数据后,LCD控制器就会根据时序的设置将该位图打印到LCD液晶显示器上。2、基于ARM+Linux的LCD驱动设计实现在ARM的硬件平台和Linux软件平台上显示图片,使得我对LCD实现的过程的硬件部分、图片解码和LCD应用程序的实现都有了深刻的理解,也进一步加深了对Linux下驱动实现原理的理解,对图片的解码有了更深一步的认识,同时也对于Linux用户层的应用程序如何调用到驱动层的实现有了深刻的理解。通过本次的设计,对于在LCD上如何进行视频

7、的播放和其他用户空间界面的操作都有了一定的理解,对于以后进行相应的实现起到了最为关键的作用。教研室负责人指导教师接受设计论文任务开始执行日期年月日学生签名- 67 - / 77摘 要近年来,随着计算机技术与集成电路技术的发展,嵌入式技术日渐普与,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式提出了新的挑战。在本设计中硬件平台采用ARM9些列,属于中高端性能的芯片。ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处

8、理器的处理能力。而这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。同时采用型号为WXCAT35-TG3的LCD液晶显示器,该液晶显示器的尺寸为3.5寸,分辨率为320240,可以实现触摸屏的相应时间小于10ms。软件平台采用Linux核,版本为2.6.38.8。Linux系统在嵌入式领域应用越来越广,与其自身的模块化程度高、源码公开、广泛的硬件支持、安全性与可靠性好、具有优秀的开发工具、有很好的网络支持利文件系统支持和与UNIX完全兼容的自身特性是分不开的,所以本设计中采用Linux作为软件的实现平台。本设计的最终目的是在LCD液晶显示器上动态显示多图片,涉与到了从LCD驱动层到

9、应用层的实现,关键技术为LCD驱动实现、图片解码、LCD应用程序实现。关键词:嵌入式 ARM9系列 LCD Linux核 动态显示 关键技术 AbstractIn recent years, with the development of computer technology and integrated circuit technology, embedded technology is the growing popularity of playing an increasingly important role in communications, networking, indust

10、rial, 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 embedded.In this design, hardware platform of ARM9 more columns, the performance of

11、 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 processing capability is achieved by increasing the clock frequency and reduce the c

12、ycle 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 kernel version 2.6.38.8. Linux system more widely in the embedded field, with its ow

13、n 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 UNIX features are inseparable, so the design of Linux as a software platform.The

14、 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 achieve.Keywords: Embedded ARM9 series LCD Linux kernel Dynamic display key techno

15、logies目 录摘要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处理器时钟和电源管理- 4 -第二章嵌入式Linux简介- 6 -2.1嵌入式Linux系统概述- 6 -2.2嵌入式Linux系统的优势- 6 -2.3 构建嵌入式Linux- 7 -2.3

16、.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 安装NFS服务- 17 -3.4 系统启动环境搭建- 18 -3.4.1 uboot启动搭建- 18 -3.4.2 Linux核启动搭建- 19 -3.4.3 文件系统搭建- 21 -第四章 LCD

17、驱动实现- 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 实现消息分派- 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

18、 -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.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 -第六章程

19、序运行测试- 62 -6.1 启动uboot- 62 -6.2 装载核与文件系统- 63 -6.3 运行应用程序- 63 -结论- 65 -致- 66 -参考文献- 67 -引 言嵌入式技术是将计算机作为一个信息处理部件,嵌入到应用系统中的一种技术,也就是说,它将软件固化集成到硬件系统中,将硬件系统与软件系统一体化。嵌入式具有软件代码小、高度自动化和响应速度快等特点,因而进入21世纪后其应用越来越广泛,例如,各种家用电器如电冰箱、自动洗衣机、数字点电视机、数码相机等广泛应用这种技术。随着计算机技术的飞速发展,尤其是嵌入式系统的发展,嵌入式Linux系统和液晶显示器优点就越显突出。正是由于嵌入式

20、Linux 系统具有低成本、多种硬件平台支持、优异的性能和良好的网络支持的优点,而且液晶显示器作为输出设备具有体积小,耗电省的优点,让它们在各类仪器设备的控制过程中占据着越来越重要的角色。 本设计通过利用基于Linux的ARM9系统开发平台和嵌入式系统开发常用的“宿主机/目标机”开发模式,使用嵌入式Linux系统下的各类编辑编译程序的工具,改写Linux核驱动程序,通过编译核,更新核程序,利用帧缓冲的方式,实现了液晶显示器的驱动,同时实现在LCD液晶显示屏上动态显示多图片。此设计是为了在ARM9硬件平台上,通过Linux系统实现LCD液晶显示器的驱动,并通过LCD应用程序实现图片在该LCD液晶

21、显示器上进行动态显示。该LCD驱动只是在Linux-2.6.38.8核的基础上实现,对于不同版本的核,可能需要进行相应的修改变动;同时设置的LCD的时序要根据不同的LCD显示器说明书进行设置。对于在Linux核中实现LCD液晶显示器的驱动,核中本身有相应的实现,可以进行参考实现,但是本项目实现中,不采用核中的定义实现方法,而是采用独立对相关变量进行定义和赋值,最终向Linux核的上层进行提交fb_info结构体实现对LCD硬件的向上层注册。而对于LCD应用程序的实现将会是本项目的一个难点,在应用程序上通过向LCD驱动设置buffer数据区获得映射后,可以直接往该LCD的buffer里面直接写要

22、显示的位图的值,然后LCD控制器会自动将该buffer中的位图数值进行显示到LCD液晶显示器中。而对于要写入的buffer的位图信息,必须要对图片进行解码,从而获得要现实的图片的位图数值,从而进行写入。该LCD驱动模块以“-y”的编译选项编译到Linux核中,从而可以实现在Linux核启动的过程中,可以从LCD上打印出相应的启动信息,并在核启动后显示登陆窗口。该项目的实现是在ubuntu 10.10环境下进行实现的,通过交叉编译工具链arm-linux-gcc进行编译核、LCD应用程序,通过网络的形式将Linux核烧入到norflash中,然后在核启动后通过网络进行挂载文件系统。第一章 ARM

23、9 s3c2410简介在嵌入式领域中,为了开发更为高效的嵌入式设备,ARM由于其自身的高效特性成为很多开发者的首选,即使相对于MIPS架构的CPU来说,它的价格更高,但它带来的收益也会更多。1.1 ARM技术ARM体系结构是业界领先的微处理器体系结构,为系统和软件工程师提供了开发低能耗、高性能消费类和工业产品的硅验证解决方案。这些终端产品涵盖了从汽车和工业监视器到家庭娱乐和移动设备的各个领域。 ARM 完整产品线包括微控制器、微处理器、图形处理器、实现软件、单元库、嵌入式存、高速连接产品、外设以与开发工具。借助于完善的设计服务、培训、支持和维护以与公司的庞大合作伙伴社区,我们提供了一个全面的系

24、统解决方案,为主要电子设备公司提供一条快速可靠的途径将产品推向市场。ARM 是 32 位嵌入式微处理器的行业领先提供商,已推出各种各样基于通用体系结构的处理器,这些处理器具有高性能和行业领先的功效,而且系统成本也有所降低。1.2 s3c2410处理器介绍S3C2410微处理器是一款由Samsung公司为手持设备设计的低功耗、高度集成的基于ARM920T核的微处理器。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:16KB指令Cache、16KB数据Cache、MMU、外部存储器控制器、LCD控制器(STN和TFT)、NAND Flash控制器、4个DMA通道、3个UART通道、1

25、个I2C总线控制器、1个I2S总线控制器,以与4个PWM定时器和一个部定时器、通用I/O口、实时时钟、8通道10位ADC和触摸屏接口、USB主、USB从、SD/MMC卡接口等。现在它广泛应用于PDA(Personal Digital Assistant,个人数码助理,一般指掌上电脑)、移动通讯、路由器、工业控制等领域,其部结构如图1-1所示。为了提高系统运行速度,减少能量损失,ARM920T核微处理器把片上器件按器件工作频率,使用频度分成三个模块,各个模块通过各自总线连接,模块之间采用一种叫总线桥的结构过度。下面简单介绍一下各总线特点。图1-1 s3c2410芯片部结构1.2.1 AMBA、A

26、HB、APB 总线特点AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位128

27、位总线宽度;支持字节、半字节和字的传输。APB主要用于低带宽的周边外设之间的连接,例如UART等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。1.2.2 S3C2410处理器体系结构ARM920T核,16位/32位RISC(精简指令系统)结构和ARM精简指令集;ARM MMU,支持Windows CE, Linux等操作系统;指令Cache、数据Cache、写缓冲;支持ARM调试结构,片上ICE支持JTAG调试方式;置先进微控制器总线接口(AMBA)。1.2.3 S3C241

28、0处理器体系结构支持大端(Big Endian)/小端(Little Endian)模式;地址空间为每个存块128MB(一共1GB),每个存块支持8/16/32位数据总线编程;8个存块,6个用于ROM、SRAM和其它,2个用于ROM/SRAM/SDRAM;1个起始地址和大小可编程的存块 (Bank7);7个起始地址固定的存块(Bank0Bank6);所有存块可编程寻址周期;支持SDRAM自动刷新模式;支持多种类型ROM启动,包括NOR/NAND Flash、EEPROM等。1.2.4 S3C2410处理器存储器映射S3C2410的存储空间映射如图1-2所示:1.2.5 S3C2410处理器时钟

29、和电源管理(1)时钟S3C2410的主时钟由外部晶振或者外部时钟提供,选择后可以产生3种时钟信号,分别是CPU使用的FCLK、AHB总线使用的HCLK和APB总线使用的FCKL。时钟管理模块同时拥有两个锁相环,一个称为MPLL,拥于FCLK、HCLK和PCLK;另一个称为UPLL,用于USB设备。图1-2S3C2410的存储空间映射(2)时钟控制逻辑时钟控制逻辑决定了所使用的时钟源,是采用MPLL作为FCLK,还是采用外部时钟。复位后,即使不想改变默认的PLLCON值,也需要重新写一遍。FCLK由ARM920T核使用,HCLK提供给AHB总线,PCLK提供给了APB总线。S3C2410支持HC

30、LK、FCLK和PCLK的分频选择,其比率是通过CLKDIV寄存器中的HDIVN和PDIVN控制的.(3)电源管理S3C2410电源管理模块通过4种模式有效地控制功耗,即正常(Normal)模式、省电(Slow)模式、空闲(Idle)模式和断电(Power-off)模式。Normal模式:为CPU和所有的外设提供时钟,所有的外设开启,该模式下的功耗最大。这种模式允许用户通过软件控制外设,可以断开提供给外设的时钟以降低功耗。Slow模式:采用外部时钟生产FCLK的方式,此时电源的功耗取决于外部时钟。Idle模式:断开FCLK与CPU核的连接,外设保持正常,该模式下的任何中断都可唤醒CPU。Pow

31、er-off模式:断开部电源,只给部的唤醒逻辑供电。一般模式下需要两个电源,一个提供给唤醒逻辑,另外一个提供给CPU和部逻辑,在Power-off模式下,后一个电源关闭。第二章 嵌入式Linux简介随着计算机技术、通信技术的飞速发展,特别是互联网的迅速普与和3C(Computer、Communication、Consume)合一的加速,微型化和专业化成为信息产品发展的新趋势,嵌入式产品成为信息产业的主流。目前,市场上有很多商业性嵌入式系统都在努力的为自己争取着嵌入式市场的份额,Linux以其核可裁剪、移植性好、源代码开放等优点受到越来越多的企业和研发机构的关注。当今信息化的高速发展,使Linu

32、x成为当前最流行的嵌入式操作系统之一,这为Linux的发展注入了强大生命力。2.1嵌入式Linux系统概述Linux最初是一个遵循POSIX标准的由一名芬兰学生编写源代码完全开放的免费操作系统。经过短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争在新兴的嵌入式操作系统领域也获得了飞速发展。目前正在开发的嵌入式系统中,49的项目选择Linux作为嵌入式操作系统。嵌入式Linux是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。主流嵌入式Li

33、nux产品有:美国墨西哥理工学院开发的嵌入式Linux操作系统RT一Linux;Lineo公司的主打产品uClinux;中科院红旗软件公司推出的红旗嵌入式Linux等。2.2嵌入式Linux系统的优势嵌入式操作系统作为嵌入式系统的核心部分,与桌面系统由很大不同受到嵌入式系统资源有限的影响,它要求代码小,速度快,可靠性高移植性好。与其它专用嵌入式操作系统相比(如下表1所示),Linux具有很多优点。 表1 嵌入式Linux与专用嵌入式实时操作系统比较比较嵌入式Linux操作系统专用嵌入式实时操作系统购买费用免费数十万费免费一份产品交一份费稳定性较好,但高性能系统中需改进较好实时性需改进好网络特性

34、免费且性能优越另加数十万购买移植性容易难动态扩展性较好差技术支持全世界自由软件开发者提供支持由开发商独自提供有限的技术支持第一,Linux系统是层次结构且核完全开放的。Linux代码完全开放不同领域和不同层次的用户可以根据自己的应用需要方便地对核进行修改。这样可以低成本地设计和开发出满足自己需要的嵌入式系统。第二,嵌入式Linux移植性好。由于Linux的大部分核代码与微处理器无关。将Linux移植到新的微处理器时。移植工作主要集中在一些存储器管理与中断处理程序上。移植性非常好,并且一旦完成移植,性能非常稳定。第三,Linux的核小、效率高。传统嵌人式操作系统在这方面是笨拙的,占用过多的存,应

35、用程序庞大。Linux有装载和卸载程序的能力所有应用程序以文件的形式被存放在存文件系统中并在必要的时候被装载到存中,这样可以节省存。第四,强大的网络支持功能。Linux诞生于因特网时代并具有unix的特性保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌人式的TcP,IP网络协议栈。第五,Linux具有广泛的硬件支持特性。无论是RIsc还是CIsc、32位还是“位等各种处理器,Linux都能运行,甚至可以在没有存储管理单元(MMu)的处理器上运行。这意味着嵌入式Linux将具有更广泛的应用前景。第六,Linux具备一整套工具链。Linux为开发者提供了一套完整的工

36、具链(toolchain),在Linux下开发者容易自行建立嵌入式系统的开发环境和交叉运行环境可以跨越嵌入式系统开发中仿真工具的障碍。2.3 构建嵌入式Linux由于嵌入式设备的特殊要求嵌入式Linux解决方案中的核、环境、GUI等都与标准bnux有很大不同,其主要原因在于嵌入式系统中资源有限,在设计嵌入式系统时要充分考虑如何在狭小的FIASH、ROM和存中实现高质量的任务实时调度、网络通信等功能。这就需要对标准Linux做出修改。2.3.1 精简核Linux核有自己的结构体系,其中进程管理、存管理和文件系统是其最基本的3个子系统。图2-1简单表示了它的框架。用户进程可直接通过系统调用或函数库

37、来访问核资源。正因为Linux核具有这样的结构,修改核时必须注意各个子系统之间的协调。用户进程函数库系统调用进程管理文件系统内存管理图2-1 Linux核架构构造核常用命令包括:make config,clean,zImage,bzImage,modules,modules_install等。(1)make config 核心配置,命令执行完后产生的.config文件,其总保存着配置信息。(2)make clean清除以前构核所产生的所有目标文件、模块文件、核心以节一些临时文件等,不产生任何文件。(3)make,make zImage,make bzImagemake:构核。若核心代码没有错误

38、,将产生文件vmliflux,这就是所构的核心。Make zImage:在make的基础上产生压缩的核心映像文件。make bzImag:在make的基础上产生压缩比例更大的核心映像文件。(4)make modules编译模块文件,你在make config时所配置的所有模块将在这时编译,形成模块目标文件,并把这些目标文件存放在modules目录中。2.3.2 系统启动嵌入式Linux系统的启动是通过bootloader进行引导的,BootLoader就是在操作系统核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便

39、为最终调用操作系统核准备好正确的环境。同时本设计中bootloader最后还会将Linux核拷贝到0x3000000的地址空间(即SDRAM)去,然后跳到该地址去执行,从而实现了对Linux系统的启动。2.3.3 设备驱动程序设备驱动程序即添加到操作系统中的一小块代码其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,没有驱动程序,计算机中的硬件就无法工作。在嵌入式Linux里,除了直接修改系统核心的源代码把设备驱动程序加进核心里外还可以把驱动程序作为可加载的模块,由系统管理员动态的加载它,使之成为核心的一部分。硬件设备只是一个设备

40、文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是核的一部分,它实现以下功能:对设备初始化和释放。 把数据从核传送到硬件和从硬件读取数据。 读取应用程序传送给设备文件的数据和回送应用程序请求的数据。检测和处理设备出现的错误。 可以把设备驱动作为核的一部分直接编译到核中(即静态编译),也可以单独作为一个模块编译,在需要的时候动态地插入到核中,在不需要的时候可把它从核中删除(即动态)。目前Linux支持的设备驱动可以分为3种:字符设备 (character device)、块设备(block device)、网络接口设备(network device)。当然它们之间也并不是严格

41、地加以区分。字符设备是所有能够像字节流一样被访问的设备(如文件等),在Linux过字符设备驱动程序来实现。在Linux中它们也被映射为文件系统的1个节点,通常在dev目录下。字符设备驱动程序一般要包含open、close、 read、write等几个系统调用。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备。任何网络事务都经过一个网络接口形成,即一个能够和其他主机交换数据的设备。网络接口由核中的网络子系统驱动,负责发送和接收数据包,许多网络连接是面向流的,但网络设备却围

42、绕数据包的传输和接收而设计。网络驱动程序不需要指导各个连接的相关信息,它只是处理数据包即可。本设计中的LCD为字符设备,所以重点理解字符设备的驱动实现。Linux 为所有的字符设备都提供了统一的操作函数接口。具体通过使用数据结构 struct file_operations来实现,该数据结构中包括许多操作函数的指针,如 open (),close(),read(),write()等。由于 file_operations 结构中包含了所有可能对设备操作的函数,如果这些函数全部由驱动开发人员编写实现,其工作量会非常庞大。为了解决这个问题,Linux 设计者采用更高一层的封装方法,为同一类设备定义了

43、文件层次file_operations结构中的接口函数,这些函数对同一类设备来说实现方式一样(如申请缓冲区空间,读取缓冲区数据等操作),只将一小部分硬件设备寄存器相关的操作函数留给驱动开发人员实现。即 Linux 核提供了一个文件操作层到底层设备驱动层的接口。Linux 为LCD 显示设备提供的帧缓冲驱动就是这种分层驱动方式。事实上,Linux 核在fbmem.c (/drivers/video/fbmem.c )文件中实现了几乎所有 file_operations结构中的操作函数,它将 LCD 显示设备抽象成帧缓冲区(framebuffer),帧缓冲区可作为出现在 Linux 核中的一种驱动

44、程序接口,用户可以将它看成是显示存的一个映像。它对应设备目录下的/dev/fb 设备节点。每一个注册进 Linux核的LCD设备对应一个fb节点,如/dev/fb0 ,/dev/fb1等。/dev/fb 是对实际使用的LCD设备节点的符号。在使用帧缓冲区时,Linux 将显卡置于图形模式下。第三章 开发工具为了更好地进行嵌入式产品的开发,产生了很多基于不同嵌入式产品的开发工具,一般采用典型的“主机/宿主机”开发模式。3.1 开发环境本设计采用在xp中的虚拟机中安装ubuntu10.10,在ubuntu下进行全部的开发和环境搭建开发。通过配置好ubuntu与xp的ip后,使两者处于同一个网段中,

45、并保持网络的畅通,然后就可以通过配置samba服务器实现xp能够访问到ubuntu中的共享目录,从而方便讲要不编译的核代码放到ubuntu中,用交叉编译工具进行编译。3.1.1 虚拟机中安装ubuntu10.10一般推荐VMware软件使用6.x与以上版本,因为VMWare Workstation5.x中支持的操作系统比较少,毕竟版本有点老,对一些高版本的操作系统支持也不太好。本设计中使用的VMware版本为VMWare Workstation7。步骤1,启动VMware后,选择新建Virtual Machine(虚拟机)然后点击Next根据提示一步一步往下进行将ubuntu10.10进行导入

46、到虚拟机中,设置操作系统的类型为Linux,同时为要在虚拟机中使用的ubuntu分配一定的磁盘空间。在导入完成后,非常重要的一点是要在虚拟机中设置ubuntu系统使用网络的方法,本设计中使用桥接的方式。点击Network Adapter,网络连接方式改为:Brigted,表示主机xp与ubuntu使用的ip都是独立的,而且在同一个网段:基本配置完成后,就可以安装ubuntu操作系统,点击运行按钮,启动虚拟机进入Ubuntu的安装界面。像平常安装系统一样根据提示进行一步一步往下进行安装。在提示下载安装包更新第三方软件时,由于更新比较费时,为了更快进行安装,这里建议两个复选框都不要选。根据提示进行

47、余下的操作,直到系统安装完成,即完成了在虚拟机中对ubuntu系统的安装。3.1.2 配置网络要使主机xp可以同虚拟机中的ubuntu进行在局域网中的通信,必须要根据主机xp的网络信息对ubuntu进行设置,使xp和ubuntu处于同一个网段,网关一致,使用的DNS服务器一致。查看主机xp的网络信息如下:ip: 192.168.7.249 子网掩码:255.255.2555.0 默认网关:192.168.7.1 DNS服务器:202.96.128.86(可以使用默认网关)然后根据xp的网络信息进行配置ubuntu的网络信息,用vi进行在ubuntu下的网络信息的编辑更改如下: 在/etc/network/interfa

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

当前位置:首页 > 应用文书 > 工作计划

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com