ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:338.48KB ,
资源ID:9875034      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9875034.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于arm9的流媒体播放器的设计课程设计论文大学论文.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于arm9的流媒体播放器的设计课程设计论文大学论文.docx

1、基于arm9的流媒体播放器的设计课程设计论文大学论文基于嵌入式ARM920T的视频播放器设计摘要嵌入式技术已经成为了后PC时代的核心技术,而基于嵌入式技术的便携式视频播放器由于体积小、重量轻、携带方便等特点,具有极广的市场前景,所以嵌入式视频播放器成为了现在IT行业研究的热点。本文提出了一种基于ARM9处理器,以嵌入式Linux为底层操作平台的嵌入式视频播放器的设计方案。本文首先介绍了视频播放器软硬件的整体设计方案,然后详细介绍了如何通过移植Bootload、Linux内核和制作根文件系统来完成搭建视频播放器底层操作平台的工作,最后通过移植开源的多媒体播放器软件MPlayer和设计相关控件完成

2、了整个视频播放器的设计工作。最后,总结了论文所做的工作,指出了嵌入式播放器所需要进一步解决和完善的问题。关键词:嵌入式,视频播放器,嵌入式Linux,ARM920TDesign of Video Player Based on Embedded ARM920TAbstractEmbedded technology has become the core technology of the post-PC era, and based on embedded technology of portable video player for small volume, light weight, c

3、onvenient to carry have a very wide prospect of market, and so embedded video player to become a research focus of the IT industry. This paper puts forward a kind of embedded video player design scheme,the scheme is based on the ARM9 processor ,and the Embedded Linux as the underlying operating plat

4、form.This paper first introduced the video player overall design scheme of software and hardware ,then detailed in detail how to transplant Bootloader, Linux kernel and make a root file system to complete the work to build a video player underlying operating platform ,finally ,through transplantatio

5、n of open source multimedia player software MPlayer and design controls to complete the design work of the video player.Finally, summarize the work of this paper, points out the embedded player which need to be solved and perfected problem.Keywords: Embedded,Video player,Embedded Linux,ARM第一章 引言1.1研

6、究背景伴随着半导体技术、计算机技术、网络技术和软件技术的飞速发展,现如今,我们已经进入了后PC时代。在这一阶段电子产品的发展趋势是智能化、数字化、网络化、便携轻巧、易于操作,而嵌入式技术(Embedded Technology)的发展为人们提供了一个很好的解决方案。所谓嵌入式是指以应用为中心,以计算机技术为基础,软件、硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统1。嵌入式技术已经被广泛的应用于科学研究、工程设计、军事领域和文艺商业的方方面面,嵌入式产品更是随处可见,比如消费电子产品、车载电子设备、智能家电、MP3、MP4等。如今人们随着生活水平的提高,对

7、视听享受方面的要求也越来越高,人们不单仅仅满足于在电脑上或电视上欣赏高品质的音视频,也渴望能够随时随地的欣赏音乐观看电影,所以基于嵌入式技术的便携式多媒体播放器也成为了现今IT界研究的热点之一。面对广阔的市场需求,海内外的各大厂商也在积极研发自己的产品以抢占市场。基于这一背景,本文提出了一款基于嵌入式Linux操作系统和ARM处理器的视频播放器设计方案。1.2发展状况和研究意义自从2002年法国的爱可视推出全球第一款MP4多媒体Jukebox以来,基于嵌入式技术的便携式视频播放器已经发展了十年,经过这十年的发展,视频播放器技术已日趋成熟,市面上的产品支持的视频格式也越来越多,功能也越来越强大,

