基于arm的mplayer播放器的移植毕业论文(编辑修改稿)内容摘要:
第二章 系统分析 1. 系统通用模型 MPlayer 能使用众多本地的 Xanim, RealPlayer 和 Win32 DLL 编解码器,可播放 MPEG、 VOB、 AVI、 OGG、 VIVO、 ASF/WMV、 QT/MOV、 FLI、 RM、 NuppelVideo、 yuv4mpeg、 FILM、 RoQ 文件。 MPlayer 的另 一个大的特色是支持广泛的输出设备,它可以在 X1 Xv、 DGA、 OpenGL、 SVGAlib、 fbdev、 Aalib、 DirectFB 下工作,而且你也能使用 GGI 和 SDL(由此使用它们支持的各种驱动模式)和一些低级的硬件相关的驱动模式。 这个播放器能很稳定地播放被破坏的 MPEG 文件,并且它能播放 Windows Media Player 都打不开的有损坏的 AVI 文件,甚至,没有索引部分的 AVI 文件也可以播放。 实现 MPlayer 的嵌入式移植,主要采用以下的模型,即 X86PC 机上 MPlayer 的实现 +S3C2410 开发板上的移植。 如图 21所示: 图 21 MPlayer 的嵌入式移植模型 (1)X86PC 机上 MPlayer 的实现通过编译 MPlayer 源文件、解码库、 GUI 文件、字体文件,完成 X86PC 机上 MPlayer 的实现。 (2)ARM2410s 开发板上的移植 QT 制作播放器的 GUI,并实现多种视频文件的播放。 最终完成向 ARM2410s 开发板的移植工作。 2. 系统主要任务和目标 S3C2410 属于精简指令集 CPU,定点计算,没有 MMX( Multi Media eXtension,多媒体扩展指令集)指令,不支持硬件浮点计算,对大尺寸多媒体的编解码能力仍显不足,因而应用在真正媒体播放场合性能达不到要求。 但 S3C2410 与高端处理器相比价格低廉,通过合理的设计系统软硬件,可以实现低端的视频应用,用于衡量 MPlayer 移植的可行性。 主要研究内容 针对 MPlayer 开源的特性,充分了解 MPlayer 的运行原理。 研究各种视频格式的原理、结构,为 MPlayer 播放这些视频格式提供支持。 实现 X86PC 机向 ARM2410s 平台的移植并调试。 研究 QT 图形界面设计的详细过程。 主要目标 系统操作简单,易于使用。 简洁明了的图形化操作界面能够使操作人员很快地熟悉系统的使用,从而提高用户体验。 因此在开发本系统时力求软件的简单易用性,只需点击按钮即可进行 MPlayer 的控制操作。 可靠性好,系统稳定。 为 加强用户体验,在简化操作的同时,要保证系统 CPU 占用率保持在合理的范围,使视频能正常、流畅地播放。 可维护性好。 各模块相互独立,便于修改和更新。 在实现此系统的过程中尽量遵循开放性标准,提高代码的重用性。 3. 系统结构分析 本次毕业设计基于嵌入式平台的 MPlayer 移植是主要围绕 Linux 主机和ARM2410s 开发板,按照嵌入式开发流程进行的设计与开发。 ARM2410s 开发板作为服务器端,作为 MPlayer 的播放屏幕和控制屏幕。 移植成功的 MPlayer 能够在开发板上实现视频的控制。 Linux机作为监控主机,进行播放信息的监控, CPU 占用等一系列参数的测定。 ARMLinux 端 ARMMPlayer 模块:编译在 ARM2410s 开发板上运行的 MPlayer ARMLinuxgcc 模块:实现 ARM 环境下编译环境的搭建。 MINICOM 模块:实现 X86PC 机与 ARM 端的通信模块。 进行 ARM 端的连接,挂载,运行等操作。 内核烧录模块:重新编译并烧录内核,消除音频 BUG。 X86PC 端 X86MPlayer 模块:采用 GCC 编译器,编译 X86PC 端 能够播放的 MPlayer 版本。 视频格式分析模块:将服务器端播放的视频状态以及 CPU 占用等一 系列参数直观地显示在客户端主机上。 GUI 模块:实现在 ARM410s 开发板上进行视频控制。 Linuxgcc 模块:实现 X86PC 环境下编译器的搭建。 4. 系统选用的开发工具 UPNETARM2410S 嵌入式开发平台 咱们用的是 zlg magicarm2410,和这个博创是 2 个公司出的,不要混淆了 ! 本系统平台采用 Samsung 公司的处理器 S3C2410。 该处理器内部集成 了 ARM 公司 ARM920T 处理器核的 32 位微控制器,资源丰富,带独立的 16KB 的指令 Cache 和 16KB 数据 Cache、 LCD 控制器(最高 4K 色 STN 和 256K 彩色 TFT,一个 LCD 专用 DMA)、 RAM 控制器、 NAND 闪存控制器、 3 路 UART、 4 路带外部请求线的 DMA、 4 个 PWM 定时器和一个内部定时器、看门狗定时器、并行 I/O 口、 8 通道 10 位 ADC、触摸屏接口、一个多主 IIC 总线、一个 IIS 总线控制器、 117 个通用 IO、 24 个外部中断、 2 个 USB 接口控制器、 2 路 SPI,主频最高可达 203MHz、芯片内置 PLL。 在处理器丰富资源的基础上,还进行了相关的配置和扩展,平台配置了 16MB 16 位的 Flash 和 64MB 32 位的 SDRAM。 通过以太网控制器芯片 DM9000E 扩展了一个网口,另外引出了一个 HOST USB 接口。 16/32 位精简指令体系结构,使用支持 ARM 调试的体系结构 ARM920TCPU 核的强大指令集,指令缓存( cache)、数据缓存、写缓冲和物理地址 TAG RAM,减小了对主存储器带宽和性能的影响, ARM 带 MMU( Multi Media eXtension,多媒体扩展指令集)的先进的体系结构,支持 Wince、 Epoc3 Linux。 UPNETARM2410S 嵌入式开发平台如下图 22 所示: 图 22 UPNETARM2410S 嵌入式开发平台 Linux 操作系统 嵌入式操作系统,通常包括与硬件相关的底层驱动软 作为件、系统内核、 设备驱动接口、通信协议、图形界面、标准化浏览器等。 嵌入式操作系统具有通用操作系统的基本特点:能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。 与通用操作系统相比较,嵌 入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用 的专用性等方面具有较为突出的特点。 几种代表性嵌入式 操作系统比较(如下表 21 所列): 表 21 四款嵌入式系统优缺点对比列表 VxWorks 美国 WindRiver 公司于 1983 年设计开发的一种嵌入式实 时操作系统( RTOS),良好的持续发展能力、高性能的内 核以及友好的用户开发环境,在嵌人式实时操作系统领域 逐渐占据一席之地。 具有微内核结构可裁剪;任务管理高 效;任务间通讯灵活;微秒级的中断处理;支持 POSIX 实时扩展标准和多种物理介质及标准完整的 TCP/IP 网络协议等优点。 然而由于是专用操作系统,其价 格昂贵,一般不通供源代码,软件的开发和维护成本都非 常高,支持的硬件数量也有限。 Windows CE 对 Windows 系列有较好的兼容性。 其中 是一种 针对小容量、移动式、智能化、 32 位、了解设备的模块化 实时嵌人式操作系统。 它是从整体上为有限资源的平台设 计的多线程、完整优先权、多任务操作系统。 它的模块化 设计允许它对从掌上电脑到专用的工业控制器的用户电 子设备进行定制。 但是由于没有开放源代码,使应用开发 15 人员很难实现产品定制;在效率、功耗方面表现也并不出 色,占用 过多的系统内存,运用程序庞大;版权许可费也 是厂商不得不考虑的因素。 μ C/OSⅡ μ C/OSⅡ是著名的源代码公开的实时内核,是专为嵌入式 应用设计的,可用于 8位、 16 位和 32 位单片机或数字信 号处理器( dsp)。 主要特点:公开源代码;便于移植; 可固化;可裁剪;占先式;多任务;函数调用与服务的执 行时间具有可确定性。 由于仅是一个实时内核,这就意味 着它不能提供给用户一些 API 函数接口,还有很多工作需 要用户自己去完成。 嵌入式 Linux 嵌入式操作系统的研究热点,最大的特点是 :1 源代码公 开,系统遵循世界标准规范,特别是遵循开放系统互连国 际标准,文档资料齐全可修改性强。 支持多种体系结构, 凡遵循国际标准所开发的硬件和软件,都能彼此兼容。 2 多用户:系统资源可以被不同用户各自拥有使 用,互不影响。 3 多任务: Linux 系统调度每一个进程平 等地访问微处理器。 4良好的用户界面: Linux 向用户提 供了两种界面:命令行界面和图形用户界面。 5 设备独立 性: Linux 内核具有高度适应能力,用户可以修改内核源 代码,以便适应新增加的外部设备。 6丰富的网络功能: Linux 为用户提供了优于 其他操作系统的完善强大的网络 功能。 7 可靠的系统安全: Linux 采取了许多安全技术措 施,包括对读、写进行权限控制、带保护的子系统、审计 跟踪、核心授权等,这为网络多用户环境中的用户提供了 必要的安全保障。 8 良好的可移植性: Linux 是一种可移 植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。 可移植性为运行 Linux 的不同 计算机平台与其他任何机器进行准确而有效的通信提供 了手段。 但是在嵌入式系统上运行 Linux 的一个缺点是 Linux 体系提供实时性能需要添加实时软件模 块,而这些 模块运行的内核空间正是操作系统实现调度策略、硬件中 断异常和执行程序的部分。 一旦出现代码错误就可能会破 坏操作系统从而影响整个系统的可靠性。 对比了几款代表性的嵌入式操作系统的优缺点,发现嵌入式 Linux 各方面有点突出,性价比高,比较合适本毕业设计系统的开发,所以在开发板端和主机端都选用嵌入式 Linux 作为操作系统。 HEX EDIT 十六进制查看器。 进行视频格式的分析,采集,为 MPlayer 播放多种视频格式提供支持。 如图 23 为 HEX EDIT 的用户界面: HEX EDIT 的用户界面 图 23 HEX EDIT 的用户界面 GCC 编译器 Linux 系统下的 GCC(GNU C Compiler)是 GNU 推出的功能强大、性能优越的多平台编译器,是 GNU 的代表作品之一。 GCC 是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高 20%~ 30%。 GCC 编译器能将 C、 C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字, GCC 将生成一个名为 的文件。 在 Linux 系统中,可执行文件没有统一后缀,系统从文件的属性来区分可执行文件和不可执行文件, GCC 则通过后缀来区别输入文件的类别。 使用 GCC 由 C 语言源文件生成可执行文件的过程不仅仅是编译的过程,而要经历四个相互关联的步骤:预处理 (也称预编译, Preprocessing)、[1】 编译 (Compilation)、汇编 (Assembly)和连接 (Linking)。 命令 GCC 首先调用 cpp 进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句 (如宏定义 define 等 )进行分析。 接着调用 cc1 进行编译,这个阶段根据输入文件生成以 .o 为后缀的目标文件。 汇编过程是针对汇编语言的步骤,调用 as 进行工作,一般来讲, .S 为后缀的汇编语言源代码文件和汇编、 .s 为后缀的汇编语言文件经过预编译和汇编之后都生成以 .o 为后缀的目标文件。 当所有的目标文件都生成之后, GCC 就调用 ld 来完成最后的关键性工作,这个阶段就是连接。 在连接阶段,所有的目标文件被安排在可执行程序中的恰当位置,同时,该程序所调用到的库函数也从各自所在的档案库 中连 到合适的地方。 以上就是 GCC 的执行过程。 如图 24 为 GCC 流程结构图: 24 GCC 流程结构图 5. 可行性分析 本次毕业设计是要实现多种播放格式的 MPLAYER 嵌入式移植实现,其中有两个最困难的部分: 由于 MPlayer 和 GCC 编译器不兼容的问题,需要选择合适的 MPlayer。基于arm的mplayer播放器的移植毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。