




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号: 毕业设计说明书 题 目 基于ARM+Linux的LCD驱动设计英文并列题目 LCD driver design on ARM + Linux广东石油化工学院本科毕业设计(论文)诚信承诺保证书本人郑重承诺:基于ARM+Linux的LCD驱动设计毕业设计(论文)的内容真实、可靠,是本人在 指导教师的指导下,独立进行研究所完成。毕业设计(论文)中引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处,如果存在弄虚作假、抄袭、剽窃的情况,本人愿承担全部责任。矚慫润厲钐瘗睞枥庑赖。 学生签名: 年 月 日系主任批准日期 毕 业 设 计(论 文)任 务 书计算机科学与技术 系 计算机科学与技术 专业 计算机 班 学生 一、毕业设计(论文)课题 基于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引脚;其次要对LCD液晶显示器进行分析,参考该LCD的手册进行时序的分析,并进行相应的硬件编程;最后也是最为重要的就是要了解在Linux内核中LCD驱动是如何实现的,当然可以参考内核中其他类型LCD的实现,对在Linux内核中是如何进行LCD驱动实现的层次化结构必须要了解清楚。在图片解码中,对于要显示到LCD液晶显示器上的图片,首先必须对图片进行解码分析,然后得到图片的像素值,将这些像素值存储到LCD的缓存中,然后LCD控制器就会将这些像素值打印到LCD液晶显示器上,从而实现了对图片的显示,其中对于图片解码,用到了图片的解码库。在LCD应用程序实现上,在LCD驱动程序实现了并创建了设备节点时,在应用程序中就可以直接open该设备节点,得到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输入引脚,如何根据LCD手册进行ARM LCD寄存器的设置,设置好LCD的时序。步骤三是在上面两个步骤都实现了之后,就可以向内核注册LCD驱动,同时向Linux内核上层提交设置的fb_info结构体对象。这样就实现了对LCD驱动的设计。在图片解码实现中,本设计只实现对JPG格式图片的显示,对于输入的JPG格式的图片,由于对于JPG格式的图片的数据格式排列不了解,所以首先将通过图片库将该格式的图片转换成PMB格式的图片,而对于PMB格式的图片可以直接知道数据格式的排列信息,首先开始的56个字节为信息头和数据头,然后接下来的才是位图信息,所以就可以直接读取位图信息进行显示到LCD上,实现对LCD图片的动态显示。在LCD应用程序实现上,关键的是要获得LCD驱动层申请的buffer空间,然后通过mmap进行映射到用户空间进行直接的操作,通过往该buffer中写入位图数据后,LCD控制器就会根据时序的设置将该位图打印到LCD液晶显示器上。残骛楼諍锩瀨濟溆塹籟。 2、基于ARM+Linux的LCD驱动设计实现在ARM的硬件平台和Linux软件平台上显示图片,使得我对LCD实现的过程的硬件部分、图片解码和LCD应用程序的实现都有了深刻的理解,也进一步加深了对Linux下驱动实现原理的理解,对图片的解码有了更深一步的认识,同时也对于Linux用户层的应用程序如何调用到驱动层的实现有了深刻的理解。通过本次的设计,对于在LCD上如何进行视频的播放和其他用户空间界面的操作都有了一定的理解,对于以后进行相应的实现起到了最为关键的作用。酽锕极額閉镇桧猪訣锥。教研室负责人 指导教师 接受设计论文任务开始执行日期 年 月 日学生签名 摘要摘 要 近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式提出了新的挑战。彈贸摄尔霁毙攬砖卤庑。在本设计中硬件平台采用ARM9些列,属于中高端性能的芯片。ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。而这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。同时采用型号为WXCAT35-TG3的LCD液晶显示器,该液晶显示器的尺寸为3.5寸,分辨率为320240,可以实现触摸屏的相应时间小于10ms。謀荞抟箧飆鐸怼类蒋薔。软件平台采用Linux内核,版本为。Linux系统在嵌入式领域应用越来越广,与其自身的模块化程度高、源码公开、广泛的硬件支持、安全性及可靠性好、具有优秀的开发工具、有很好的网络支持利文件系统支持和与UNIX完全兼容的自身特性是分不开的,所以本设计中采用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 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 embedded.鹅娅尽損鹌惨歷茏鴛賴。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 processing 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 kernel version . 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 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 achieve.渗釤呛俨匀谔鱉调硯錦。Keywords: Embedded ARM9 series LCD Linux kernel Dynamic display铙誅卧泻噦圣骋贶頂廡。 key technologiesI目录目 录摘 要I擁締凤袜备訊顎轮烂蔷。AbstractII贓熱俣阃歲匱阊邺镓騷。引 言- 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.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驱动实现- 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 -鳃躋峽祷紉诵帮废掃減。 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 -趕輾雏纨颗锊讨跃满賺。第六章 程序运行测试- 62 -夹覡闾辁駁档驀迁锬減。6.1 启动uboot- 62 -视絀镘鸸鲚鐘脑钧欖粝。6.2 装载内核与文件系统- 63 -偽澀锟攢鴛擋緬铹鈞錠。6.3 运行应用程序- 63 -緦徑铫膾龋轿级镗挢廟。结论- 65 -騅憑钶銘侥张礫阵轸蔼。致谢- 66 -疠骐錾农剎貯狱颢幗騮。参考文献- 67 -镞锊过润启婭澗骆讕瀘。引言引 言嵌入式技术是将计算机作为一个信息处理部件,嵌入到应用系统中的一种技术,也就是说,它将软件固化集成到硬件系统中,将硬件系统与软件系统一体化。嵌入式具有软件代码小、高度自动化和响应速度快等特点,因而进入21世纪后其应用越来越广泛,例如,各种家用电器如电冰箱、自动洗衣机、数字点电视机、数码相机等广泛应用这种技术。榿贰轲誊壟该槛鲻垲赛。随着计算机技术的飞速发展,尤其是嵌入式系统的发展,嵌入式Linux系统和液晶显示器优点就越显突出。正是由于嵌入式Linux 系统具有低成本、多种硬件平台支持、优异的性能和良好的网络支持的优点,而且液晶显示器作为输出设备具有体积小,耗电省的优点,让它们在各类仪器设备的控制过程中占据着越来越重要的角色。 本设计通过利用基于Linux的ARM9系统开发平台和嵌入式系统开发常用的“宿主机/目标机”开发模式,使用嵌入式Linux系统下的各类编辑编译程序的工具,改写Linux内核驱动程序,通过编译内核,更新内核程序,利用帧缓冲的方式,实现了液晶显示器的驱动,同时实现在LCD液晶显示屏上动态显示多张图片。邁茑赚陉宾呗擷鹪讼凑。此设计是为了在ARM9硬件平台上,通过Linux系统实现LCD液晶显示器的驱动,并通过LCD应用程序实现图片在该LCD液晶显示器上进行动态显示。该LCD驱动只是在Linux-内核的基础上实现,对于不同版本的内核,可能需要进行相应的修改变动;同时设置的LCD的时序要根据不同的LCD显示器说明书进行设置。嵝硖贪塒廩袞悯倉華糲。对于在Linux内核中实现LCD液晶显示器的驱动,内核中本身有相应的实现,可以进行参考实现,但是本项目实现中,不采用内核中的定义实现方法,而是采用独立对相关变量进行定义和赋值,最终向Linux内核的上层进行提交fb_info结构体实现对LCD硬件的向上层注册。而对于LCD应用程序的实现将会是本项目的一个难点,在应用程序上通过向LCD驱动设置buffer数据区获得映射后,可以直接往该LCD的buffer里面直接写要显示的位图的值,然后LCD控制器会自动将该buffer中的位图数值进行显示到LCD液晶显示器中。而对于要写入的buffer的位图信息,必须要对图片进行解码,从而获得要现实的图片的位图数值,从而进行写入。该栎谖碼戆沖巋鳧薩锭。该LCD驱动模块以“-y”的编译选项编译到Linux内核中,从而可以实现在Linux内核启动的过程中,可以从LCD上打印出相应的启动信息,并在内核启动后显示登陆窗口。该项目的实现是在ubuntu 10.10环境下进行实现的,通过交叉编译工具链arm-linux-gcc进行编译内核、LCD应用程序,通过网络的形式将Linux内核烧入到norflash中,然后在内核启动后通过网络进行挂载文件系统。劇妆诨貰攖苹埘呂仑庙。- 1 -第一章 ARM9 s3c2410简介第一章 ARM9 s3c2410简介在嵌入式领域中,为了开发更为高效的嵌入式设备,ARM由于其自身的高效特性成为很多开发者的首选,即使相对于MIPS架构的CPU来说,它的价格更高,但它带来的收益也会更多。臠龍讹驄桠业變墊罗蘄。1.1 ARM技术ARM体系结构是业界领先的微处理器体系结构,为系统和软件工程师提供了开发低能耗、高性能消费类和工业产品的硅验证解决方案。这些终端产品涵盖了从汽车和工业监视器到家庭娱乐和移动设备的各个领域。 鰻順褛悦漚縫冁屜鸭骞。ARM 完整产品线包括微控制器、微处理器、图形处理器、实现软件、单元库、嵌入式内存、高速连接产品、外设以及开发工具。借助于完善的设计服务、培训、支持和维护以及公司的庞大合作伙伴社区,我们提供了一个全面的系统解决方案,为主要电子设备公司提供一条快速可靠的途径将产品推向市场。穑釓虚绺滟鳗絲懷紓泺。ARM 是 32 位嵌入式微处理器的行业领先提供商,已推出各种各样基于通用体系结构的处理器,这些处理器具有高性能和行业领先的功效,而且系统成本也有所降低。隶誆荧鉴獫纲鴣攣駘賽。1.2 s3c2410处理器介绍S3C2410微处理器是一款由Samsung公司为手持设备设计的低功耗、高度集成的基于ARM920T核的微处理器。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:16KB指令Cache、16KB数据Cache、MMU、外部存储器控制器、LCD控制器(STN和TFT)、NAND Flash控制器、4个DMA通道、3个UART通道、1个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、AHB、APB 总线特点惬執缉蘿绅颀阳灣熗鍵。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。贞廈给鏌綞牵鎮獵鎦龐。AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位128位总线宽度;支持字节、半字节和字的传输。嚌鲭级厨胀鑲铟礦毁蕲。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 S3C2410处理器体系结构绅薮疮颧訝标販繯轅赛。支持大端(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处理器时钟和电源管理烴毙潜籬賢擔視蠶贲粵。(1)时钟S3C2410的主时钟由外部晶振或者外部时钟提供,选择后可以产生3种时钟信号,分别是CPU使用的FCLK、AHB总线使用的HCLK和APB总线使用的FCKL。时钟管理模块同时拥有两个锁相环,一个称为MPLL,拥于FCLK、HCLK和PCLK;另一个称为UPLL,用于USB设备。鋝岂涛軌跃轮莳講嫗键。图1-2 S3C2410的存储空间映射(2)时钟控制逻辑时钟控制逻辑决定了所使用的时钟源,是采用MPLL作为FCLK,还是采用外部时钟。复位后,即使不想改变默认的PLLCON值,也需要重新写一遍。FCLK由撷伪氢鱧轍幂聹諛詼庞。ARM920T核使用,HCLK提供给AHB总线,PCLK提供给了APB总线。S3C2410支持HCLK、FCLK和PCLK的分频选择,其比率是通过CLKDIV寄存器中的HDIVN和PDIVN控制的.踪飯梦掺钓貞绫賁发蘄。(3)电源管理S3C2410电源管理模块通过4种模式有效地控制功耗,即正常(Normal)模式、省电(Slow)模式、空闲(Idle)模式和断电(Power-off)模式。婭鑠机职銦夾簣軒蚀骞。Normal模式:为CPU和所有的外设提供时钟,所有的外设开启,该模式下的功耗最大。这种模式允许用户通过软件控制外设,可以断开提供给外设的时钟以降低功耗。譽諶掺铒锭试监鄺儕泻。Slow模式:采用外部时钟生产FCLK的方式,此时电源的功耗取决于外部时钟。Idle模式:断开FCLK与CPU核的连接,外设保持正常,该模式下的任何中断都可唤醒CPU。Power-off模式:断开内部电源,只给内部的唤醒逻辑供电。一般模式下需要两个电源,一个提供给唤醒逻辑,另外一个提供给CPU和内部逻辑,在Power-off模式下,后一个电源关闭。俦聹执償閏号燴鈿膽賾。- 5 -第二章 嵌入式Linux简介第二章 嵌入式Linux简介随着计算机技术、通信技术的飞速发展,特别是互联网的迅速普及和3C(Computer、Communication、Consume)合一的加速,微型化和专业化成为信息产品发展的新趋势,嵌入式产品成为信息产业的主流。目前,市场上有很多商业性嵌入式系统都在努力的为自己争取着嵌入式市场的份额,Linux以其内核可裁剪、移植性好、源代码开放等优点受到越来越多的企业和研发机构的关注。当今信息化的高速发展,使Linux成为当前最流行的嵌入式操作系统之一,这为Linux的发展注入了强大生命力。缜電怅淺靓蠐浅錒鵬凜。2.1嵌入式Linux系统概述Linux最初是一个遵循POSIX标准的由一名芬兰学生编写源代码完全开放的免费操作系统。经过短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争在新兴的嵌入式操作系统领域内也获得了飞速发展。目前正在开发的嵌入式系统中,49的项目选择Linux作为嵌入式操作系统。骥擯帜褸饜兗椏長绛粤。嵌入式Linux是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。主流嵌入式Linux产品有:美国墨西哥理工学院开发的嵌入式Linux操作系统RT一Linux;Lineo公司的主打产品uClinux;北京中科院红旗软件公司推出的红旗嵌入式Linux等。癱噴导閽骋艳捣靨骢鍵。2.2嵌入式Linux系统的优势嵌入式操作系统作为嵌入式系统的核心部分,与桌面系统由很大不同受到嵌入式系统资源有限的影响,它要求代码小,速度快,可靠性高移植性好。与其它专用嵌入式操作系统相比(如下表1所示),Linux具有很多优点。鑣鸽夺圆鯢齙慫餞離龐。 表1 嵌入式Linux与专用嵌入式实时操作系统比较比较嵌入式Linux操作系统专用嵌入式实时操作系统购买费用免费数十万版权费免费一份产品交一份版权费稳定性较好,但高性能系统中需改进较好实时性需改进好网络特性免费且性能优越另加数十万购买移植性容易难动态扩展性较好差技术支持全世界自由软件开发者提供支持由开发商独自提供有限的技术支持第一,Linux系统是层次结构且内核完全开放的。Linux代码完全开放不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行修改。这样可以低成本地设计和开发出满足自己需要的嵌入式系统。榄阈团皱鹏緦寿驏頦蕴。第二,嵌入式Linux移植性好。由于Linux的大部分内核代码与微处理器无关。将Linux移植到新的微处理器时。移植工作主要集中在一些存储器管理及中断处理程序上。移植性非常好,并且一旦完成移植,性能非常稳定。逊输吴贝义鲽國鳩犹騸。第三,Linux的内核小、效率高。传统嵌人式操作系统在这方面是笨拙的,占用过多的内存,应用程序庞大。Linux有装载和卸载程序的能力所有应用程序以文件的形式被存放在内存文件系统中并在必要的时候被装载到内存中,这样可以节省内存。幘觇匮骇儺红卤齡镰瀉。第四,强大的网络支持功能。Linux诞生于因特网时代并具有unix的特性保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌人式的TcP,IP网络协议栈。誦终决懷区馱倆侧澩赜。第五,Linux具有广泛的硬件支持特性。无论是RIsc还是CIsc、32位还是“位等各种处理器,Linux都能运行,甚至可以在没有存储管理单元(MMu)的处理器上运行。这意味着嵌入式Linux将具有更广泛的应用前景。医涤侣綃噲睞齒办銩凛。第六,Linux具备一整套工具链。Linux为开发者提供了一套完整的工具链(toolchain),在Linux下开发者容易自行建立嵌入式系统的开发环境和交叉运行环境可以跨越嵌入式系统开发中仿真工具的障碍。舻当为遙头韪鳍哕晕糞。2.3 构建嵌入式Linux由于嵌入式设备的特殊要求嵌入式Linux解决方案中的内核、环境、GUI等都与标准bnux有很大不同,其主要原因在于嵌入式系统中资源有限,在设计嵌入式系统时要充分考虑如何在狭小的FIASH、ROM和内存中实现高质量的任务实时调度、网络通信等功能。这就需要对标准Linux做出修改。鸪凑鸛齏嶇烛罵奖选锯。2.3.1 精简内核Linux内核有自己的结构体系,其中进程管理、内存管理和文件系统是其最基本的3个子系统。图2-1简单表示了它的框架。用户进程可直接通过系统调用或函数库来访问内核资源。正因为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:构核。若核心代码没有错误,将产生文件vmliflux,这就是所构的核心。Make zImage:在make的基础上产生压缩的核心映像文件。make bzImag:在make的基础上产生压缩比例更大的核心映像文件。钿蘇饌華檻杩鐵样说泻。(4)make modules编译模块文件,你在make config时所配置的所有模块将在这时编译,形成模块目标文件,并把这些目标文件存放在modules目录中。戧礱風熗浇鄖适泞嚀贗。2.3.2 系统启动嵌入式Linux系统的启动是通过bootloader进行引导的,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。同时本设计中bootloader最后还会将Linux内核拷贝到0x3000000的地址空间(即SDRAM)去,然后跳到该地址去执行,从而实现了对Linux系统的启动。購櫛頁詩燦戶踐澜襯鳳。2.3.3 设备驱动程序设备驱动程序即添加到操作系统中的一小块代码其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,没有驱动程序,计算机中的硬件就无法工作。在嵌入式Linux里,除了直接修改系统核心的源代码把设备驱动程序加进核心里外还可以把驱动程序作为可加载的模块,由系统管理员动态的加载它,使之成为核心的一部分。嗫奐闃頜瑷踯谫瓒兽粪。硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它实现以下功能:虚龉鐮宠確嵝誄祷舻鋸。对设备初始化和释放。 把数据从内核传送到硬件和从硬件读取数据。 读取应用程序传送给设备文件的数据和回送应用程序请求的数据。检测和处理设备出现的错误。 可以把设备驱动作为内核的一部分直接编译到内核中(即静态编译),也可以单独作为一个模块编译,在需要的时候动态地插入到内核中,在不需要的时候可把它从内核中删除(即动态链接)。與顶鍔笋类謾蝾纪黾廢。目前Linux支持的设备驱动可以分为3种:字符设备 (character device)、块设备(block device)、网络接口设备(network device)。当然它们之间也并不是严格地加以区分。字符设备是所有能够像字节流一样被访问的设备(如文件等),在Linux中通过字符设备驱动程序来实现。在Linux中它们也被映射为文件系统的1个节点,通常在dev目录下。字符设备驱动程序一般要包含open、close、 read、write等几个系统调用。結释鏈跄絞塒繭绽綹蕴。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备。餑诎鉈鲻缥评缯肃鮮驃。任何网络事务都经过一个网络接口形成,即一个能够和其他主机交换数据的设备。网络接口由内核中的网络子系统驱动,负责发送和接收数据包,许多网络连接是面向流的,但网络设备却围绕数据包的传输和接收而设计。网络驱动程序不需要指导各个连接的相关信息,它只是处理数据包即可。爷缆鉅摯騰厕綁荩笺潑。本设计中的LCD为字符设备,所以重点理解字符设备的驱动实现。Linux 为所有的字符设备都提供了统一的操作函数接口。具体通过使用数据结构 struct file_operations来实现,该数据结构中包括许多操作函数的指针,如 open (),close(),read(),write()等。由于 file_operations 结构中包含了所有可能对设备操作的函数,如果这些函数全部由驱动开发人员编写实现,其工作量会非常庞大。为了解决这个问题,Linux 设计者采用更高一层的封装方法,为同一类设备定义了文件层次file_operations结构中的接口函数,这些函数对同一类设备来说实现方式相同(如申请缓冲区空间,读取缓冲区数据等操作),只将一小部分硬件设备寄存器相关的操作函数留给驱动开发人员实现。即 Linux 内核提供了一个文件操作层到底层设备驱动层的接口。锞炽邐繒萨蝦窦补飙赝。Linux 为LCD 显示设备提供的帧缓冲驱动就是这种分层驱动方式。事实上,Linux 内核在fbmem.c (/drivers/video/fbmem.c )文件中实现了几乎所有 file_operations结构中的操作函数,它将 LCD 显示设备抽象成帧缓冲区(framebuffer),帧缓冲区可作为出现在 Linux 内核中的一种驱动程序接口,用户可以将它看成是显示内存的一个映像。它对应设备目录下的/dev/fb 设备节点。每一个注册进 Linux内核的LCD设备对应一个fb节点,如/dev/fb0 ,/dev/fb1等。/dev/fb 是对实际使用的LCD设备节点的符号链接。在使用帧缓冲区时,Linux 将显卡置于图形模式下。曠戗輔鑽襉倆瘋诌琿凤。- 11 -第三章 开发工具第三章 开发工具为了更好地进行嵌入式产品的开发,产生了很多基于不同嵌入式产品的开发工具,一般采用典型的“主机/宿主机”开发模式。轉厍蹺佥诎脚濒谘閥糞。3.1 开发环境本设计采用在xp中的虚拟机中安装ubuntu10.10,在ubuntu下进行全部的开发和环境搭建开发。通过配置好ubuntu与xp的ip后,使两者处于同一个网段中,并保持网络的畅通,然后就可以通过配置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进行导入到虚拟机中,设置操作系统的类型为Linux,同时为要在虚拟机中使用的ubuntu分配一定的磁盘空间。兒躉讀闶軒鲧擬钇標藪。在导入完成后,非常重要的一点是要在虚拟机中设置ubuntu系统使用网络的方法,本设计中使用桥接的方式。点击Network Adapter,网络连接方式改为:Brigted,表示主机xp与ubuntu使用的ip都是独立的,而且在同一个网段:繅藺詞嗇适篮异铜鑑骠。基本配置完成后,就可以安装ubuntu操作系统,点击运行按钮,启动虚拟机进入Ubuntu的安装界面。像平常安装系统一样根据提示进行一步一步往下进行安装。在提示下载安装包更新第三方软件时,由于更新比较费时,为了更快进行安装,这里建议两个复选框都不要选。鮒簡觸癘鈄餒嬋锵户泼。根据提示进行余下的操作,直到系统安装完成,即完成了在虚拟机中对ubuntu系统的安装。3.1.2 配置网络要使主机xp可以同虚拟机中的ubuntu进行在局域网中的通信,必须要根据主机xp的网络信息对ubuntu进行设置,使xp和ubuntu处于同一个网段,网关一致,使用的DNS服务器一致。眯毆蠐謝银癩唠阁跷贗。查看主机xp的网络信息如下: ip: 49 子网掩码:255.255.2555.0 默认网关: DNS服务器:6(可以使用默认网关)然后根据xp的网络信息进行配置ubuntu的网络信息,用vi进行在ubuntu下的网络信息的编辑更改如下:闵屢螢馳鑷隽劍颂崗鳳。 在/etc/network/interfaces中配置ip等信息如下: auto eth0 iface eth0 inet static address 15 gateway netmask 在/etc/resolv.conf设置DNS服务器如下: Generated by NetworkManager nameserver 6在配置好ubuntu的网络信息后,必须要重启一下网络,设置才有效。使用下面的命令进行重启网络:$sudo /etc/init.d/networking restart然后,可以使用ifconfig命令查看配置的网络是否生效,同时可以使用ping命令进行与xp进行ping,如何可以ping通,则表示设置成功;否则要仔细检查出错的原因,一般较常出错是在虚拟机中没有设置ubuntu的网络连接方式为桥接方式。檁傷葦开阈灯伞馑諧粮。3.1.3 配置samba服务器在局域网中共享ubuntu中的目录一般用samba服务器的方式进行共享,对于samba服务器的配置,在ubuntu系统中进行配置如下:鄭饩腸绊頎鎦鹧鲕嘤錳。在ubuntu中安装软件之前,一般采用下面的命令进行更新软件包数据源:$sudo apt-get update接着安装samba软件包,如下:$sudo apt-get install samba smbfs samba-common smbclient弃铀縫迁馀氣鰷鸾觐廩。然后进行samba的配置:$ sudo v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康知识培训资料及考卷课件
- 北京市顺义区2023-2024学年九年级下学期中考适应性训练(三模)历史试卷及答案
- 评价器奖惩管理办法
- 新质生产力高质量发展大会
- 学校食堂食品安全突发事件应急处置预案
- 新疆维吾尔自治区高级导游等级考试(导游综合知识)综合能力测试题及答案(2025年)
- 出租车公司安全培训总结课件
- 出国劳务业务课件
- 2025合同审批流程和合同文档管理规范采购合同协议书
- 2025年FIDIC合同框架下EPC工程总承包管理培训教材
- 整机测评报告模板范文
- 2025-2030年中国工程承包行业市场深度调研及竞争格局与投资前景研究报告
- 十个严禁考试题目及答案
- 2025至2030年中国聚氨酯医用材料行业市场研究分析及投资潜力研究报告
- cmmm考试题及答案
- 2025中国中老年营养健康食品专题报告
- 无人机生产线项目可行性研究报告
- 零售药店培训试题及答案
- T/CECS 10288-2023水泥及混凝土用玻璃粉
- 兄弟赠送房屋协议书
- 2025年湖南省国际工程咨询集团有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论