8、很多MP4都集成了上网、游戏、个人事务处理甚至是视频录制、数码照相等功能。目前。很多提供视频播放器处理器的半导体厂商都推出有自己的视频播放器硬件解决方案,这些方案可以概括为以下四类:一类是以德州仪器、飞利浦为代表的基于CPU+DSP芯片的解决方案;一类则是以Intel和AMD为代表的基于通用CPU的解决方案;第三种则是以飞思卡尔和深圳安凯为代表的基于MCU芯片的解决方案;第四种是基于双CPU的解决方案4。在软件方面基本上市面上的便携式视频播放器都带有嵌入式操作系统,主要的操作系统有Vxworks、Palm OS、Windows CE、Linux、Android以及厂家自己开发的操作系统。生产厂

9、商在设计自己的产品时如果采用上述的硬件方案,都要支付一笔不菲的授权费用,而在嵌入式操作系统的选择上也只有Linux是开源免费的,所以产品成本比较高。ARM处理器具有体积小、功耗低、低成本、高性能等优点,并且支持Linux系统6。所以可以选用ARM处理器配合Linux进行产品的设计,这样可以充分的利用Linux开源的特性,根据需要修改和移植一些免费的开源软件,这样不仅能降低产品研发的难度,加快产品的上市时间,还能省去一笔不菲的软硬件授权费用。1.3本文组织结构本文介绍了一款便携式视频播放器的设计工作,该视频播发器是以ARM处理器为硬件开发平台,嵌入式Linux作为操作系统,通过移植Linux上的

10、一款优秀的开源视频播放器软件MPlayer来实现的。本文共分五章,内容安排如下:第一章,引言。介绍了本文的选题背景,当前国内外的发展状况以及研究意义,并对论文的主要工作进行了简单介绍。第二章,播放器总体设计方案介绍。主要介绍播放器的硬件整体架构和软件系统的层次结构。第三章,系统开发平台的构建。本章详细介绍了Linux系统移植到ARM处理器的过程,Linux的移植主要包括三个方面:Booterloader的移植、Linux内核的移植和根文件的制作。第四章,视频播放器的设计与实现。介绍MPlayer的移植过程和播放器相关控件的设计工作。第五章,总结。 第二章 播放器总体设计方案介绍2.1 播发器硬

11、件系统架构本设计将选用国嵌公司生产的GQ2440开发板作为硬件平台,GQ2440是一款ARM9开发板。GQ2440采用的是三星公司生产的S3C2440A处理芯片,主频400MHz,最高可达533MHz。图2.1为视频播放器的硬件系统框图,其中S3C2440处理器除了负责对音视频文件进行解码工作外,还要负责对整个视频播放器进行管理和控制;LCD为播放器的视频输出模块;UDA1341芯片为音频的输出模块,负责将经处理器解码后得到的音频数据转换为模拟信号,并传递给麦克风等输出装置;Flash存储器负责对Linux内核、根文件系统、应用软件和视频文件的存储工作;按键用于完成对视频播放器的控制工作。图2

12、.1 播放器硬件系统框架2.2 播发器软件系统架构由于Linux具有源代码开放、可移植性好、资源丰富、可靠、稳定、免费等特点,所以本文将选用嵌入式Linux作为视频播放器的底层操作平台。而视频播器软件是通过移植Linux下一款优秀的开源视频播放软件MPlayer来实现的。如图2.2所示为视频播放器的整个软件系统层次图。其中Linux内核中的设备驱动负责完成LCD显示器、UDA1314声卡芯片等设备的驱动工作,MPlayer为视频播放器,处于应用层,利用其完成对各种音视频文件的解码工作。 图2.2 视频播放器软件系统层次第三章 系统开发平台的构建3.1 软件开发环境介绍在嵌入式系统中,由于硬件资

13、源的有限性、差异性,所以需要开发者根据不同的硬件资源对嵌入式的操作系统作出相应的剪裁,从而定制出能够运行在特定目标平台上的嵌入式操作系统。构建一个嵌入式Linux操作系统主要包括三个方面的工作:移植Bootloader,移植Linux内核,构建Linux根文件系统。 由于嵌入式系统的特殊性,其硬件资源十分有限,所以不可能在嵌入式操作系统上安装开发工具,也就不可能直接在嵌入式系统上直接进行软件的开发,所以有了交叉开发模型。交叉开发模式是指先在主机上编写程序,然后通过交叉编译工具编译程序,生成目标平台上可运行的二进制文件,最后下载到具体的目标平台上进行运行7。交叉开发模型如图3.1所示。图3.1

