《毕业设计(论文)基于linux的嵌入式lcd驱动设计.pdf》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于linux的嵌入式lcd驱动设计.pdf(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、哈尔滨工程大学毕业设计(论文)题 目 基于Linux的嵌入式LCD驱动设计学 院_通信与电子工程学院_毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指 导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致 谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包 含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说 明并表示了谢意。作者签名:日 期:指导教师签名:日 期:使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的 规定
2、,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学 校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览 服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不 以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日 期:摘要嵌入式设备因其种类多,复杂多样的特点决定嵌入式设备必须研发自己的设备驱动 程序,而设备驱动程序在嵌入式系统中占有很重要的地位。为此,本文深入研究与设计 了基于嵌入式Linux的LCD驱动程序。以ARM9开发板作为目标机,采用VMware虚 拟平台以及Windows和Linux操作系统相结合的软件开发平台,搭建了研究和设计所需 的
3、交叉编译环境。深入研究了内存与I/O访问、并发控制等关键技术。进而采用帧缓冲 技术,研发了 LCD驱动程序,实现了对LCD的显示控制以及与内核的烧写。以显示5 个不同的颜色的应用程序对其测试,结果表明,所设计开发的LCD驱动程序运行稳定 颜色鲜艳饱满,满足用户色彩界面开发的需求,达到设计目标。关键词:嵌入式;Linux;设备驱动;帧缓冲;LCDAbstractAbstractEmbedded devices because of its variety of complex and diverse characteristics of the decision to embedded devi
4、ces must develop their own device drivers,device driver plays an important role in embedded systems.In this paper,in-depth study and design of embedded Linux-based LCD driver.ARM9 development board as the target machine,using a combination of VMware virtualization platform,as well as Windows and Lin
5、ux operating systems software development platform to build a research and design the required cross-compiler environment.In-depth study of the key technologies of memory and I/O access,concurrency control and so on.And then using the frame buffer technology,research and development of the LCD drive
6、r,LCD display control,and kernel programming.To show the application of five different colors of their test results show that the design and development of LCD driver stable full of bright colors,to meet the needs of the user color interface development,and meet the design goals.Keywords:Embedded;Li
7、nux;device driver;frame buffer;the LCD目录摘要.IIAbstract.IV第一章绪论.11.1 概述.11.2 目前的发展现状及前景.11.3 本文主要的研究意义.21.4 本文的研究内容.2第2章 系统设计综述.42.1 操作系统的选择.42.1.1 嵌入式系统的发展过程.42.1.2 嵌入式的特点.42.1.3 嵌入式程序的开发.52.2 系统硬件的选择.52.2.1 LCD 液晶屏.62.2.2 ARM9 处理器.72.2.3 S3C2440 处理器.7第3章 创建嵌入式linux软件开发平台.93.1 Linux 系统.93.2 Linux的发展过
8、程.93.3 Linux系统的优点.103.4 基于ARM的嵌入式Linux交叉开发环境.113.4.1 开发主机linux操作系统的安装.113.4.2 开发主机基本服务及程序的安装、配置与使用.113.4.3 Linux下模块操作命令简介.113.4.4 建立交叉编译环境.123.4.5 Makefile.13第4章 设备驱动程序关键技术介绍.154.1 嵌入式 Linux马区动程序.154.1.1 设备驱动程序的作用.154.2 Linux驱动程序关键技术.154.2.1 内存与I/O端口.15v4.2.2 并发控制.17第5章 LCD驱动分析与实现.195.1 LCD硬件原理.195.
9、1.1 LCD硬件需求与驱动控制分析.195.1.2 S3C2440 CPU 相关的 GPIO 介绍.225.2 帧缓冲 framebuffer.245.2.1 帧缓冲设备驱动结构.245.2.3 Linux帧缓冲的关键数据结构.255.3 LCD的关键数据结构.285.4 LCD驱动程序设计.295.4.1 创建设备.295.4.2 注册设备驱动.305.5 LCD驱动的测试程序.31结论.33参考文献.34附录1.36致谢.64VI第一章绪论1.1 概述现在的嵌入式开发始于微机时代的嵌入式应用的。在1964年电子计算机诞生以后,其接下来的漫长生涯始终是供养住在特殊的机房中,完成数值计算的大
10、型而昂贵远终端 设备。直到20世纪70年代中期,微处理器计算机的出现,计算机才实现了历史性的突破。以微处理器为核心的微型计算机以其小巧,经济,可靠性高特点,步入到社会当中;凌 驾于高速数值解算能力的微型机,体现出的智能化水平引起了控制主业人士的兴趣,要 求将微型机嵌入到一个对象体系中,实现对象体系的智能化控制。例如,将微型计算机 经电器加固,机械加固,并配置各种外围GPIO电路,安装到大型车体中构成自动驾驶 仪或发动机状态系统检测,以此,计算机就丢掉了原有的形态和普及得分计算机能力。为了区别以往的传统计算机体系,把嵌入到目标体系中,以此,我们把嵌入式计算机系 统,称为能够实现对象体系智能化控制
11、的计算机。因此,嵌入式系统步入了微型机时代。嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去,这些是理解嵌入式 系统的基本出发点。随着嵌入式开发和智能设备的不断发展,科学赋予人们的人机交互的能力越来越 强,对其的要求也是越来越高,而显示屏幕的应用无疑让人机交互达到了一个新的发展 层次。由于LCD体积小,重量轻,故而使得其可视化人机交互的过程中成为人们的首 选,也使得其开发成为当今嵌入式开发中比较热门的应用。本设计选择以嵌入式led的开发为题,正是为了更好的研究与应用LCD服务我们的 社会生活,促进嵌入式应用的发展。1.2 目前的发展现状及前景随着信息科技的不断发展,无论是高精尖的军工
12、领域、航空航天领域,还是我们身 边的手机,电话,PDA,数码相机,家用电器,嵌入式系统得到越来越广泛的应用。以 前的嵌入式系统相对比较简单,往往只有一个很小的芯片,程序固化在产品的内部,完 成相对简单的功能,交互性比较低。随着人们对于嵌入式系统的需求越来越多,所需求 的功能也逐渐增多,因此,嵌入式系统也具有了更强的交互性。为了更加便利的对系统 进行个性化的设置,需要用户与系统有相应的交互,那么,就需要将交互过程可视化,因此,越来越多的嵌入式设备就配备了液晶屏,一方面可以提高系统的交互性,另一方 面,也为多媒体技术的应用带来更广阔的空间,无论是MP3,MP4,甚至我们每个人手 上的手机,都是液晶
13、显示屏,同样都有对于多媒体娱乐的需求,为我们提供更加丰富多 彩的生活。linux操作系统有许多优点,最重要的就是它的内部实行细节对所有人都是公开的 以前,操作系统的代码仅仅掌握在少数程序员手里,但是linux使我们只要具备必要的 技术能力,就可以方便的验证、理解、修改、移植操作系统,或者其中的某一部分。驱 动程序在linux内核中起到重要的作用。它能够用规定好的硬件特性来响应限定好的内 部编程接口,我们通过一些工作细节来完成接口设备的隐藏工作。我们用标准化的调用 来执行用户的操作,然后而特定的调用将被独立于特定的驱动程序。然后这些调用将被 映射到作用于实际硬件的特有设备操作上,是驱动程序的主要
14、任务。这些接口可以使驱 动程序独立于内核的其他部分而建立,以模块的形式,在需要时动态的插入到内核中,在不需要时可以移出内核。显示出了其良好的特性。由于液晶显示器的大量需求,以及linux操作系统众多的优点,因此,本题目的设 计选择了以linux作为嵌入式设备的操作系统,对于基于linux的嵌入式LCD驱动,将 会有很好的应用前景。1.3 本文主要的研究意义液晶显示模块满足了嵌入式系统随着日益的提高现在的科技要求它可以显示字符、汉字和图形化同时还需具有低功耗、低压、重量轻、体积小和超薄等优点。随着嵌入式 系统的应用逐渐广泛功能也逐渐强大对系统中的人机交互界面的要求也逐渐提高,在应 用需求的日益驱
15、使下许多基于Linux下的图形化界面软件包的开发和移植程序中都涉及 到了底层LCD驱动的开发问题。因此在嵌入式系统中开发LCD驱动得以广泛运用 随 着高性能嵌入式处理器的全面普及化和硬件成本的大幅度降低,尤其是ARM系列处理器 的引进,嵌入式系统的功能也逐渐强大。目前在多媒体应用的推动下,彩色LCD也逐渐多 地运用到了嵌入式系统中,如新型产品掌上电脑PDA多采取TFT显示器件,彩色图形界面,图片显示和视频媒体播放也得到了相应的支持。彩色LCD的操作系统有微软 WindowCE,PalmOS等。而Linux操作系统做为开源的操作系统也在市场中占据了很重 要的地位。由于Linux成本低廉,任何人都
16、可以得到其源代码并在其基础上进行开发,成 为各家厂商极力发展的操作系统,加I卜.其核心小,潜力可观。1.4 本文的研究内容课题研究的基本内容学习LCD显示启动基本原理了解LINUX下FRAMEBUFFER 2结构原理。了解用总线凡是驱动LCD模块并且编程实现RM内置的LCD控制器来驱动LCDo在LINUX系统中设备驱动是内核的一部分,它主要完成以下内容:1.LCD原理和LCD的驱动方式;2.Linux下设备驱;3.嵌入式系统中实现LCD显示驱动程序;4.Linux中的显示驱动程序结构和框架。自定义显示内容;3第2章系统设计综述2.1 操作系统的选择嵌入式系统大体分为4种分别为:计算机与科学技术
17、、通信与传输技术、半导体与 导体技术、微电子与科学技术、图像语音数据传输技术、传感器等先进技术和具体应用 与现实相结合后的更新产品。嵌入式系统主要以应用为研究中心、以计算机应用技术为研究基础、软硬件可裁剪、适用于应用系统,对功能、可靠性、成本、体积、功耗等5项严格要求的专业型计算机 系统。总体上,嵌入式可以划分为硬件和软件两部分,硬件一般由高性能的处理器和各种 接口电路组成,软件一般由实时操作系统和其他运行的应用软件构成,软件和硬件之间由 中间层(BSP板,板极支持包)连接。2.1.1 嵌入式系统的发展过程嵌入式系统的出现,距今将近有四十年的时间,近年来,随着智能系统,通讯产业,多媒体娱乐,计
18、算机产业的不断发展和日趋融合,嵌入式系统的应用越来越贴近普通人 的生活,嵌入式技术也受到专业开发人员的追捧。由嵌入式技术的出现,发展到当今阶 段,其发展过程大致可分为以下几个阶段:第一阶段是以单芯片为核心的可编程控制器形式的系统,具有监测,伺服,指示设备相 互助的功能。这些系统基本应运用于一些专业性比较强的工业控制系统中,基本没有操作 系统的支持和协助,通过汇编语言对系统进行控制;第二阶段是以嵌入式中央处理器为基础,以基本操作系统为核心的嵌入式系统。主要 特点包括:CPU种类较多,通用性薄弱;系统消耗小,效率显著提高;操作系统达到特定的兼 容性和扩展性;应用软件呈现专业化趋势,用户界面不够完善
19、;第三阶段是以嵌入式操作系统做为标志。主要具有操作系统内核小、效率高等特点,并且模块化和扩展性得到了高度的体现;具备管理文件和目录和多任务和网络支持,图形 窗口以及用户界面替换等功能;提供大量的应用程序接口,具有简单的开发应用程序;嵌 入式应用软件丰富;第四阶段是以Internet为标志的嵌入式系统。这是一个正在迅速发展的阶段.目前许 多嵌入式系统还局限于Internet之外,但随着Internet的逐渐发展以及Internet技术和工业 控制技术结合日益密切,嵌入式系统的未来要逐渐走要与Internet的结合时代。2.1.2 嵌入式的特点4嵌入式系统是继PC时代和网络时代之后,又一兴起的时代
20、新秀。与传统的普通计 算机、数字产品相比,嵌入式系统具有以下特点:专用型强。嵌入式系统通常是面向某个特定的应用方向,因此嵌入式系统的硬件是 为特定的用户群来设计的,它通常具有专用性的特点。嵌入式CPU与通用型的最大不 同,就是嵌入式CPU针对特殊的应用领域,偏重于图像处理、数据处理、科学计算、低 功耗等其中的一项或者几项,相对普通计算机处理器更具有专一性。实时性好。嵌入式系统的软件一般不是存储与磁盘等载体,而是固化在存储器芯片 或单片系统的存储器里,系统体积远远小于普通计算机操作系统,可以快速响应外部事 件,使得嵌入式系统具有非常好的实时性。可裁剪性强。嵌入式系统的软件和硬件都是可裁剪的。以便
21、于开发人员或者用户,根据具体的应用需求,添加需求的部分,剪裁掉不需要的冗余部分,精简系统的规模,这对于嵌入式系统的应用来说,无论是对于其占用的空间,还是在运行速度和实时性上,都是非常有必要的。嵌入式系统是将先进的计算机技术、半导体技术、电子技术与各个行业的具体应用 相结合后的应用产物。这一点决定了它是一个技术密集、资金密集、高度分散、不断创 新的知识集成系统。嵌入式系统的硬件和软件都必须高效率的设计,量体裁衣、去除冗余、力争在同样 的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。嵌入式系统和具体应用有机结合在一起,它的升级换代也适合具体产品同步进行 的,因此嵌入式产
22、品进入市场之后,具有较长的生命周期。嵌入式系统不具有自主开发能力,即使设计完成后用户端通常也不能对其中的程序 功能进行修改,必须有一套自主开发程序和相应的环境才能进行研发。2.1.3 嵌入式程序的开发嵌入式系统的软件开发一般都会按照以下儿个层次来开发。第一层是用户界面函 数,每个嵌入式系统的硬件所提供的用户界面不一样,虽然大多数LCD的屏幕以及触 摸面板的方式,但还是有屏幕尺寸的不同,所以有关界面的设计,需要根据不同的平台 而进行相应的调整。第二层是环境界面函数,因为每个操作系统所提供的系统调用不同,或者硬件参数和编译器不同,造成数值长度不同。在进行平台移植时,可能会出现不同 的运算结果,甚至
23、造成系统的崩溃,这在系统和程序开发时,是需要保持警惕的。2.2 系统硬件的选择图2.2为led驱动的结构框图,S3C2440处理器通过数据线和地址线与显示缓存5SDRAM达到连接、传入像素数据,LCD控制器就会自动通过DMA读取数据送往 TFTLCD显示,下文主要介绍如何选择led的硬件部分。图2.2 LCD驱动结构框图2.2.1 LCD液晶屏随着信息显示技术的发展,液晶显示器已经得到了越来越广泛的应用。利用光电效应 的 LCD 大致可分为以下儿种:TN-LCD、STN-LCD、HTN-LCD、FSTN-LCD、TFT-LCDoTN-LCD就是扭曲向列液晶显示器。在TN型液晶显示器中含有正性向
24、列型液晶。液晶分子的定向就是使玻璃表面平行于圆柱型的液晶分子沿一个固定方向排列,分子长 轴的方向是由定向处理的方向而定的。玻璃上下表面的定向方向是相互垂直的,这样,在垂直于玻璃片表面的方向,呈现出逐渐扭曲液晶分子,从上玻璃片到下玻璃片扭曲了 90,这就是扭曲向列型液晶显示器名称的由来。TN-LCD是人们发现最早,应用最广,数量最多,价格最便宜的显示器。STN-LCD 是 Super Twist Liquid Crystal Display 的简称。即超扭曲向列型 LCD。它 与TN-LCD的结构相似,不同的是它的扭曲角不是90度,而是在180270度之间,虽然仅 仅扭曲角不同,但它的工作原理与
25、TN-LCD完全不同。HTN-LCD 是 High Twist Nematic Liquid Crystal Display 的简称。即高扭曲向列型 液晶显示器。HTN-LCD的扭曲角在100度到120度之间。介于TN-LCD和STN-LCD 之间,其性能也介丁 TN-LCD和STN-LCD之间。FSTN-LCD 是 Film Super Twist Nematic Liquid Crystal Display 的简称,称为补偿膜超 扭曲向列型液晶显示器。通过一层特殊处理的补偿膜,能够克服STN-LCD的缺点。TFT-LCD是Thin Film Transistor的简称,即薄膜晶体管的有源矩
26、阵LCD,它是目前 LCD市场中较高档的产品。TFT-LCD以其分辨率高、响应速度快和色彩丰富等优点正逐渐取代STN-LCD,随 着TFT工艺的成熟,TFT已逐渐成为现在液晶显示领域的主流产品62.2.2 ARM9处理器ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包ARM9TDMI 和ARM9E-S等系列。以应用手机为例,2G手机的功能是提供语音及简单的文字短信,而现在我们使用 的2.5G和未来将要面世的3G手机除了提供这两项功能外,还必须提供各种其他的应用 功能。主要包括:(1)无线网络设备:手机无线上网、电子邮件的收发及其他GPS定位 服务等功能(2)掌上平板电脑功能:包
27、括用户操作系统(Windows CE、Symbian OS、Linux 等)及其他功能;(3)高性能功能:音频播放、可视电话、手机游戏等。在2.5G和3G的 应用中ARM9嵌入式处理器已经完全的替代了 ARM7嵌入式处理器。因为ARM9的全 新特性能够满足各种新需求的同时减少产品研发时间并降低研发费用。新一代的ARM9处理器,呈现给我们的是全新的设计,并且采取了更多的晶体管,能够超越ARM7处理器两倍以上的处理速度。我们通过增加时钟频率和减少指令执行周 期来实现处理速度的提高。1.时钟频率的提高ARM7处理器的流水方式3级流水线,而ARM9的流水方式为5级流水线,时钟 频率和并行处理能力的提高
28、是通过增加流水线而实现的。在5个时钟周期内可以通过5 级流水线将每个指令分配进去,有5个指令在同一时刻被执行。在同样工艺加工下,ARM920T处理器的时钟频率是ARM720T的1.82.2倍。2.指令周期的改进对于处理器性能我们会用改进指令周期的方法来提高。代码执行时指令的重叠决定 了性能提高的幅度,这实际问题体现在程序本身。对于最高级的语言的采用,总体来说,会提高性能的30%左右。2.2.3 S3C2440 处理器S3C2440是一款基于ARM920T内核的32位的执行命令较少的微嵌入式微处理器,主 要面向以及高性价比、低功耗的手持设备应用。可以达到203MHz的运行频率。ARM920T 内
29、核由基于ARM体系结构v4版本的高端ARM核、高速缓存和储存管理三部分组成。其中虚拟内存可以被内存管理单元所管理,由独立的16KB地址和16KB数据高速缓存器 组成了高速存储设备。ARM920T有两个协处理器:CP14和CP15。CP14具有调试控制,CP15具有存储系统控制以及测试捽制。其内结构如图2.2所示7图2.2 S3C2440内核结构图S3c2440在内核结构中是比较复杂的,功能模块的扩展性也比较强,主要有ARM9 独立的16KB数据缓存和16KB指令集,ARM920T内核,虚拟内存管理单元,LCD控 制器,NANDflash内存,3通道UART,4通道DMA,4通道具备PWM功能的
30、定时器,内存管理单元,I/O 口,实时时钟芯片,8通道10比特位精度ADC汇编指令,互联网 信息,数字音频总线接口,USB主机,USB设备,SD/MMC卡控制器,2通道SPI和 PLL数字锁相环组成。其内部结构如图2.3所示:图2.3 S3c2440功能框图8第3章 创建嵌入式linux软件开发平台3.1 Linux 系统Linux是一个类UNIX内核的可自由发布的实现版本,是一个操作系统的底层核心。因为Linux以UNIX为灵感来源,所以Linux程序和UNIX程序非常类似。事实上,几 乎所有为UNIX编写的程序都可以在Linux上运行。而且,一些专用于UNIX商用版的 商用应用程序也可以不
31、加改变的以二进制形式运行在Linux系统上。Linux是由赫尔辛基大学的Linus Torvalds开发的。起见得到了网络上广大的UNIX 程序员的不断帮助,逐渐完善起来的。它最初只是受Andy Tanenbaum教授的Minix启 发而开发的个人爱好的程序,但后来它逐渐发展成为一个拥有自己版权的完整操作系 统。其目的是,保证Linux除包含自由发布的代码外,不会集成任何私有代码。在linux的特性中灵活性和高效性得到了充分的体现。它可以集成unix的全部特性 在计算机上。具有多功能例如:多任务、多用户并发。在GNU操作系统下的GPL协议 公共许可权限下我们可以免费获得Linux,linux是
32、一个符合POSIX标准的操作系统。Linux操作系统不仅被Linux操作系统软件包所包括,而且文本编辑器、高级语言编译 器等应用软件也包含在内。它还包括带有多个窗口管理器的Windows图形用户界面,如果我们使用Windows NT一样,允许我们使用窗口、图标、菜单对系统进行操作。现在,linux几乎可以运行在所有类型的CPU的计算机上,包括基于intel x86系列 机及其各种兼容型个人计算机,使用SPARC、POWERPC.Itanium的工作站和服务器,还有一些手持设备,PDA,游戏机,手机,嵌入式产品等,都会有Linux的身影出现。由 于Linux的开源性免费性,使得很多厂家将注意力都
33、转移到它的上面,以便于降低产品 成本,增强产品市场竞争力。同时,也推进了 linux在操作系统领域的推广与普及。3.2 Linux的发展过程1990 Linus Torvalds 首次接触 MINIX;1991 Linus Torvalds开始在MINIX上编写各种驱动程序等操作系统内核组件;1991 底,Linus Torvalds 公开了 Linux 内核;1993 Linux 1.0版发行,Linux转向GPL版权协议;1994 Linux的第一个商业发行版Slackware问世;1996美国国家标准技术局的计算机系统实验室确认Linux版本1213(由Open9Linux公司打包)符合
34、POSIX标准;1999 Linux的简体中文发行版相继问世。3.3 Linux系统的优点(1)良好的界面字符界面和图形界面同时被Linux采用着。用户可以通过键盘在字符界面输入相应 的指令来进行操作。它同时也提供了类似Windows图形界面的系统,用户可以使用鼠 标对其进行操作。在Windows环境中就和在Windows中相似,可以说是一个Linux版 的 Windows o(2)多任务、多用户Linux采用多用户切换状态,各个用户之间有着自己特殊的管理权力对自己的文件 设备,用户之间互不影响得到了充分的保护。现在电脑中多任务是最主要的要求之一,在相应的操作系统上linux允许多个程序同时并
35、独立的运行。(3)开源免费Linux是一款开源的完全免费的操作系统,用户可以通过网络下载申请等途径免费 获得,并可以根据需求自己可以修改其源代码。这是其他的操作系统所不能被允许的。正是这一特性,全世界无数程序员参与了 Linux编写工作,源代码的修改,根据自己兴 趣和灵感程序员可以对其进行相应的修改。无数程序员的精华在linux操作系统中得到 了充分的施展。POSIX 1.0标准被Linux完全的兼容,这使得可以运行常见的DOS、windows在Linux 下通过相应的模拟器。这为用户从Windows到Linux成功转型奠定了基础。许多用户在 考虑使用Linux时,就想到以前常见的应用程序在W
36、indows下是否能正常运行,他们的 疑虑在这一点被成功的消除了。(4)可靠的安全、稳定性能Linux采用了许多安全技术的相应措施,其中对读、写操作设置了相应控制、审计 跟踪、核心技术授权等,这些都为安全提供了保障。由于Linux操作系统需要应用到网 络服务器,这就要求稳定性也要比较高,实际上Linux在网络服务器方面做的也比较成 功。(5)丰富的网络功能互联网是在Unix操作系统的基础上繁荣起来的,所以Linux的网络功能也发展的 比较成功。它的网络功能与内核设备紧密相连在一起,在这方面Linux操作系统要优于 其他操作系统。在Linux中,用户可以无限制的实现网络连接、文件设备传输、远程控
37、 制登陆等网络工作。并且可以作为服务器端提供WWW、FTP、E-Mail等服务。10(6)支持多种平台Linux是完全开源免费的所以可以运行在多种硬件平台上,如具有x86、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在PDA、电视 机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全运行在Intel 64 位芯片架构。同时Linux也支持多处理器技术。多个处理器并发,使系统性能大幅度提 另I。3.4 基于ARM的嵌入式Linux交叉开发环境由于嵌入式系统是应用在计算机系统上的专业系统,它的功能、使用方法和使用环 境都与普通的PC机
38、大不相同。有的嵌入式系统的处理能力和存储能力比较薄弱,不能 在上面安装相应开发软件;有的嵌入式系统的处理器结构特殊,没有可以在上面运行的 开发工具。所以,在在进行嵌入式系统开发时,通常需要交叉编译的方式进行开发。3.4.1 开发主机linux操作系统的安装在一台PC上安装RedHatLinux5,选择惯例定制安装,在软件包的选取时最好安装 所有的包,需要约2.7G的可用空间,然后选择末尾项:(所有文件),即完成了谁有包 的安装,安装3张光盘里的所有软件,需要大约5G的磁盘空间。因此为了空间充足要 提前为RedHat Linux的安装大约要预留5到15G的空间,具体要看用户的硬盘空间大 小来确定
39、。3.4.2 开发主机基本服务及程序的安装、配置与使用在Redhat被安装后需要安装Linux的编译器部分和ARMLinux的所需源代码,这 些包安装后的总共需要空间大约为800M。配置NFS服务器,Samba服务器,以便以后 用于开发板与主机之间的数据传输与Windows下的程序设计不同,在Linux操作系统中 现成的软件开发集成环境是不被提供的,这就需要程序员自己创建软件开发环境,来完 成程序的编译、连接到最后可执行代码中运行山。3.4.3 Linux下模块操作命令简介Linux下对模块的操作有特殊的命令(在命令行形式下使用),下面对相关的命令做 简单的介绍。模块加载命令:对于编译好的.k
40、o文件必须挂载到内核上,才能真正发挥作用,Linux 下安装模块文件有两个命令:insmod:它将模块文件的代码和数据装载到内核中,然后使用内核的符号表解析模块中 任何未解析的符号。与编译器不同,内核不会修改模块的磁盘文件,而仅仅修改内存中 11的副本。使用方式如,insmoddemo.ko。modprobe与insmod功能类似,不过它的功能更强大一些,它会验证当前内核没有 的符号是否被装载模块引用了。如果有,它会自动查找定义了这些符号的模块当前模块 搜索路径中。如果这些模块被找到了,它会同时自动的将这些模块装载到内核。如果在 当前情况下使用了 insmod模块,则该命令会显示失败。模块信息
41、查询命令:Ismod用于 查询目前内核中已装载的所有模块信息,其中还有其它模块是不是在使用某个特定的模 块。Lsmod通过读取/proc/modules虚拟文件来获得这些信息。有过当前已装载模块的信 息也可以在sysfs虚拟文件系统的/sys/module下找到。移除模块命令:rmmod用于移除指定的模块,如果内核正在使用某个模块,则移除 会失败。例如,rmmod demo.ko。3.4.4 建立交叉编译环境一种编译程序在计算机环境中运行,在另外一种环境下能编译出运行的代码,那我 们就称这种编译器支持交叉编译。这个过程就称作交叉编译。言简意赅地说,就是一个 平台上的可执行代码被另一个平台所派生
42、。这里所谓平台应该被注意了,实际上包含两 个重要的概念:体系结构和操作系统。在同一各个体系结构中运行着不同的操作系统;同样,在不同操作系统中也运行不 同的体系结构。例如,我们常说的Linux x86操作平台实际上是Intel处理器x86微处理 器体系结构和Linux与x86微处理器操作系统的总称;而x86WinNT平台实际上是Intel x86微处理器体系结构和Windows NT for x86微处理器操作系统的简称。因为在我们所 需要的编译器不允许在目的平台上进行安装,而这个编译器的某些特征正是我们又需要 的;或者是因为目标平台上的资源缺失,我们无法运行所需要编译器;或者又是因为目 标平台
43、还没有完善,操作系统不够完善,成功运行编译器的考虑基本为零。在嵌入式系 统的广泛发展同时,交叉编译的概念也同时得到了广泛的发展和体现。我们通常使用的 计算机软件,都是需要通过编译的方式而实现的,计算机只能识别和运行二进制代码,所以我们用高级计算机语言编写的代码(比如C代码)编译成计算机可以识别和执行的 二进制代码。例如,我们在Windows系统平台上,可使用Visual C+开发环境,编译成 可执行程序。在开发嵌入式系统时,执行程序的目标平台通常的存储空间和运算能力是有限的,比如常见的ARM开发平台,一般的静态存储空间大约在16MB到32MB之间,而处理 器的主频大概在100MHz到500MH
44、z之间。我们的储存空间是有限的,这种情况下,为 了解决这一难题,我们就要用到交叉编译工具了。通过使用交叉编译工具,我们就可以 在处理速度很强、存储空间充足的开发平台上(比如PC上)编译出针对其他平台的可 12执行的程序。想要使用交叉编译,我们需要在开发平台上安装对应的交叉编译工具链,然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。而本文需要搭建的是Linux系统下的交叉编译工具链,具体步骤如下:1.下载 arm-linux-gcc-4.3.3.tar.bz2 到临时的目录下,我放在了/home/chenbolin/temp/下,chenbolin是我的用户名。arm
45、-linux-gcc-4.3.3.tar.bz2 的下载地址如下:http:/www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz22.解压 arm-linux-gcc-3.4.1.tar.bz2#tar-jxvf arm-linux-gcc-3.4.1.tar.bz2解压过程需要一段时间,文件生成了 Jtemp/usr/local/文件夹,进入此文件夹,将arm文 件夹复制到/usr/local/卜3.环境变量的修改,把交叉编译器的路径加入到可执行文件的路径。方法一:修改/etc/bash上ashrc
46、 文件#vim/etc/bash上ashrc在末尾加上:export Path=$Path:/usr/local/arm/3.4.4/bin方法二:修改/etc/profile 文件:#vim/etc/profile增加设置路径,在最后添加如下,保存/etc/profile文件:export PATH=$PATH:/usr/local/arm/3.4.1/bin4.立即生效新的配置变量,不需要重新启懂电脑:与方法一对应:#source/root/.bashrc与方法二对应:#source/etc/profile5.检测成功将路径加入到可执行文件路径:#echo$Path显示的内容中有/usr/
47、local/arm/bin,说明已经加入了交叉编译器的路径了。至此,交叉编译环境安装完成。3.4.5 Makefile内核在2.4版本以前支持GCC直接编译C源文件成.k。(模块)文件,从2.6内核开始,必须用Makefile文件把C源文件编译成模块文件。在Linux环境下掌控make工具的使用连同编写Makefile是必需的,不论您是是编写 式还是学习系统内核和查看软件的源代码。make用于解释makefile中指令的命令,make手册见GNU Make中文书册。Makefile 的规则:让我们先来粗略地看一看Makefile的规则。target.:mand13目标:依赖执行指令target
48、也就是一个目的文件,可以是Object File,也可以是可.bin文件。还可以是 一个 Label。prerequisites就是,要派生出那个target所需要的目标或是文件。command也就是make需要.bin文件命令。这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于 prerequisites中的文件,其生成规则定义在command中。14第4章设备驱动程序关键技术介绍4.1 嵌入式Linux驱动程序4.1.1 设备驱动程序的作用设备驱动程序是应用程序和实际设备之间的一个枢纽,它向下负责和硬件设备的衔 接,向下通过一个通用的接口挂载到文件系统上,从而使用户
49、或应用程序可以控制普通 文件的读写方式进行访问或控制硬件设备。作为Linux内核的重要的组成部分,设备驱 动程序主要完成以下几种的功能:L对设备初始化和释放资源。2.把数据从内核态送到固件和从固件中读取数据。3.检查和处理设备出现的错误。4.应用程序和设备文件之间进行数据交互。4.1.2 Linux设各驱动程序分类1.字符设备字符设备是能够被连续访问的设备,字符设备驱动程序通常实现打开,关闭,读和写 等系统调用函数,系统控制平台和IO 口就是字符设备的例子。访问字符设备的方式可 以通过文件系统的结点来实现。普通文件系统与字符设备之间的区别是普通文件可以来 回读写,而字符设备驱动只能顺序读写。还
50、有,字符设备驱动程序不用缓冲,它直接与 用户进程进行传输。2块设备所谓块设备是指以块为单位对其信息进行存取。块设备也可以通过文件系统结点来 访问。在大多数Linux系统的块设备里,只能将多个块看做一个整体进行访问。Linux 允许连续访问块设备,即允许Linux随机数目的字节的形式访问块设备。字符设备和块 设备的差别在于内核部分的管理上,其中每个I/O 口都会非间接的传递给系统内核对应 的驱动程序在齐应用程序对字符设备进行操作时,而要通过系统的管理缓冲区间接地传 递给驱动程序进行处理时应用程序将对块设备进行操作山。4.2 Linux驱动程序关键技术4.2.1 内存与I/O端口151.内存运行标