基于嵌入式Linux的MP3播放器的设计与实现毕业设计论文

上传人:dream****gning 文档编号:72991341 上传时间:2022-04-10 格式:DOC 页数:63 大小:1.42MB
返回 下载 相关 举报
基于嵌入式Linux的MP3播放器的设计与实现毕业设计论文_第1页
第1页 / 共63页
基于嵌入式Linux的MP3播放器的设计与实现毕业设计论文_第2页
第2页 / 共63页
基于嵌入式Linux的MP3播放器的设计与实现毕业设计论文_第3页
第3页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Design and Implementation for a MP3 Player Based on Embeded LinuxA Dissertation Submitted toNanjing Institute of TechnologyFor the Academic Degree of Bachelor of ScienceBy Supervised byLecturer KangNi College Nanjing Institute of TechnologyJun 2013摘 要伴随嵌入式系统的持续发展以及普通用户对多媒体应用越来越旺盛的需求,具有多媒体播放功能设备逐渐成为嵌入式系统中必不可少的重要功能。此毕业设计将设计一个基于嵌入式Linux的MP3播放器,系统硬件采用基于ARM架构的开发板。论文首先介绍了嵌入式操作系统的最新发展、嵌入式Linux、ARM的特点以及Qt等的相关知识。重点介绍了如何使用开源播放器MPlayer、解码库libmad、Qt Creator工具来开发一个有图形界面的MP3播放器。还介绍了如何移植U-boot、Linux内核、Qt和文件系统,并在移植好之后烧写到开发板之上,得到一个能独立运行在开发板上的MP3播放器。系统测试表明,该MP3播放器能实现如下功能:“播放”、“暂停”、“停止”、“音量调节”、“退出程序”和“歌曲播放时间”,系统运行稳定,基本达到了设计要求。关键词:嵌入式Linux;移植;Linux ;QtAbstract Along with the sustainable development of the embedded system and the increasingly demands for multimedia applications, an electronic equipment has a functions of playing songs gradually become indispensably.This design will introduce an implemention for a MP3 player, based on embedded Linux system and an ARM architecture development board.This Paper introduces the latest development for embedded operating system, embedded Linux, the characteristics of the ARM, Qt and other related knowledges.Especially,this paper displays how to use the open source player MPlayer, a decoding library called libmad, Qt Creator tools to develop a graphical interface of an MP3 player.In this paper, the work of transplant the boot, the Linux kernel, Qt, and file systems is also introduced. After all system images are burned into the development board, one development board can run a MP3 player is obtained. System test shows that this MP3 player can realize the following function: Play, Pause ,Stop, Volume Control, Exit and Show Songs Playing State.The whloe system runs stably, and reached the basic design requirement.Keywords: embeded Linux;transplant;Linux;Qt目 录第一章 绪 论11.1 课题研究背景和意义11.2 嵌入式系统发展和现状21.2.1 嵌入式操作系统21.2.2 嵌入式Linux和Linux31.2.3 ARM的介绍31.2.4 Qt的介绍41.3 论文所做的工作和结构51.3.1 论文所做的工作51.3.2 论文结构6第二章 系统总体方案设计72.1 系统框架概述72.2 开发板硬件介绍72.2.1 主要硬件及其参数82.2.2 接口资源82.2.3 NAND和NOR Flash的相关介绍:92.2.4 S3C2440的启动方式说明102.3 用于本设计MP3播放器的硬件架构10第三章 嵌入式Linux的开发流程123.1 开发环境的搭建概述123.1.1 硬件平台123.1.2 软件平台123.2 安装软件平台和搭建开发环境的步骤123.2.1 虚拟化平台的介绍与安装133.2.2 RedHat介绍及其在VMware中的安装143.2.3 安装VMware Tools163.2.4 安装交叉编译器173.3 Bootloader和U-boot的介绍183.3.1 烧写U-boot193.3.2 向NAND Flash烧写U-boot213.4 使用FTP下载工具23第四章 系统详细设计244.1 关于移植的原理和介绍244.2 U-boot、内核和文件系统的移植。244.3 开源播放软件MPlayer的安装和移植254.3.1 在X86平台上安装MPlayer254.3.2 向ARM平台移植MPlayer264.4 设计基于Qt/E的播放器图形304.4.1 Qt的实现原理和优势304.4.2利用Qt Creator 开发应用程序流程324.4.3 程序模块间关系图334.4.4 程序的编写和实现334.4.5 关键代码分析354.4.5 编译和运行41第五章 系统调试和解决435.1 系统调试及运行435.2 本次毕业设计中遇到的问题和解决44第六章 总结与展望46参考文献47致谢48附录 A 源代码49附录A.1 main.cpp49附录A.2 mplayer.h49附录A.3 mplayer.cpp50南京工程学院毕业设计说明书(论文)第一章 绪 论1.1 课题研究背景和意义 随着社会的日益信息化,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人来说,需要的已经不再仅仅是那种放在桌上处理文档、进行工作管理和生产控制的计算机机器。任何一个普通人都可能拥有各种使用嵌入式技术的电子产品。如今,各种新式嵌入式设备从数量来说已经完胜常规计算机了。尤其在工业中,几十年来,具有嵌入式技术的数控机床、工业智能机器人、智能设备、服务型机器人一直都对传统的工业生产方式不断改善和提高着。 Moving Picture Experts Group Audio Layer III(MPEG-1 Audio Layer 3,动态影像专家压缩标准音频层面3),经常称为MP3,是当今相当流行的一种数字音频编码和有损压缩格式,它被设计来大幅降低音频数据量,而对于大多数用户的人体自身听觉感受来说,重放的音质与最初的不压缩音频相比并没有极其明显的下降。 MP3播放器是嵌入式系统的主要应用之一,高端的MP3已经不仅仅着眼于音乐播放这一功能,而是同时具备了图片浏览、文本阅读、甚至视频播放等强大功能。本文重点讨论基于S3C2440芯片的MP3播放器的实现,还包括开发环境建立、内核裁剪与编译、Qt开发等一系列过程。 像以前需要两块甚至多块芯片才能处理的数据,现在基本上可以通过单块ARM芯片完成,不仅仅降低系统成本,同时也简化了系统的设计过程。而且嵌入式Linux操作系统的出现,使得应用软件的开发也变得相对简单,此外Linux天生的多平台兼容性,使其移植到ARM平台相对简单,再加上其可裁剪的优点,使得嵌入式Linux成为当前嵌入式开发的主流系统。 所以课题选择基于嵌入式Linux的MP3播放器的设计与实现,具有一定的现实意义。同时,毕业设计也是将大学所学知识的一次综合运用,也会使得在文献检索、查阅资料、科学研究素养和文档写作等方面的能力得到进一步提高。1.2 嵌入式系统发展和现状1.2.1 嵌入式操作系统 英国电机工程师协会BIEE(Britain Institute of Eletrical Engineers)对嵌入式系统的定义是:嵌入式系统为控制、监视或辅助设备、机器甚至工厂运作的装置1。从20世纪80年代开始,在嵌入式系统出现了“操作系统”概念,这使得开发人员可以进一步缩短开发周期,降低开发成本并提高开发效率。例如著名的VxWorks,该系统如今被华为、H3C、中兴等众多网络设备和通信设备厂商所采用。而思科采用了基于UNIX开发而来的“网际互联操作系统”(Internet Operation System ,缩写为IOS);另一家网络设备厂商Juniper所使用的JunOS系统直接运行于Free BSD内核之上,和内核联系紧密。20世纪90年代之后,随着对实时性要求的提高、软件规模不断增加,逐渐发展出实时多任务操作系统,并作为一种软件平台逐步成为目前嵌入式操作系统的主流。许多大公司看到了嵌入式系统的无限美好的发展前景,开始大力发展自己的嵌入式操作系统如Palm OS、Palm WebOS、Windows CE、嵌入式Linux、Symbian、Black Berry OS、C/OS-II、eCOS、uITRON等嵌入式操作系统。221世纪第一个十年的后半叶,出现了三大系统:2007年,苹果公司发布了改变人们生活的iPhone和iOS操作系统;随后,2008年,谷歌发布了Andriod操作系统;微软于2010年发布Windows Phone 7系统、2012年发布了Windows Phone 8 系统。这几年里,基于这三大智能系统的智能手机、平板电脑的数量爆发式增长,提高了人们的工作效率和生活舒适度。尤其是平板电脑,使人们对嵌入式设备和电脑界限的划分逐渐模糊。除了上面的这些操作系统之外,三星、Ubuntu甚至是Firefox等公司都发布了自己的操作系统和手机。三星、Ubuntu等许多公司的系统都是是基于Linux开发而来的,仅有少数是个例外如FirefoxOS,该系统是基于HTML5的,毕竟火狐本身就是一个浏览器厂商。在这场操作系统之争中,如Palm OS、WebOS 、Windows CE、Meego等系统已经淡出了历史的舞台,而Symbian、Black Berry OS则在垂死挣扎。嵌入式Linux和Andriod是开源的系统。开发基于Andriod的系统时,需要向其他厂商如微软、诺基亚、三星等公司缴纳专利授权费用,而基于嵌入式Linux开发的系统就没有这个问题,适合小型厂商和个人的商业开发。1.2.2 嵌入式Linux和Linux 嵌入式系统和通用计算机系统相比具有如下特点:可裁剪性好、系统内核小、功耗低、可靠性高、实时性好等。嵌入式Linux和Linux应用程序开发没有太大区别,但是,嵌入式Linux系统的开发过程中同纯粹基于Linux环境下的开发流程有着一个本质的不同之处:前者需要在宿主机器上交叉编译、交叉调试,而在目标机上运行被调试程序;而后者都是在通用计算机上进行本机编辑,本机编译、连接、调试、运行的。 UNIX,作为现代操作系统的祖先,从贝尔实验室流传出来。而在UNIX的发展过程中,产生的C语言,是贝尔实验室对科技发展的又一重大贡献。贝尔实验室的母公司美国电话和电报公司(AT&T),见有利可图,就禁止免费使用UNIX并推出了收费版本UNIX System V 。之后UNIX分化成了许多不同分支和发行版本,最著名就是Free BSD UNIX。 GNU,即GNUs Not UNIX 。该组织建立与1983年,其目标是创建一套完全免费的、自由的UNIX-like系统。该组织编写出了一个完整操作系统的大部分内容,如编译器、系统管理工具、网络工具、Office套件、多媒体和绘图软件,除了内核。Linux由Linus Trovalds于1991年发明,是1990年后出现的新学派Unix阵营(也包括FreeBSD、NetBSD、OpenBSD和Darwin)的领头羊,代表了整个阵营的设计方向3。一个叫Linus的大二学生写出了一个内核,被GNU看中,然后就有了今天的Linux。Linux,最大的特色是开源和免费,遵循着GPL开发者们可以根据自身需要灵活的进行定制化开发,因此也产生了相当多的Linux的发行版本。1.2.3 ARM的介绍 嵌入式处理器与常见的基X86架构处理器的PC相比,最大的优势是低功耗。此外,嵌入式操作系统是实时操作系统,着眼于调度所有可以使用的资源来完成实时控制任务,而桌面操作系统如UNIX、Linux和Windows都是分时操作系统。 按照处理器内核的体系结构,可以将嵌入式处理器分为:MIPS处理器、ARM处理器、PowerPC处理器、ColdFire/68K处理器等。 智能手机和平板电脑的流行,让“ARM”这一词语频繁出现在人们的视野中,普通人都常常能到报纸、电视上见到这个词。什么事“ARM”?ARM是Advanced RISC Machines (高级精简指令集处理机)的缩写,表示一种知识产权核。同时“ARM”也是一家公司的名称,ARM这家公司于1991年成立于英国剑桥,该公司的特点是只设计基于ARM架构的处理器内核,再将该产品及相关专利授权给其他半导体厂商、软件厂商和OEM厂商公司使用或生产,包括Intel、Apple、微软、三星、高通、索尼等4,ARM公司本身没有任何工厂。 英特尔当前是全球PC处理器的主导者,市场份额超过了80%。但2012年全球PC市场在过去的10年间首次出现下滑,而ARM的份额逐年稳步增长。ARM公司与2012年十月发布的Cortex-A50核心,面向服务器领域,此番旨在同Intel争夺其基于X86体系的服务器市场。几乎在同时,AMD宣布基于此核心来开发64位ARM架构的处理器,这使得AMD 成为业界中不仅唯一一家具有独立制造CPU和GPU能力的厂商,而且将是唯一一家能提供基于X86和ARM架构的处理器芯片的厂商。微软于2012年10月发布基于ARM架构CPU 的 Surface Windows RT,同时也意味着视窗操作系统从Windows8开始可以在ARM平台上运行了。 ARM处理器分为如下几个系列:ARM7、ARM9、ARM9E、ARM10E、ARM11、Cortex-A8、Cortex-A9、Cortex-A15等。 本毕业设计基于三星S3C2440的XC2400开发板,其微处理器为基于ARM9 内核的ARM 920T。1.2.4 Qt的介绍 Qt是挪威TrollTech公司开发的跨平台C+图形用户界面研发工具。2008年该公司被Nokia收购。2009年Nokia公开了Qt的源代码。2012年,Nokia将Qt售予芬兰软件公司Digia,而Qt仍将保持开源。Digia计划将Qt推广到Andriod、iOS和Windows 8平台。 Qt的一个显著特点是跨平台特性。通过对不同平台的私有API,如文字处理、网络协议、进程处理、线程、数据库访问等进行封装。Qt可以在多个平台(Unix、Linux、Windows、Mac等)上运行,从某种意义上讲,Qt类似于Microsof的MFC或Borland的VCL,都是C+的一个函数库。不同的是它封装不同操作系统的访问细节,而且能实现跨平台应用5。 QT的版本比较多,对于初学者容易搞混。现分别介绍: (1)Qt/X11:是指用专门于Linux或者Unix的版本。如: qt-x11-opensource-src-4.6.3.tar.gz,它是用于PC机linux平台的Qt源码包。Linux操作系统中的常见的KDE桌面就是用Qt/X11开发的; (2)Qt Windows:是指用于Windows的Qt版本; (3)Qt-everywhere:在配置时加上不同参数的话,选择性地编译用于X86,或者用于ARM平台,如qt-everywhere-opensource-src-4.6.3.tar.gz; (4)Qt/Embedded:即Qt/E。其是专门用于ARM平台的Qt版本。如 qt-embedded-linux-opensource-src-4.6.3.tar.gz,它是用于嵌入式ARM的qt源码包。 本次毕业设计将在X86平台上安装面向Qt/X11的Qt,软件版本为qt-SDK-linux-x86-opensource-2010.04。安装在/opt目录下,在桌面会生出Qt Creator快捷方式,打开后进行一些参数的设置之后即可进行程序的开发,例如指定qmake的路径。1.3 论文所做的工作和结构1.3.1 论文所做的工作 本毕业设计在Red Hat Enterprise Linux中安装Qt Creator开发工具,实现在嵌入式Linux下的MP3播放器。能通过图形界面控制播放和暂停、快进快退、上下曲、音量增减、显示歌曲状态信息等功能。 本课题的主要研究内容包括:(1)了解一个嵌入式Linux系统的开发流程;(2)开发平台的搭建:包括交叉编译环境的建立、环境变量的配置等;(3)掌握Linux内核的移植、开源MP3音乐播放器的移植、用Qt开发的程序及其移植;(1)了解Bootloader的功能和作用;(2)掌握嵌入式Linux的程序开发,以及编译、调试方法和步骤。 需要解决的关键性问题:(1)熟悉嵌入式Linux和其开发流程中涉及的的裁剪和移植;(2)开源播放器MPlayer的移植和播放测试;(3)用Qt实现对播放器的图形界面的开发,并实现相应的功能。1.3.2 论文结构 本论文共分六章: 论文的第一章,是绪论部分。主要是对课题的研究目的及意义,课题现状以及作者所做的工作进行简略的介绍;对嵌入式操作系统进行梳理和介绍和以比较;介绍ARM体系的基本发展和特性;对Qt进行基本的介绍。 第二章主要介绍了本系统的硬件平台。首先是对系统的整体架构进行了介绍;对系统的硬件电路和功能模块进行了介绍。 第三章主要是搭建嵌入式开发平台 。介绍RedHat、VMware Station及其相关的使用和技巧。 第四章主要是详细MPlayer的编译和移植工作,以及Qt程序的开发和移植工作。 第五章主要是实验结果和毕业设计过程中遇到的一些问题。 第六章是总结与展望,回顾了本次毕业设计及其中的不足之处。第二章 系统总体方案设计2.1 系统框架概述 根据嵌入式MP3媒体播放器系统的需求分析,本文选择了基于ARM 9内核的处理器的开发板作为本系统的实现的平台,下文将对其中硬件设备做介绍。软件平台选择嵌入式Linux操作系统。毕业设计中的开发平台是Red Hat Enterprise Linux 6.3操作系统,其是安装在VMware Station 9.0虚拟化平台中的,可以方便的与Windows操作系统进行数据共享和传输。为了搭建整个开发环境,还需要交叉建立交叉编译环境。播放器系统的整体结构由下到上为:应用层(Qt 、MPlayer)、操作系统层(Linux)、驱动层(音频驱动、液晶屏幕驱动等)和物理层(ARM芯片以及外围电路)。2.2 开发板硬件介绍 本次毕业设计使用XC2440开发板,如图2.1所示:包括 S3C2440处理器、NAND Flash、NOR Flash、SDRAM、串口、下载接口、音频解码芯片和接口、LCD和触摸屏接口、时钟电路、复位电路等。图2.1 XC2440开发板2.2.1 主要硬件及其参数l CPU:主频为400MHz的三星S3C2440Al 内存:64M Bytes SDRAMl 闪存: 256M Bytes Nandflash + 2M Bytes Norflashl 板载复位电路l 板载电源管理芯片l 内部 RTC(Real-Time Clock,实时时钟)功能l 180Pin 管脚以 1.27mm 间距排针形式引出l 4.3 寸 TFT LCD ,带触摸屏,分辨率 4802722.2.2 接口资源l 1个100M 以太网接口l 1个RS232 电平串口l 2个TTL 电平串口l 1个USB HOST 接口l 1个USB DEVICE 接口l 1个LCD 接口l 1个Camera 接口 l 1个microSD/TF 卡接口l 2个音频接口,uda1341音频芯片,使用IIS和L3总线,一路立体声输入,一路立体声输出l 1个温度传感器l 1个红外接收管l 2个电位器l 4个用户 LEDl 4个用户按键l 1个蜂鸣器l 1个JTAG 接口l 1个mircoSD/TF 卡接口l 板载EEPROMl 板载RTC供电电池2.2.3 NAND和NOR Flash的相关介绍: “NAND”这个名称表示其是由“与非”逻辑门电路构成,而“NOR”则表明其内部有“或非”逻辑门电路构成。从对数据传输速率来看,NAND要比NOR快很多,因为NAND是按页操作的而NOR是按字节操作的。NOR 是和SRAM一样的可随机存储的,也不需要驱动,因此,其受限于地址线,地址就是有限的,所以容量普遍较小;NOR的优点则表现在读取速度快,而且程序可以直接在芯片内部运行,不需要再读入SDRAM中了。再从价格上来看,NOR的价格更高。从实际应用来看,NOR较多的用在工业领域,特别是用于程序存储等少量数据存储的需求;NAND较多使用再在消费领域中,适合大量数据存储。 U-boot程序不支持从Nand flash启动,但是S3C2440支持从Nand flash启动。开发板加电后S3C2440将Nand flash的前4k(保存有U-boot的部分功能)中的内容拷贝到SDRAM。这就需要修改U-boot源码,使得U-boot在得到执行权后能够将其自身拷贝到开发板上SDRAM中,以便处理器能够执行U-boot。幸好这些工作已经由开发板厂商完成了,不需要用户自行开发。2.2.4 S3C2440的启动方式说明 如果把S3C2440配置成从NAND Flash启动(开发板启动开关拔至NAND端)S3C2440的NAND控制器会自动把NAND flash中的前4K代码数据复制至内部SRAM中(地址为0x40000000),同时还把这块SDRAM的地址映射为0x00000000(CPU总是从0x00000000地址开始运行程序)。 如果将S3C2440配置成从NOR Flash启动(开发板启动开关拔至NOR端),0x00000000就是NOR Flash实际的起始地址,Norflash中的程序就从这里开始运行,不会涉及到数据拷贝和地址映射。2.3 用于本设计MP3播放器的硬件架构 该MP3播放器系统总体框图如图2.2 所示:包括基于ARM价格的三星 S3C2440处理器,NAND、SDRAM存储器、音频处理模块、LCD和触摸屏接口、复位按键、J-link接口等。S3C2440 (ARM9)液晶触摸屏RJ-45以太网接口音频处理模块NAND FLASHNOR FLASHSDRAM图2.2 MP3播放器硬件框图本方案的说明:采用基于ARM S3C2440的开发板。XC2440开发板采用ARM9系列芯片S3C2440作为核心芯片,搭配4.3英寸液晶触摸屏,以及自带音频解码芯片UDA1341,完全胜任MP3文件的解码工作。NOR Flash用来存放着引导程序U-boot;NAND中除了放着U-boot还有系统内核及文件系统,以及歌曲文件;SDRAM用于存放着系统的运行中产生的数据;液晶触摸屏可以让用户进行操作,播放视频时还可以看到视频; 系统采用嵌入式Linux系统,Linux操作系统具有很多优点,如内核可裁剪、高度的可移植性等,支持几乎所有的主流芯片,并且还在不断地被移植至新的芯片上。此外采用开源Linux系统,不需要像其它一些系统那样需要缴纳专利授权费用。第三章 嵌入式Linux的开发流程3.1 开发环境的搭建概述3.1.1 硬件平台 ARM开发板,主机,局域网。3.1.2 软件平台(1)操作系统 本次毕业设计使用虚拟化平台VMware Station,并在其中建立虚拟机,进而在该虚拟机之中安装Red Hat Enterprise Linux系统。(2)交叉编译环境 交叉编译是指:在PC机上编译,在目标板上直接可以执行,不需要重新在目标平台上面进行编译了。交叉编译环境主要包括:目标板操作系统、目标板CPU体系架构、编译器等。目标板操作系统:经过裁剪的Linux系统。目标板使用的CPU:基于ARM9架构的ARM920t内核。编译器:gcc,arm-linux-gcc、makefile工具、库函数等。3. 主机和开发板之间的通信接口串口:用串口控制板子。可用DNW软件设置好要控制的串口、波特率。使用串口线也可以传输文件至开发板,但是速率较慢。USB下载线:可以使用DNW软件下载U-boot、系统内核、文件系统镜像文件到开发板,传输速率较快。RJ-45以太网接口:设置好开发板、PC网卡的IP地址后,可以用NFS挂载的方式来共享主机需要下载到开发板上编译好的代码,也可以使用FTP、TFTP工具来传输文件,这样速率非常快,并且很方便使用。在配置好网络后,就可以用Telnet客户端控制开发板,这样就可以免去频繁的切换目录了。3.2 安装软件平台和搭建开发环境的步骤3.2.1 虚拟化平台的介绍与安装 毕业设计中的开发平台是Linux操作系统,其是安装在VMware Station 9.0这个虚拟化平台中的,可以方便的与Windows操作系统进行数据共享和传输。目前,Windows操作系统中的很多常用软件并不支持在Linux平台上运行,如果直接安装Linux,那么在纯粹的Linux环境中,将会有很多不便。 VMware Workstation 是一款功能强大的提供桌面虚拟化功能的软件,使用户可在单一的桌面上同时运行多个操作系统,是进行开发测试部署新的应用、服务、程序等的最佳解决方案。可在一台真实机器上模拟完整的网络环境,其更佳的灵活性与先进的虚拟化技术胜过了市面上其它厂商的的虚拟化软平台。利用该软件,可以建立许多虚拟机。可以认为虚拟机是运行在同主机操作系统平行的底层硬件环境中的。 快照功能介绍和使用:VMware快照功能是虚拟机磁盘文件(VMDK)在某个时间点的复本。万一某些东西出错了,你可以通过使用恢复到快照来保持磁盘文件系统和系统存储。如果你创建了多于一个的虚拟机快照,那么,你将有多个还原点可以用于恢复。简单说来,其实VMware快照就是将当前VMware虚拟环境里的系统所有环境做个备份(即照个相),让我们虚拟机里的系统出问题之后可以马上恢复。这个功能就有点类似于我们系统备份功能!但是VMware的快照比系统备份功能更强一些,如硬件及一些设置都可以保存下来。在开发环境中,使用的是root账号,常常进行一些比较危险的操作,为了避免误操作而是得系统受损坏,或者要撤销之前所做的重大更改等。比如为了安装不同版本的多个交叉编译器,就可以使用该功能。在本次毕业设计中,就使用了几次快照进行还原。建立的快照如图3.1所示。图3.1 本次毕业设计中建立的快照3.2.2 RedHat介绍及其在VMware中的安装 Linux是一类Unix计算机操作系统的统称。Linux操作系统内核的名字也是“Linux”。Linux操作系统同时也是自由软件运动中和开放源代码社区发展中最著名的例子。严格地来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 项目中的各种工具和数据库的操作系统。 Red Hat公司创建于1993年,是世界上最资深的Linux和开放源代码提供商,同时由Red Hat 公司发行的Red Hat Linux系统也是最获得市场认可的Linux发行版本。Red Hat Linux是商业上运作最成功的一个Linux发行套件,普及程度很高。Red Hat Linux自9.0之后不再发布个人用户版,从此专注于企业级用户:2004年4月30日,Red Hat公司正式停止对Red Hat Linux 9.0版本的支持,标志着Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行包则与来自民间的Fedora开源社区合并,成为Fedora Core发行版本。Red Hat公司不再开发桌面版的Linux发行包,而将全部力量集中在企业版的开发上,也就是Red Hat Enterprise Linux(如图3.2所示)版本,但仍然公开源码。 图3.2 RedHat Enterprise Linux 6 安装界面截图 2005年10月Red Hat Enterprise Linux 4.0发布。Fedora是Redhat桌面版本的延续,其是与开源社区合作的。另一个Linux 发行版本CentOS,也是CentOS社区完全使用Red Hat原代码创新编译,仅仅更改LOGO等极少部分。2007年3月,Red Hat Enterprise Linux 5.0发布。2011年11月10日RedHat Enterprise Linux 6.0正式版发布。目前最新版本已经到6.4版本。本次毕业设计使用RedHat Enterprise Linux 6.3版本。 注意点:在安装时需要选择“桌面”,这样开机就有GUI界面了,方便使用。如图3.3 所示 。RedHat Enterprise Linux的详细的安装过程就不在赘述了。图3.3 选择“桌面”选项 Red Hat Enterprise Linux系统有一个优点,就是方便安装软件:将安装光盘或者镜像文件挂载为本地的“软件源”,这样就以直接搜索一些常用的软件包,搜索到之后可以直接安装,不需要再进行下载了。如果这些包需要再安装一些存在依赖关系的软件,就自动安装了。这是比Ubuntu等Linux发行版本的一个优势,至少可以节约开发人员的时间。本次毕业设中,有几次都在编译时报错,并提示缺少如ncurses libraries、autoconf、g+等软件,使用这个方法可以快速安装这些软件。注意,必须要将操作系统光盘镜像文件改名为“Red Hat Enterprise Linux 6.3” 挂载为“软件源”,这样才能成功。3.2.3 安装VMware Tools 点击“VM”-“Install VMware Tools” ,会自动下载Vmware Tools 软件(当然前提是正确配置虚拟机的网络,在此就不进行详细的介绍了),作者使用的版本是VMwareTools-9.2.3-1031360.tar.gz VMware Tools是VMware虚拟机中自带的一种增强工具,是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序。只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之前自由移动(不用再按Ctrl+Alt),且虚拟机屏幕也可实现全屏化。有时需要将Windows下面的文件和Linux共享起来,这样就可以方便的在Linux下面编译运行代码,然后把编译后的数据通过Windows下的工具传到开发板里面。依次点击VMware Setting - Option - Shared Folders,选择“Always Enabled”,并添加准备共享给虚拟机的文件夹。共享文件后,就可以在RedHat的 /mnt/hgfs/目录下看到共享的文件。 下面讲述如何详细装VMware Tools的过程:(1)点击菜单“VM”选项卡,选择Install vmware tools这个时候会出来一个可以安装的.gz格式的压缩文件包(2)cd /media/VMware Tools/就会看见这个压缩包(3)tar -zxvf VMwareTools-9.2.3-1031360.tar.gz /tmp/将这个压缩包解压到 /tmp 目录下面(4)cd /tmp/vmware-tools-distrib/(5) ./vmware-install.pl这样就进入安装vmware-tools的界面了,在安装的过程中,会出现许多可选功能让用户进行选择,直接按回车键就可以了。(6)安装完VM Tool之后,再进入/mnt/hgfs/目录下,就可以看到已经共享的文件了。3.2.4 安装交叉编译器本次毕业设计所使用的交叉编译器版本是 arm-linux-gcc-4.1.2 ,其源码包为:arm920t-eabi-4.1.2.tar.gz。安装和验证的步骤如下:(1)使用解压命令:tar zxvf arm920t-eabi-4.1.2.tar.gz -C /opt,将该文件解压到/opt下;(2)接着修改/etc目录下了profile文件来设置环境变量:vi /etc/profile ;然后向该文件中最后面加入一行:export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH;(3)随后用保存退出。执行命令source /etc/profile ,这样就不需要重新启动计算机就使得上述更改立即生效了。(4)在控制台输入“arm-linux-gcc -v”,出现图3.4中的信息,最后一行信息表明安装成功。图3.4 查看安装的arm-linux-gcc相关信息3.3 Bootloader和U-boot的介绍 启动一个计算机系统的第一步操作是加电,随后引导程序运行,读取硬盘上的内核镜像进而载入RAM,然后才是启动操作系统。Windows系统中的引导程序就是称为BIOS的程序,而在Linux中的引导程序则称为Bootloader。通过这段程序,可以初始化硬件设备。Linux下的的开源Bootloader有GRUB、LILO、Loadlin、RedBoot、U-Boot、BLOB、LinuxBIOS、Etherboot和ROLO等。存储介质如磁盘、NOR Flash或NAND Flash,它们的物理地址起点开始放置着引导程序,即Bootloader程序。 U-Boot是一个通用的引导程序(Universal Boot Loader),其通用性主要体现在不仅支持对多种嵌入式操作系统的引导,包括Linux、QNX、LynxOS、NetBSD、VxWorks等;而且对多个体系架构的嵌入式处理器提供支持,如ARM、PowerPC、MIPS和XSCALE等。U-Boot是目前ARM平台使用最多、应用最广泛Bootloader了。 Bootloader(即U-boot)的功能:设置并初始化硬件如CPU、RAM 、中断、时钟、串口;引导操作系统;下载程序、烧写系统、开机LOGO、驱动管理和闪存分区管理等功能。3.3.1 烧写U-boot 刚拿到开发板时,由于对烧写不够熟悉,操作错误,令NAND分区中的数据受破坏,导致无法通过NAND中的U-boot启动。而XC2440开发板的NOR Flash中默认没有U-boot,所以需要重新烧写U-boot这一步骤。 烧写硬件工具:J-Link仿真器(如图3.5所示)。图3.5 J-Link仿真器连接开发板烧写软件工具:Setup_JLinkARM_V408i (安装好之后,桌面出现多个快捷方式,点击一个名为J-Flash ARM 的快捷方式)。烧写流程:连接线路;由于J-Link仿真器只能烧写NOR Flash(J-TAG仿真器才是既能烧写NOR Flash,又能烧写NAND Flash的,但是其价格更贵),所以先向NOR中烧U-boot,再从NOR启动U-boot,进而向NAND烧写U-boot。烧写关键步骤的说明:打开J-Flash ARM“Option”菜单“Project Setting”,进入工程配置界面。有一项对CPU的配置,如图3.6所示,其中的“Core”选项选择ARM9 ;“Check core ID”中填写 “00324090”,该数字表示的是S3C2440这一CPU的ID号;“Use target RAM Addr”表示SDRAM的起始地址为40000000;“Use following init sequence”表示将要设置SDRAM的初始化序列,该参数用来设置一些寄存器,如看门狗定时器控制寄存器、中断屏蔽寄存器、CPU时钟分频控制寄存器等。图3.6 对CPU的配置 设置好相关参数之后,在“File”菜单中,选择“Open”,打开要烧写的镜像文件,这里我们烧写 U-boot.bin 文件。目的地为NOR Flash。最终出现如图3.7的提示信息,表明烧写成功。图3.7 烧写成功的提示信息3.3.2 向NAND Flash烧写U-boot 首先将开关启动选择开关拨至“NOR”,从NOR启动,从DNW软件界面可以看到U-boot的启动界面(如图3.8),注意方框中的信息,表明启动介质为NOR Flash。图3.8 由NOR启动,U-boot界面从键盘输入“1”,按回车,向NAND进行烧写U-boot的工作,如图3.9所示。图3.9 向NAND进行烧写U-boot然后将开发板启动方式选择开关拨至“NAND”,加电启动,从终端中可以看到U-boot界面出现了“NandFlash Booting”的提示信息。如图3.10。图3.10 从NAND Flash启动后的界面 之后选择“6”;先把NAND格式化;完成后再选择“2”来烧写Linux内核;完成之后选择 “3”进行文件系统的烧写。这些步骤就不进行详细叙述了。3.4 使用FTP下载工具 使用串口线下载速率较低,每秒只能传输几十KB的数据;使用下载线传输的话,速率为每秒500KB左右;通过使用网线搭建局域网传输环境,传输的速率在1.5MB/s左右。可以看出使用网线进行传输,可以节约很多时间,并且操作方便(安装64位Windows系统的计算机由于不能安装下载线的驱动程序,导致无法正常使用下载线;除此之外下载线还不能传输普通文件)。在局域网环境中,使用“8UFTP”这个工具软件可以在开发板同PC之间方便地传输文件。第四章 系统详细设计4.1 关于移植的原理和介绍 使某个平台的代码运行在其他平台上过程称为移植。根据实际的硬件平台,修改Linux内核目录中的Makefile文件、配置文件以及某些源代码,使之可以运行在ARM,PowerPC,X86、MIPS等平台上。本毕业设计中的软件,是需要移植到基于ARM9内核的三星S3C2440平台的。Makefile的作用就是根据./configure命令的情况,构造出需要编译的源文件列表,然后分别编译并把目标代码链接到一起,最终形成目标二进制镜像文件。 简单地说移植就是根据用户自行选择的硬件平台进行重新修改和编译源代码,进而使源代码支持相应的硬件,使编译后的文件(如系统内核、文件系统、应用程序等)可以在该硬件平台上运行。假如源代码中缺少某对些硬件的支持,就可以根据自身需要进行相应的开发,并加入到源码中编译,最终实现对该硬件的支持。 构建一个完整的嵌入式系统涉及到的移植工作包含U-boot移植、内核移植、文件系统移植以及Qt的移植。4.2 U-boot、内核和文件系统的移植。在U-boot是一种用于嵌入式系统中的开机引导程序。在移植工作中,要改动的工作主要有修改makefile文件、加入针对CPU的时钟配置、修改Norflash相关参数、加入对启动zImage内核镜像的支持等。内核移植的主要工作主要是修改与CPU体系结构相关部分,即启动代码的修改,内核的链接及装入,参数传递,内核引导等几个部分。主要对下面这些进行修改:启动参数、Makefile文件,开发驱动程序等。还有其他需要修改的参数,比如根据开发板对机器码进行修改、指定闪存参数(例如关闭ECC校验)、设置晶振频率等。内核移植通常使用图形化界面工具“menuconfig”进行快速的操作。 根文件系统以树型结构组织,包含内核和系统管理所需要的各种文件和程序即/bin、/sbin、/root、/lib、/tmp、/usr、/home、/mnt等文件夹。文件系统的移植就是要产生匹配开发板的这些文件夹。嵌入式Linux系统中,通常使用支持图形化操作的Busybox工具来移植根文件系统。为了支持Qt,在根文件系统的移植工作中还要加上Qt相关的一些配置,如移植tslib以支持使用触摸屏的Qt程序、qmake配置参数的设定、添加字体库等。 Bootloader的移植、内核和驱动的移植、文件系统的移植以及Qt的移植过程并不是本毕业设计的重点,本次毕业设计直接使用厂商提供的U-boot、内核镜像、支持QT/E的文件系统。本次设计,首要的一点是学习嵌入式Linux的开发流程,不需要太过于拘泥于这些细节的实现上,因为这些细节都是由厂商开发和完成的,用户在其上直接进行二次开发即可。4.3 开源播放软件MPlayer的安装和移植4.3.1 在X86平台上安装MPlayerMPEG-1,MPEG-2标准中定义的第1,2,3层的音频压缩是流行的有损音频压缩方式6。利用第三层音频压缩方法,所产生的音乐文件就是我们生活中所常见的“MP3”。MPlayer是一款开源的媒体播放器,可以在Linux、UNIX、Mac OS X 甚至Windows操作系统下使用。该播放器的开发者们称其为MPlayer - The Movie Player,从其名称中就可以看出该播放器最初目的是是用于播放视频的,MPlayer也可以播放音频文件,比如MP3格式的音频文件。为了实现MP3音乐文件的播放,还需要解码库才能正常播放MP3音乐文件,比如libmad就是一个开源MP3解码库,对MP3解码算法做了很多优化。下面是详细的安装过程:(1)准备源码包:MPlayer-1.0rc4.tar.gz;(2)安装过程:将MPlayer-1.0rc4.tar.gz源码包复制到/opt目录下,在控制台中进入/opt目录,输入tar MPlayer-1.0rc4.tar.gz 命令进行解压。(3)然后依次输入下面的三条命令: ./configuremakemake install (4)最终出现图4.1的提示信息,表明在PC上安装可在X86平台下运行的MPlayer最终成功安装。图4.1 安装Mplayer 成功 此时在MPlayer-1.0rc4目录下会生成可执行文件,名为“mplayer”,该文件就是安装成功后的Mplayer 。将歌曲“1.mp3”复制到/opt/目录下,输入如下命令:mplayer /opt/songs/1.mp3 ,就进入播放界面了,如图4.2所示。如果没有声音的话,在播放命令之前输入如下命令:modprobe snd_pcm_oss,然后再进行播放。如果还是不出声音,请关注下VMware音频设置以及操作系统音频设定是否正确。图4.2 用X86平台的MPlayer播放音乐4.3.2 向ARM平台移植MPlayer MPlayer的移植过程主要包括源代码的获取,库的安装,详细过程如下所示: (1)下载好下面的源代码: MPlay-0.15.2b.tar.gz libid3tag-0.15.2b.tar.gz libmad-0.15.2b.tar.gz (2)编译安装libid3tag-0.15.2b。 解压libid3tag-0.15.2b.tar.gz软件包,会生成libid3tag-0.15.2b目录。进入该目录,在该目录下使用./configure命令配置这些库编译可选项,例如:指定交叉编译器、编译选项、打开生成静态库选项(-disable-shared表示不生成动态库)、关闭调试和安装路径等,然后用ARM交叉编译工具交叉编译。详细地命令如下:tar xzvf libmad-0.15.1b.tar.gzcd libmad-0.15.1b./configureCC=arm-linux-gcc-host=arm-linux -disable-shared -disable-debugging -prefix=/tmp/libid3tag/id3makemake install 完成后会在/tmp/libid3tag/id3/目录下生成包含头文件和库文件的文件夹include和lib。其中include文件夹下的头文件是“id3tag.h”; lib文件夹下的静态库文件是“libid3tag.a” (4) 编译安装libmad-0.15.2b。 解压libmad-0.15.2b.tar.gz源码包之后,会在当前目录下生成的libmad-0.15.2b目录。进入该目录,在该目录下使用./configure命令配置这些库编译可选项,例如:指定交叉编译器、编译选项、生成静态库、关闭调试和安装路径等,然后用ARM交叉编译工具交叉编译libid3。详细的命令如下:tar xzvf libmad-0.15.1b.tar.gzcd libmad-0.15.1b./configure CC=arm-linux-gcc -host=arm-linux -disable-shared -disable-debugging -prefi
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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