14、交叉开发模型本文是以红帽公司发行的Red Hat Enterprise Linux 5作为宿主机的操作系统进行相关软件开发的,使用的交叉编译工具链为友善之臂公司提供的arm-linux-gcc-4.3.2。3.2 Bootloader的移植Bootloader是在操作系统运行之前执行的一小段程序,它在系统上电时开始执行,初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备6。可以把Bootloader当成PC机的BIOS来理解。嵌入式系统的硬件存在很大的差异性, Bootloader对硬件有很大的依赖性,并且Bootloader引导的操作系统也可能

15、不同,所以在嵌入式世界中建立一个通用的Bootloader是不可能的,不过由于大部分Bootloader任然具有很多共性,所以某些Bootloader也能支持多种不同架构的处理器和操作系统。例如,U-Boot就可以同时支持PowerPC、ARM、MIPS和X86等体系结构。U-Boot是遵循GPL条款的开放源码项目。而今U-Boot作为一个主流Bootloader,已经成功地被移植到包括PowerPC、ARM、X86、MIPS、NIOS、XScale等主流体系结构上的百种开发板,成为功能最多、灵活性最强,开发性最积极的开源Bootloader。本文将选取U-Boot作为开发板的Bootload

16、er。在开始移植U-Boot之前,应该分析手上的U-Boot源代码已经支持的开发板,选择出硬件配置最接近的开发板作为参考。选择的原则为,首先选择MCU相同的开发板,如果没有,则选择MPU相同的开发板作为参考,这样能大大的降低移植的难度。本文使用的U-Boot版本为u-boot-2009.06,由于U-Boot目前还不支持S3C2440处理器,所以移植的时候可以我们将以SBC2410开发板为参考,移植的工作就是针对S3C2440和s3c2410的不同,以及SBC2410和GQ2440开发板外设的不同做相应的修改。以下为移植的详细步骤:(1)添加新的配置选项。在U-Boot的顶层目录的Makefi

17、le文件中定义了所有开发板的配置选项,首先应该为开发板添加新的配置选项,参照SMDK2410的配置,加入如下语句:gq2440_config: unconfig $(MKCONFIG) $(:_config=) arm arm920t gq2440 NULL s3c24x0开发板配置选项中各项的含义如下:arm:表示CPU的架构是ARM体系结构。arm920t:表示CPU的内核类型,对应cpu、arm920t子目录。NULL:这位用于表示开发商者或经销商。S3c24x0:片上系统定义。 (2)在board目录下创建开发板目录,并添加文件。在board目录下存放着许多U-Boot支持的开发板的子

18、目录,进行移植时要为具体的开发板建立目录并添加相应文件。这里建立gq2440目录并把用于参考移植的sbc2410x目录下的内容全部拷贝到gq2440目录下,此外还要把拷贝过来的文件内容进行修改,进入gq2440目录,把sbc2410x.c文件重命名为gq2440.c。gq2440.c是本文选用的开发板GQ2440相关的代码,它是由sbc2410x.c直接复制来的所以需要针对GQ2440开发板的硬件特性做修改。 (3)为开发板添加新的配置文件。当我们修改好gq2440.c文件后,还应该进入include/configs目录为我们的开发板添加配置文件,可以直接复制一份SBC2410x开发板的配置文

