1、I 本科毕业论文 (科研训练、毕业设计 ) 题 目: 流行音频解码的嵌入式移植 姓 名: 学 院:软件学院 系: 软件工程 专 业:软件工程 年 级: 学 号: 指导教师(校内): 职称: 指导教师(校内): 职称: 指导教师(校外): 职称: 年 月厦门大学本科毕业论文 II 流行音频解码的嵌入式移植 摘要 本文以 S3C2410 作为目标平台,介绍 WMA 音频 解码程序的优化 和 移植。首先提出项目的背景和目标,接着, 介绍 系统的软硬件开发平台以及相关开发工具。然后,针对S3C2410 目标平台的特性,提出优化 WMA 解码 程序 的总体方案。重点阐述通过浮点转定点、空间换时间以及汇编
2、等方案来优化 MPlayer 中 WMA 解码 程序 的详细过程。最后,以图表的形式对优化前后 WMA 解码速度进行对比,体现出优化的效果,并提出进一步的优化方案。 关键词 WMA 解码优化 浮点转定点 S3C2410 MPlayer 厦门大学本科毕业论文 III Transplantation of popular audio decoder to Embedded System Abstract In this paper, we describe the optimization and transplantation of WMA audio decoder to S3C2410 pl
3、atform. Firstly, we point out the background and meaning of the project. In succession, we introduce the hardware platform, software platform and related tools about this project. According to the characteristic of S3C2410, we bring forward the total methods to optimizing WMA decoder. Then, we descr
4、ibe that using convert of float point number to fixed point number; using space to save time and using assemble language to optimize WMA decoder of mplayer in details. Finally, we compare the primary WMA decoder with the optimized WMA decoder through diagrams and tables; showing the optimized result
5、 of WMA decoder. According to the result, we introduce the advanced optimized methods to optimize WMA decoder in MPlayer. Key words optimizing WMA decoder float number to fixed number S3C2410 MPlayer 目录 IV 目录 第一章 引言 . 1 1 1 项目背景和意义 . 1 1 2 总体设计目标 . 2 第二章 软硬件开发平台以及开发工具简介 . 3 2 1 硬件平台 . 3 2 2 软件平台 . 6
6、 2 2 1 MPlayer 介绍 . 6 2 2 2 mplayer.c 中 main函数框架 . 6 2 2 3 MPlayer 中的 WMA 解码程序 . 8 2 2 4 GDB+GdbServer 远程调试工具 . 9 第三章 MPlayer 的移植以及 WMA 解码优化方案的提出 .12 3 1 MPlayer 的移植 .12 3 2 提出 WMA 解码优化方案 .13 第四章 详细优化过程 .14 4 1 浮点运算转定点运算 .14 4 1 1 浮点数与定点数 .14 4 1 2 定点化原理 .16 4 1 3 关键运算的实现 .19 4 1 4 定点化 WMA 解码库 .22 4
7、 2 空间换时间 .25 4 3 汇编优化 .25 第五章 优化结果 .32 第六章 结束语 .35 致谢语 .36 参考文献 .37 附录 .38 Contents V Contents Chapter 1 Preamble . 1 1 1 The Background and Meaning of The Project. 1 1 2 Total Designal Object . 2 Chapter 2 Software Platform, Hardware Platform and Related Tools of The Project. 3 2 1 Hardware Platfor
8、m . 3 2 2 Software Platform . 6 2 2 1 Introduction of MPlayer. 6 2 2 2 The Frame of Main Function in mplayer.c . 6 2 2 3 WMA Decoder Program in MPlayer. 8 2 2 4 Remote Debug Tool GDB+GdbServer . 9 Chapter 3 Transplatation of MPlayer and Introducing Methods of Optimizing WMA Decoder .12 3 1 Transplat
9、ation of MPlayer.12 3 2 Introducing Methods of Optimizing WMA Decoder .13 Chapter 4 Particular Process of Optimization.14 4 1 Converting Float Number to Fixed Number.14 4 1 1 Float Number and Fixed Number.14 4 1 2 The Principle of Fixing .16 4 1 3 The Implement of Important Calculation .19 4 1 4 Fix
10、ing WMA Decoder .22 4 2 Using Space to Save time .25 4 3 Using Assemble Language to Optimize .25 Chapter 5 The Results of Optimization .32 Chapter 6 Summary .35 Acknowledgement .36 References .37 Supplement .38 第一章 引言 1 第一章 引言 随 着计算机技术的迅速发展,嵌入式设备在 信息家电、 仪器仪表、 数据网络、工业控制、医疗卫生 和 航空航天等众多领域得到了 广泛 的应用 , 巨
11、大的市场需求 也促使了嵌入式软硬件技术的不断进步。 近年来,在各类电子消费产品中, 嵌入式数字音频设备受到了广大消费者的青睐。 因此,开发一个嵌入式音频播放设备, 既可以单独应用 ,也可以作为其他系统的子模块, 具有广泛的应用前景 和实际意义 。 1 1 项目背景 和意义 这次毕业设计,我参加了 Mediatek厦门大学软件学院嵌入式多媒体联合实验室 的一个实习项目 流行音频解码的嵌 入式移植。 该项目 以 fft-2410 实验箱 ( S3C2410)作为目标平台 , 实现 MP3 和 WMA 等音频解码程序的优化和移植。 我主要负责 WMA 音频 解码模块 , 在这里, 先从软硬件等方面来
12、对该项目背景做个简要介绍。 在硬件方面, ARM 体系作为嵌入式系统设计的通用处理器内核,具备高性能、低功耗、易扩展的特点,尤其是 ARM9 系列微处理器在高性能和低功耗特性方面提供了最佳的性能,并且也提供了很好的综合功能,能够满足许多嵌入式系统的应用需求。 目前,市场上比较多的 ARM9 芯片 是 S3C2410。 使用 S3C2410 作为目标 平台,在性能 和价格等方面都比较合理。 在软件方面, MPlayer 是一个面向 Linux操作系统的媒体播放软件。它不仅 支持各种各样的输出设备 ,而且 支持几乎全部的流行媒体格式,包括 WMA 音频格式 。 MPlayer 是开源软件, 使用
13、它 的解码库来解码 WMA 文件, 便于我们对源代码进行修改和优化, 使其符合我们的系统开发要求。 在多媒体音频方面, WMA( Windows Media Audio) 是微软公司推出与 MP3 格式齐名的一种 音频压缩格式,支持 Stream 流技术和版权保护。 WMA 即使在较低的采样频率下也能产生较好的音质。这些特性使得 WMA 音频文件得到了广泛的应用,尤其适用于数字电台架设、在线试听等领域。 从以上几个方面的分析可知, 以 S3C2410 作为目标平台, 优化 MPlayer 中的 WMA 音频解码程序, 最终移植到目标平台, 不仅具有可行性,而且 具有广泛的应用前景和意义。流行音
14、频解码的嵌入式移植 2 这个项目严格按照 实习项目 的要求来开发, 最终要应用到实际项目中 , 具有 现实 应用意义 。另外, 该项目的开发具有一定的难度,涉及的知识面广, 参与这个项目的开发,也能使我各方面的能力得到进一步的提高。 1 2 总体设计目标 我们以 S3C2410( FFT 2410 实验箱)为目标平台,把 MPlayer 移植到目标平台上,用来播放 WMA 音频文件 ,最终实现 WMA 音频解码的嵌入式移植 。 对于没有优化的 WMA解码库, 如果在目标平台上, 解码速度不够快, 再通过 浮点运算转定点运算、空间换时间以及汇编等 优化方案,对 MPlayer 中的 WMA 解码
15、库进行优化,最终在 S3C2410 目标平台上,使得 WMA 的解码速度得到显著提升,甚至能够流畅播放 WMA 音频文件。 与 PC 机上 应用系统 的 开发不同,在嵌入式系统开发中,软件和硬件结合的比较紧密,应用程序的开发必须严格按照 目标系统的特性来进行。 因此,在开发中,要 先了解 开发环境以及目标 系统的特性 ,然后 针对 这些特性来进行开发。 第二章 软硬件开发平台以及开发工具简介 3 第二章 软硬件开发平台以及开发工具简介 绝大多数 Linux 软件开发都是以 native 方式进行的,即本机( HOST)开发、调试,本机运行的方式。这种方式 通常不适合于嵌入式系统的软件开发,因为
16、对于嵌入式系统 开发 来说 ,没有足够的资源在本机(即 目标系统 )运行开发工具和调试工具。通常, 嵌入式系统的软件开发采用一种交叉编译调试的方式。所谓的交叉编译就是:利用运行在某机器上的编译器编译某个源程序生成在另一台机器上运行的目标代码的过程。交叉编译调试环境建立在宿主机(即一 台 PC 机)上,对应的开发板叫做目标板。 运行 Linux 的 PC(宿主机)开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。调试时可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器
17、提供的支持做出选择。在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的 PC 机作宿主开发机,对于嵌入式 LINUX,宿主机上的操 作系统一般要求为 REDHAT LINUX。嵌入式开发通常要求宿主机配置有网络,支持 NFS(为交叉开发时 mount 所用)。然后要在宿主机上建立交叉编译调试的开发环境,最主要的就是安装交叉编译器。 因此,在这一章里 将 介绍 S3C2410、 MPlayer 等软硬件开发平台以及相关开发工具。 2 1 硬件平台 宿主机( PC)我们采用通常的个人计算机, 操作系统使用 REDHAT L
18、INUX 9.0,在安装的时候,选择了全部安装,保证具备了各种服务 (比如: NFS) 。 目标板 我们采用 fft-2410 实验箱, 如图 2-1 所示 , 它是由傅立叶电子科技有限公司设计生产的 ARM9 的嵌入式电脑平台,它基于三星公司的 ARM 处理器 S3C2410, 适用于设计移动手持设备类产品,具有高性能、低功耗、接口丰富和体积小等优良特性。 fft-2410 正是基于此芯片本身的各种特点而设计的。 流行音频解码的嵌入式移植 4 图 2-1 fft-2410 实验箱 S3C2410 使用 ARM920T 内核,该内核是 ARM 公司系列微处理器核的一种,它采用5 阶段管道化技术
19、,同时配备了 Thumb 扩展、 Embedded ICE 调试技术和 Harvard 总线,内部带有全性能的 MMU( 内存处 理单元 ) 。在生产工艺相同的情况下,性能可达 ARM7TDMI 的 2 倍以上。 S3C2410 芯片 不具有 FPU(浮点运算单元),在 S3C2410 执行浮点运算实际上是通过软浮点的形式来实现的, 即通过调用目标平台上的 Float Point Emulator 软件来模拟浮点运算。这样一来,当程序对浮点运算要求较高时, 就有必要减少浮点运算或者把浮点运算转化为定点运算,从而使程序在目标平台上的执行效率得到提高。 在 硬件上 , fft-2410 采用核心板
20、与接口分离的形式,将 S3C2410 的最小 系统高度集成在核心板上,而系统的外 围设备,以太网络、视频、音频、 SD 卡等则从地板上引出。 fft-2410 实验箱 硬件描述: S3C2410: 16/32bit ARM920T内核; 标准工作频率: 203MHz; 运算能力: 220MIPS; 最高工作频率: 266MHz; 系统时钟:内部 PLL 产生 200 266MHz CPU 内核工作频率; 外部总线频率: 100 133MHz ; FlashRom:核心板 64Mbyte NandFlash; 第二章 软硬件开发平台以及开发工具简介 5 SDRAM:核心板 64Mbyte(可升级
21、至 128Mbyte); LCD 控制器: CPU内置 STN/CSTN/TFT LCD 控制器,支持 1024*768 分辨率下的各种液晶 VGA 接口(需选配 VGA 卡) ; 触摸屏控制器: CPU 内置 4 线制电阻式触摸屏控制器 ; UART: 2 通道 RS232 串口 ; RS485: 1 路 ; USB 主口: 4 个 ; USB 从口: 1 个 ; SD/MMC 卡接口 : 1 个 ; RTC 实时时钟:具备后备电池插座 ; IIC 接口的 EEPROM: 1 个 ; A/D: 8 通道, 500KSPS 采样, 12 位分辨率 ; D/A: 2 通道, 8 位 ; SPI:
22、 2 通道 SPI高速同步串行口 ; IIS 音频输入 /输出接口 ; 麦克风输入接口 : 1 个 ; 1W 扬 声器 : 1 个 ; 中断和测试按键: 4 个 ; 10M 以太网口 : 1 个 ; 10M/100M 以太网口 : 1 个 ; 多功能扩展口: 32bit 数据总线 /bit 地址总线 /片选、读写、中断等系统控制总线 ; 8 X 8 LED 矩阵 : 1 组 ; 数码管: 2 个 ; 流水 LED 灯 : 4 个 ; JTAG:接口 ; 高速 CAN 总线接口 2 路,总线模式 ; 直流电机: 1 个 ; 一路 IDE 接口,可完成硬盘挂接测试试验; 支持的操作系统: WINCE /Linux/uCOS-II。 在软件上, fft-2410 采用了韩国 MIZI 公司所公布的开放源代码的免费嵌入式 操作系统