19、件sbc2410x.h,再把它重命名为gq2440.h,然后再根据GQ2440开发板的具体情况进行修改。(4)配置和编译。当完成前面的步骤后就可以进行编译了,执行:make gq2440_config命令将会配置好开发板,接着执行:make CROSS_COMPILE=arm-linux- 命令系统将开始编译U-Boot,编译成功后会得到U-Boot的映像,即可把其下载到开发板上。3.3 Linux内核的移植内核移植主要是指操作系统从一种硬件平台转移到另一种硬件平台上运行。对于嵌入式系统来说,有各种体系结构的处理器平台,使用的外围硬件也不一样。嵌入式Linux严重依赖于具体硬件,所以只要硬件平

20、台有略微差别,也需要做一些移植的工作。3.3.1 Linux内核移植步骤在移植内核前需要在主机上安装好Linux操作系统,以完成对内核代码的配置和编译的工作,本文采用主机安装虚拟机并在虚拟机安装Linux的方法。作为主机,虚拟机安装的是Ret Hat公司发行的 Ret Hat Enterprise Linux 5。本文使用的硬件开发板是GQ2440,GQ2440是参照友善之臂公司设计的Mini2440进行扩展设计的,硬件电路完全相同,自从Linux-2.6-31开始,Linux内核已经官方支持Mini2440,但官方的支持还是很有限。其实Mini2440是参考三星公司的SMDK2440设计而来

21、的,它们的核心电路基本是一样的,而且内核对SMDK2440的支持非常丰富,所以本文将使用Mini2440的配置并以SMDK2440为参考进行移植Linux内核的移植。以下将对移植的步骤进行详细的讲解。(1) 获取源代码。Linux的源代码是开源的,可以到Linux的官方网站: http:/www.kernel.org/上去下载Linux源代码,本文使用的源代码为Linux-2.6-32.2。下载好源代码后我们可以把源代码解压到指定目录,例如执行以下命令我们可以把Linux解压到/home/wusong 目录:tar xvzf linux-2.6-32.2.tar.gz C /home/wuso

22、ng。解压完后,在/home/wusong目录下将生成一个 Linux-2.6.32.2目录。(2)指定交叉编译变量。Linux内核缺省配置的目标平台是X86的,要使内核能在运行在ARM平台上,需要进入Linux-2.6.32.2目录,修改总目录里的Makefile文件。打开Makefile文件找到以下信息:export KBUILD_BUILDHOST : = $(SUBARCH)ARCH ? = $(SUBARCH)CROSS_COMPILE ? =把它改为:export KBUILD_BUILDHOST : = $(SUBARCH)ARCH ? = armCROSS_COMPILE ?

23、= arm-linux-其中,ARCH是指定目标平台为ARM,CROSS_COMPILE是指定交叉编译器,这里指定为系统默认的交叉编译器。(3) 替换BSP。Linux对于特定的硬件平台的软件就叫做BSP (Board Support Package)。我们进入linux-2.6.32.2/arch/arm/mach-s3c2440 目录可以看到有一个mach-mini2440.c文件,这就是外国的开发者对Mini2440设计的BSP,因为它对Mini2440的支持十分有限,所以可以不使用它,把它删掉。而以SMDK2440的BSP为参考,把linux-2.6.32.2/arch/arm/mac

24、h-s3c2440 目录下得mach-smdk2440.c复制一份,重命名为mach-mini2440.c,既可使用新的mach-mini2440.c作为GQ2440的BSP。(4)修改BSP。在GQ2440开发板上使用的晶振是12MHz,而SMDK2440使用的是16.9344MHz,所以我们要修改BSP指定的系统时钟源,打开mach-mini2440.c,把static void _init smdk2440_map_io(void)函数内的16934400改为12000000。再把smdk2440_machine_init(void)函数中的smdk_machine_init()函数删掉

25、。这时候可以回到Linux-2.6.32.2的源代码根目录下分别执行如下命令:#make mini2440_defconfig;#make zImage;mini2440_defconfig是官方自带的对mini2440的配置。执行make zImage命令后将开始编译内核,编译完成后将在在arch/arm/boot目录下生成内核文件在zImage。这时把zImage下到开发板里,通过串口终端可以看到内核是能正常启动的,但由于大部分驱动都没添加,也没有根文件系统,所以还无法登陆,开发板上资源也还不能正常使用。所以接下来还应该为具体的硬件移植相应的硬件驱动程序。3.3.2 Flash驱动的移植F

26、lash存储器在嵌入式系统中是必不可少的,它是Bootloader、Linux内核、文件系统和数据的最佳载体。在Linux内核中,引入了MTD(Memory Technology Device,内存技术设备)层为NOR Flash和NAND Flash设备提供统一的接口,从而使得Flash驱动的设计工作大为简化9。在GQ2440开发板上有256M的NAND Flash存储芯片。Linux内核在MTD的下层实现了通用的NAND驱动(主要通过 driver/mtd/nand/nand_base.c文件实现),所以要实现NAND Flash的驱动并不需要太大的工作量。S3C2440的NAND Fla

27、sh驱动是以platform驱动的形式实现的,在执行probe()函数时,初始化nand_chip实例并运行nand_scan()函数扫描NAND Flash设备,最后调用add_mtd_partitions()函数添加BSP文件中定义的分区表。因此只要在mach-mini2440.c中定义和注册分区表和相关硬件信息即可完成NAND Flash的移植工作。 首先应在mach-mini2440.c加入的是NAND Flash的分区表的代码:static struct mtd_partition friendly_arm_default_nand_part = 0 = .name = bootlo

28、ader, .size = 0x00040000, .offset = 0, , 1 = .name = param, .offset = 0x00040000, .size = 0x00020000, , 2 = .name = Kernel, .offset = 0x00060000, .size = 0x00500000, , 3 = .name = rootfs, .offset = 0x00560000, .size = 1024 * 1024 * 1024, / , 4 = .name = nand, .offset = 0x00000000, .size = 1024 * 102

29、4 * 1024, / ;接下来还应把开发板的NAND Flash设置表和NAND Flash本身的一些特性注册进内核,分别在mach-mini2440.c中加入以下代码:static struct s3c2410_nand_set friendly_arm_nand_sets = 0 = .name = NAND, .nr_chips = 1, .nr_partitions = ARRAY_SIZE(friendly_arm_default_nand_part), .partitions = friendly_arm_default_nand_part, ,;static struct s3

30、c2410_platform_nand friendly_arm_nand_info = .tacls = 20, .twrph0 = 60, .twrph1 = 20, .nr_sets = ARRAY_SIZE(friendly_arm_nand_sets), .sets = friendly_arm_nand_sets, .ignore_unset_ecc = 1,;为了使NAND Flash正常工作,还需把NAND Flash设备注册到系统中,把Nand Flash设备注册到系统只要将其放入mach-mini2440.c中定义的mini2440_devices数组即可。除此外我们还应该

31、把NAND Flash的一些特性传递给驱动,首先在driver/mtd/nand目录下找到NAND Flash的驱动程序:s3c2410.c,打开文件,在函数static int s3c2410_nand_setrate(struct s3c2410_nand_info*info)中添加如下代码:struct s3c2410_platform_nand * plat = info-platform ;再在mach-mini2440.c中的函数static void _init mini2440_machine_init(void)里面添加如下代码:S3c_device_nand.dev.platform_data = &mini2440_nand_info ;最后重新编译内核即可完成了NAND Flash驱动的移植。3.3.3 LCD驱动的移植对嵌入式视频播放器来说。LCD显示器自然是必不可少的,Linux-2.6.32.2内核已经支持S3C2440的LCD控制器驱动,只要在mach-mini2440.c中注册具体的LCD硬件参数即可完成LCD驱动的移植工作。GQ2440开发板使用的是统宝的3.5英寸真彩色TFT液晶屏,分辨率为320x240,带触摸屏的。图3.2为TFT屏的时序图:图3.2 TFT屏时序上图中的VCLK、HSYNC、V

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2