毕业设计(论文)-mp3播放器设计.doc_第1页
毕业设计(论文)-mp3播放器设计.doc_第2页
毕业设计(论文)-mp3播放器设计.doc_第3页
毕业设计(论文)-mp3播放器设计.doc_第4页
毕业设计(论文)-mp3播放器设计.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I 成 都 东 软 学 院 毕毕 业业 设设 计 论计 论 文 报文 报 告告 校内实习使用 校内实习使用 2012 年 10 月 20 日 2013 年 6 月 1 日 系 别 计科系 专业班级 嵌入式二班 学 号 学生姓名 指导教师 成都东软学院毕业设计 论文 1 摘摘 要要 二十一世纪是信息技术的时代 信息的交流量非常大 这就会使人们在计算机面前 工作的时间大大增加 因而增加了人们的负担和压力 再加上飞快的生活节奏 物质生 活的逐步改善 更会给人们带来身心的劳累 人们在这种身体状况下去工作 不但效率 不高 而且还很容易犯错 人们对精神层面的需求逐渐增强 因此人们需要一些娱乐和 消遣的软件来减轻压力 消除疲劳 让人们更好的去工作和生活 由于不满足于仅在家 中欣赏电视提供的多媒体 便携的媒体播放器应运而生 本 Mp3 播放器就是为了实现这 个目的而编写的 由于嵌入式 Linux 操作系统功能强大又易于移植 本次设计的是 MP3 播放器应用程 序 就是一个基于嵌入式开发的一个媒体播放器软件 采用嵌入式 ARM9 经典开发平台 关键词关键词 嵌入式系统 Linux Mp3 播放器 AbstractAbstract The twenty first century is the era of information technology information exchange is very large which make people work in front of the computer time is greatly increased thus increasing the people s burden and pressure Coupled with the fast pace of life the gradual improvement of material life but also give rise to physical and mental fatigue physical condition in which people go to work not only inefficient and very easy to make mistakes people on the spiritual demand gradually So people need some entertainment and recreation software to reduce stress reduce fatigue allow people to work and live better Because not content to provide only watch TV at home multimedia portable media players have emerged Due to the embedded Linux operating system powerful and easy to transplant The design of the MP3 player application is a development based on an embedded media player software using the classical embedded ARM9 development platform KeyKey Words Words Embedded systems Linux Mp3 player 成都东软学院毕业设计 论文 3 目 录 引 言 III 第 1 章 绪论 1 1 1 开发嵌入式 MP3 播放系统的目的 1 1 2 开发嵌入式 MP3 播放系统的意义 1 第 2 章系统方案及嵌入式 LINUX 环境的搭建 2 2 1 嵌入式系统方案的设计 2 2 2 嵌入式 LINUX环境的搭建 2 第 3 章 硬件开发平台及其操作系统的构建 3 3 1 开发平台的硬件资源 3 3 2 开发平台的体系结构 5 3 3 开发平台硬件间的工作流程 6 3 4 开发平台操作系统的搭建 7 3 4 1 U Boot 的编译 7 3 4 2 烧写 U boot 8 3 4 3 内核 kernel 的编译与烧写 8 3 4 4 根文件系统的制作 9 第四章MP3 播放器的制作与移植 11 4 1 MADPLAY原理 11 4 2 移植到 TX2440 开发板上 11 4 2 1 编译文件 11 4 2 2 移植 madplay 到 TX2440 12 结束语 13 致 谢 14 参考文献 15 附 录 16 引 言 我本次的毕业设计论文主要有两个目的 一是对我大学三年专业知识的整合和完成 毕业应有的毕业设计论文 二是当今社会人们的工作生活压力非常大而且时间非常的紧 张 心理学家经研究后发现听歌可以让人放松 由于现在人们的生活节奏快没有很多单 独的时间去唱歌听歌 所以我这次毕业设计设计便携式 MP3 方便人们随时都能听到优美 的音乐从而来放松自己 由于我的专业是嵌入式所以我打算把 MP3 镶嵌到我们的汽车 手机 机器人等各种设备中方便人们在各种地方都方便听音乐来放松自己 因为嵌入式 Linux 操作系统功能强大又易于移植 所以我本次设计的是 MP3 播放器 应用程序 就是一个基于嵌入式 ARM9 开发的一个媒体播放器软件 采用 S3C2440 经典开 发平台 基于嵌入式 ARM9 开发的 本软件所具有的功能就可以满足一般用户的要求 本软件能支持所有 MP3 格式的音频文件 这些文件在网上都很容易找得到 根据个人的 不同喜好 可以下载自己喜欢的 MP3 歌曲类型进行播放 因为音乐能使人们的神经放松 消除疲累 使人们有更好的状态工作和生活 成都东软学院毕业设计 论文 5 第 1 章 绪论 1 11 1 开发嵌入式开发嵌入式 MP3MP3 播放系统的目的播放系统的目的 二十一世纪是信息技术的时代 信息的交流量非常大 这就会使人们在计算机面前 工作的时间大大增加 因而增加了人们的负担和压力 再加上飞快的生活节奏 物质生 活的逐步改善 更会给人们带来身心的劳累 人们在这种身体状况下去工作 不但效率 不高 而且还很容易犯错 人们对精神层面的需求逐渐增强 因此人们需要一些娱乐和 消遣的软件来减轻压力 消除疲劳 让人们更好的去工作和生活 由于不满足于仅在家 中欣赏电视提供的多媒体 便携的媒体播放器应运而生 1 21 2 开发嵌入式开发嵌入式 MP3MP3 播放系统的意义播放系统的意义 社会信息化 智能化 网络化高速发展的今天 嵌入式系统技术也随之提高 嵌入 式 Linux 操作系统功能强大又易于移植 嵌入式产品渗入各个行业 如图 1 1 所示 嵌 入式系统开发无疑成为当今最热门最有发展前途的 IT 领域之一 图 1 1 嵌入式产品渗入各个行业 由于嵌入式 Linux 操作系统功能强大又易于移植 本次设计的是 MP3 播放器应用程 序 就是一个基于嵌入式 ARM9 开发的一个媒体播放器软件 采用 S3C2440 经典开发平台 基于嵌入式 ARM9 开发的 本软件所具有的功能就可以满足一般用户的要求 本软件能支 持所有 MP3 格式的音频文件 这些文件在网上都很容易找得到 根据个人的不同喜好 可以下载自己喜欢的 MP3 歌曲类型进行播放 因为音乐能使人们的神经放松 消除疲累 使人们有更好的状态工作和生活 成都东软学院毕业设计 论文 第 2 章系统方案及嵌入式 Linux 环境的搭建 2 12 1 嵌入式系统方案嵌入式系统方案的设计的设计 嵌入式系统开发环境建立在一台主机 pc 上 开发是使用主机上的交叉编译 汇 编及连接工具形成在目标板上可以运行的二进制代码 然后下载到板子上运行 本设计 的宿主机 Linux 操作系统是建立在 Linux Red Hat 9 0 虚拟机中 这样可以灵活的与 我们熟悉的 Windows 操作系统进行数据共享 加快开发速度 之后在宿主机上设置各种 环境变量 建立交叉编译调试的环境 移植到开发板 2 22 2 嵌入式嵌入式 LinuxLinux 环境的搭建环境的搭建 嵌入式 Linux Embedded Linux 是指对 Linux 经过小型化裁剪后 能够固化在容量 只有几十万字或几十字节的存储器芯片或单片机中 应用于特定嵌入式场合的专用 Linux 操作系统 通常它的体积小 性能稳定 源代码免费 将大大减少开发商的成本 更具 市竟争力 最基本的嵌入式 Linux 系统需要 4 个基本元素 1 u boot 移植 包括固化在固件 中的启动代码和 Bootloader 两大部分 用于完成机器加电后的系统定位引导 2 LINUX 系统内核的编译和烧写 为嵌入式应用提供一个软件环境 为应用程序完成基本 的底层的资源管理工作 3 根文件系统的制作 操作系统中负责管理和存储文件信息 的软件机构 4 为了最小嵌入式系统具有一定的实用性 还需加上硬件驱动程序及一 个或几个应用进程以提供必要的应用功能支持 成都东软学院毕业设计 论文 7 第 3 章 硬件开发平台及其操作系统的构建 3 13 1 开发平台的硬件资源开发平台的硬件资源 我们采用的硬件开发平台为 S3C2440 经典开发平台 1 核心板 S3C2440 核心板 S3C2440 ARM CPU 64M SDRAM 64M NAND FLASH 通过 280Pin 精 密插座与主板连接 核心板上可以配置 2M 或 4M 容量的 Nor Flash AM29LV160 320 硬 件支持从 NorFlash 启动并可增加 NandFlash 容量 PXA270 核心板 PXA270 XScale CPU 64M SDRAM 64M NAND FLASH 16M Nor FLASH 经典平台的核心板接口设计完全兼容博创的 PXA270 核心板和 S3C2440 核心板 在软件支持下 两个核心板在经典开发平台主板上均可以实现大部分硬件功能 完全可 以替换原有的 2440 S 和 270A 系列产品 2 双 100M EtherNet 网卡 由两片 DM9000AE 构成的双网卡 一般可只用其一 3 4 HOST 1 DEVICE USB 接口 从 CPU 的主 USB 口扩展为 4 个 由 AT43301 构成 USB HUB USB 从口保持处理器本身的 1 个 4 3 UART IrDA 2 个 RS232 串口 另有 1 个 RS485 串口 1 个 IrDA 收发器 均从处理器的 UART2 引出 由 CPLD 内部逻辑进行选择 5 168Pin EXPORT 提供一个 168Pin 扩展卡插槽 引出所有总线信号和未占用资 源 6 LCD 和 VGA 接口 标配 8 寸 16bit 真彩屏 同时预留一个 24bit 接口 扩展 了 VGA 接口和 AV 接口 可以连接 VGA 显示器 7 TouchScr 采用 2440 内部 ADC 构成的控制和转换电路 或者 PXA270 的 AC97 CODEC 芯片的触摸屏控制器 二者根据核心板的不同由软件设置 CPLD 逻辑进行选择 8 AUDIO CODEC 采用 UDA1341 和 UCB1400 二者根据核心板的不同由软件设置 CPLD 逻辑进行选择 具有放音 录音和线路输入等功能 功放电路由 LM386 构成 板载 扬声器可播放音频 9 PS2 KEYPAD 使用 ATMEGA8 单片机控制 2 个 PS2 接口和板载 17 键小键盘 两 个 PS2 可接 PC 键盘和鼠标 10 LED 扩展 2 个数码管和 1 个 8x8 点阵发光管显示器 均由 CPLD 逻辑驱动 11 POWER SUPPLY RESET RTC 等必须资源 经典平台主板集成了 UP LINK 调试 成都东软学院毕业设计 论文 电路 可以直接用并口电缆连接计算机进行仿真 下载等 12 ADC 板载 3 个电位器 同时在板上设模拟电压输入专用接口 13 IDE CF 卡插座 扩展有笔记本硬盘接口和 PCCARD 模式的 CF 卡接口电路 使 用 CPLD 芯片实现 PCCARD 逻辑 14 SD 卡插座 从 CPU 扩展 SD 接口 15 IC 卡 也由 ATMEGA8 单片机控制 16 直流电机 扩展直流电机驱动电路 由 PWM 控制 带有红外线测速电路 17 CAN BUS 设置 1 个 CAN 口 采用 MCP2510 和 TJA1050 芯片构成 18 DA 输出 采用 MAX504 SPI 总线操作 输出模拟电压 19 设置了 PWM DA IIC 存储器 IO 控制 LED 和可产生硬中断的按键等简单调试 资源 20 可以提供配套的 GPRS GPS FPGA WLAN USB2 0 RFID 指纹识别等扩展板 成都东软学院毕业设计 论文 9 3 23 2 开发平台的体系结构开发平台的体系结构 S3C2440 开发平台的体系结构如图 1 2 所示 图 1 2 体系结构 成都东软学院毕业设计 论文 3 33 3 开发平台硬件间的工作流程开发平台硬件间的工作流程 S3C2440 开发平台的工作流程如图 1 3 所示 图 1 3 工作流程 成都东软学院毕业设计 论文 11 3 43 4 开发平台操作系统的搭建开发平台操作系统的搭建 3 4 13 4 1 U BootU Boot 的编译的编译 在 U boot 的 board 目录下就是其支持的开发板 数量非常多 这里我们选择 2440 开 发板 1 在 board 下建立开发板目录 修改 Makefile 文件 添加我们自己开发板的配置 信息 在 Makefile 中找到 TX2410 的配置信息 在下面加上与 TX2440 相关的信息 2 建立开发板的头文件 TX2440 h 再把所有的文件全部删除 只留 TX2440 h 用以 下命令建立 TX2440 h cp include configs TQM866M h include configs Giga Switch h 3 建立 TX2440 开发板的私有目录 即把 TX2410 目录下的所有文件拷贝到 TX2440 目录下 包括 Makefile 4 设置编译工具 我们使用的是 3 4 1 版本 所以要在 Makefile 文件里做相应的 修改 将 ifeq ARCH PPC CROSS COMPILE powerpc linux 修改为 ifeq ARCH arm CROSS COMPILE arm linux 5 执行 make 如果可以完成 u boot 编译的全过程 说明 TX2440 移植框架成功建立 但是显然现 在编译生成的这个 U boot bin 仍然不适合我们的开发板 实际上它还是为 TX2410 开发 板设计的源代码 结合具体开发板修改文件 一般来说 虽然 U boot 可以支持很多开发板 但 是在开发时有些文件还是要注意结合开发板的具体信息来修改 以下是需要注意修改的几 个地方 SDRAM 的设置 在 board TX2440 lowlevel init S 中 检查 define B6 BWSCON DW32 位宽为 32 根据 HCLK 设置 SDRAM 的刷新参数 主要是 REFCNT 寄存器 开发板 HCLK 为 100M 将 define REFCNT 0 x1113 改为 define REFCNT 0 x4f4 将 FCLK 设为 400MHz 分频比为 FCLK HCLK PCLK 1 4 8 修改 board TX2440 TX2440 c 中的 board init 函数 在程序开头增加一行 DECLARE GLOBAL DATA PTR 这样才可以使用 gd 变量 修改 get PLLCLK 函数 支持 NAND Flash 首先在配置文件 include configs TX2440 h 的宏 CONFIG COMMANDS 中增加 CFG CMD NAN 再在 include configs TX2440 h 的最后面增加 3 个宏 其次 board nand init 函数定义 board nand init 需要自己编写 在 成都东软学院毕业设计 论文 cpu arm920t s3c24x0 下新建 nand flash c 编写之前 需要针对 S3C2440 NAND Flash 定 义一些数据结构和函数 在 include s3c24x0 h 中增加 S3C2440 NAND 数据结构 定义 2440 的函数 static inline S3C2440 NAND const S3C2440 GetBase NAND void return S3C2440 NAND const S3C2410 NAND BASE 在 cpu arm920t s3c24x0 nand flash c 中添加代码 是从 Linux 2 6 13 中 drivers mtd nand s3c2410 c 中移植过来的 修改 cpu arm920t s3c24x0 Makefile COBJS 加上一项 nand flash o 支持网卡芯片 DM9000 在 driver 下 有网卡驱动 DM9000 x c 和 DM9000 x h 网卡 芯片 DM9000 接在 BANK4 位宽 16 在 include configs TX2440 h 中设置网卡的基地址 在 drivers 目录下 只留 nand nand legacy dm9000 x c dm9000 x h 和 Makefile 文件 其他文件全部删除 修改 Makefile 文件 将顶层目录下没用的 lib x 文件夹删除 只留 lib arm 和 lib generic 文件 然后 设置一下 Linux 启动参数就可以了 运行执行 make TX2440 config make all 生成生成支持 NAND Flash 和网卡芯片 DM9000 的 u boot bin 文件 3 4 23 4 2 烧写烧写 U bootU boot 将编译后生成的 u boot bin 文件烧入 NAND Flash 中运行 3 4 33 4 3 内核 内核 kernelkernel 的编译与烧写 的编译与烧写 我们在网上下载内核源码并解压源码 进入目录 linux 2 6 31 修改 Makefile 文件 指定系统硬件架构 交叉编译器 修改时钟和修改机器码 根据实际情况 这个要和 bootloader 的匹配 接下来配置文件 在配置菜单中选择这一项 Load an Alternate Configuation File 输入 2440 的默认配置 arch arm configs s3c2410 defconfig 配置完后 回到主菜单 选择这一项 save an Altenate configuration File 输入 要保存的配置文件名称 config 默认 编译内核 make zlmage 编译后 会在 arch arm boot 下生成 zimage 内核镜像文件 把 zimage 镜像烧进 nandflash 跑一下 检 查是否正常打印出信息 支持 NandFlas h 修改 arch arm plat s3c24xx common smdk c 文件 这里我们要 成都东软学院毕业设计 论文 13 使 nandflash 同时支持 64M 256M 或更高容量 接下来修改 Nand 读写匹配时间 这个 改不改应该问题都不大 是根据 Nand 的读写特性相关的 也就是查芯片资料得到的值 每种 Nand 的值都不一样 修改 Kconfig 文件 在配置时选择 NAND 类型 修改 driver mtd nand Kconfig 配置内核 支持 NandFlash 启动时输出 S3C24XX NAND Driver c 2004 Simtec Electronics s3c24xx nand s3c2440 nand Tacls 1 10ns Twrph0 3 30ns Twrph1 1 10ns s3c24xx nand s3c2440 nand NAND hardware ECC NAND device Manufacturer ID 0 xec Chip ID 0 xda Samsung NAND 256MiB 3 3V 8 bit Scanning device for bad blocks Creating 3 MTD partitions on NAND 256MiB 3 3V 8 bit 0 x000000000000 0 x000000100000 boot 0 x000000120000 0 x000000520000 kernel 0 x000000520000 0 x000010000000 yaffs2 支持 yaffs2 文件系统 下载 yaffs2 源码并解压 进入 yaffs2 目录 给内核打上 yaffs2 文件系统的补丁 这时内核源码 fs 目录下多了一个 yaffs2 目录 同时 Makefile 文件和 Kconfig 文件也增加了 yaffs2 的配置和编译条件 配置对 yaffs2 支持这部分配 置比较多 可根据自己的需要进行配置 把不用的文件系统都去掉就可以了 支持 LCD 内核里已经有很完善的 LCD 驱动了 只要根据所用的 LCD 进行简单的修改 在内核源码 drivers video s3c2410fb c 是 LCD 驱动的源码 首先要设置 LCD 的时钟频 率 在 s3c2410fb display 结构体中加入了 setclkval 变量 我们需要在结构体原型中 加入这个变量 在 arch arm mach s3c2410 include mach fb h 中第 40 行加入 unsigned setclkval clkval 修改 LCD 参数配置并屏蔽掉第 150 行的语句 配置内 核 支持 LCD 支持声卡 1 在网上下了一个 uda1341 的驱动文件 s3c2440 uda1341 c 稍作修改后 把它放到 linux2 6 14 sound oss 目录下 2 修改 oss 目录下的 kconfig 文件 以便 在我们下面配置内核的时候可以选中它 3 修改 Makefile 文件 修改增加内存映射 以使内核知道该虚拟地址可用 而且对应的物理地址是我们的声卡 修改 arch arm mach s3c2410 smdk s3c2410 4 配置完毕后 在 make menuconfig 后 选 择 driver sound oss uda1341 即选择对声卡的支持 成都东软学院毕业设计 论文 3 4 43 4 4 根文件系统的制作根文件系统的制作 创建根文件系统目录 bin etc dev home lib mnt pot proc root sbin sys tmp usr var 建一个名为 root 2 6 31 在文件夹下创建以上目录 编译 busybox 修改 Makefile 文件 执行 make menuconfig 进行配置 busybox 配置选项大部 分都是保持默认的 然后执行 make make install 就会在上一级目录下生成 rootfs 文 件夹 里包含几个文件 bin sbin usr linuxrc 把这些文件全部复制到刚建好的 root 2 6 31 目录下 用命令 cp rf root 2 6 31 实现 接下来开始制作文件系 统 在 dev 目录下 创建设备节点 进入 etc 目录 添加文件 拷贝 Busbox 1 15 2 examples bootfloopy etc 和 etc passwd etc group etx shadow 到当前目录下 修改 inittab fstab init d rcS 和 profile 文件内容 新建 sysconfig 文件夹 在里面新建 HOSTNAME 文 件 内容为 TX2440A 进入 lib 目录 然后拷贝交叉编译的库文件到 lib 目录下 文件 系统的框架已经做好 把制作好的文件系统烧写进 Nandflash 中的 yaffs2 镜像文件 我 们使用编译好的 mkyaffs2image 工具 把解压出来的可执行文件复制到 usr bin 目录下 最后制作文件系统镜像 root 2 6 31bin 就是 yaffs2 文件系统镜像 要先修改它的权限 否则该文件无法被复制 把 root 2 6 31 bin 下载到 nandflash 中的文件系统分区中如 果文件系统能正常挂载 终端会打印出 Please press Enter to activate this console Processing etc profile Done 成都东软学院毕业设计 论文 15 第四章MP3 播放器的制作与移植 4 14 1 MadplayMadplay 原理原理 madplay 是 linux 上的一个开源 mp3 播放器 是一个高精度 MPEG 音频解码库 支持 MPEG 1 Layer I Layer II 和 LayerIII 也就是 MP3 标准 它利用 libmad 库进行 mp3 软解码 libmad 提供 24 bit 的 PCM 输出 完全定点计算 使用 libmad 提供的一 系列 API 就可以非常简单地实现 MP3 数据解码工作 在 libmad 的源代码文件目录下 的 mad h 文件中 可以看到绝大部分该库的数据结构和 API 等 madplay 基于 libmad 还做了一些扩展功能 比如将 mp3 格式转成别的音频格式如 wav 等 又集成了 libid3tag 库进行 mp3 信息显示 非常适合在没有浮点支持的嵌入式硬件平台上使用 libmad 主要数据结构如表 4 1 所示 表 4 1 libmad 主要数据结构 主要数据结构作用 struct mad stream 存放解码前的 Bitstream 数据 struct mad synth 存放解码合成滤波后的 PCM 数据 struct mad pcm 定义了音频的采样率 声道个数和 PCM 采样数据 用来初始化音频 struct mad frame 记录 MPEG 帧解码后 PCM 数据的数据结构 其中的 mad Header 用来记录 MPEG 帧的基本信息 比如 MPEG 层数 声道模式 流比特率 采样比特率 声道模式 包括单声道 双声道 联合立体混音道以及一般立体 声 4 24 2 移植到移植到 TX2440TX2440 开发板上开发板上 4 2 14 2 1 编译文件编译文件 我们需要在 home 下先建立两个文件夹 一个存放源码 一个存放安装文件 即 madplay src 和 madplay 文件夹 依次解压四个源码包到 madplay src 目录下 1 编译 zlib 1 1 4 成都东软学院毕业设计 论文 使用命令 configure prefix home madplay 进入 madplay 目录 配置 configure 文件并修改 Makefile 文件中的内容 CC arm linux gcc AR arm linux ar rc RANLIB arm linux ranlib make make install 2 编译 libid3tag configure CC arm linux gcc host arm linux prefix home madplay CPPFLAGS I home madplay include LDFLAGS L home madplay lib make make install 3 编译 libmad configure CC arm linux gcc host arm linux prefix home madplay CPPFLAGS I home madplay include LDFLAGS L home madplay lib make make install 4 编译 madplay configure CC arm linux gcc host arm linux prefix home madplay CPPFLAGS I home madplay include LDFLAGS L home madplay lib make 5 静态编译 以上是用动态编译的方法 程序运行时需依赖动态库文件 也可以采用静态编译的 方法 将静态库编译到程序中 运行时不需要动态库文件 在配置 libid3tag libmad madplay 时 加上参数 disable shared enable static 即 可静态编译 madplay 编译完成后只需将 madplay 复制到根文件系统 usr bin 目录下 不需要复制动态库 4 2 24 2 2 移植移植 madplaymadplay 到到 TX2440TX2440 编译完成后在 madplay 0 15 2b 目录下生成 madplay 的可执行文件 需要的动态库 有 libmad so 0 libid3tag so 0 libm so 6 和 libc so 6 四个库 查看 usr lib 目录 中有没有 libm so 6 和 libc so 6 库文件 如果没有 则将其拷贝到 usr lib 目录下 libmad so 0 和 libid3tag so 0 文件是在 madplay lib 下生成的 也需要拷贝到 usr lib 下 最后 将 madplay 也复制到根文件系统 usr bin 目录下 找一个 MP3 文 成都东软学院毕业设计 论文 17 件也放在某一目录下 在开发板上执行 madplay 程序 madplay XXX mp3 MPEG Audio Decoder 0 15 2 beta Copyright C 2000 2004 Robert Leslie et al s3c2440 uda1341 superlp audio set dsp speed 44100 prescaler 66 Title XX Artist XXX Album XXXX Track XX Comment XXXXXXXXX s3c2440 uda1341 superlp audio set dsp speed 44100 prescaler 66 成都东软学院毕业设计 论文 结束语结束语 开发嵌入式 MP3 的价值在于它的可移植性强 可以将 MP3 镶嵌到各个产 品和各个行业从而解决了产品的单一化和提高了产品的商业价值 此款 MP3 是在嵌入式 Linux 环境下搭建的 这样的好处在于嵌入式系统 开发环境建立在一台主机 pc 上 开发是使用主机上的交叉编译 汇编及连 接工具形成在目标板上可以运行的二进制代码 然后下载到板子上运行 本设 计的宿主机 Linux 操作系统是建立在 Linux Red Hat 9 0 虚拟机中 这样可以 灵活的与我们熟悉的 Windows 操作系统进行数据共享 加快开发速度 之后在 宿主机上设置各种环境变量 建立交叉编译调试的环境 移植到开发板 此款 MP3 在于便于移植 能够固化在容量只有几十万字或几十字节的存储 器芯片或单片机中 应用于特定嵌入式场合的专用 Linux 操作系统 通常它的 体积小 性能稳定 源代码免费 将大大减少开发商的成本 更具市竟争力 但是略感遗憾的是除了选择歌曲和显示歌名外 此播放器没有诸如随意弹奏乐 曲 乐曲节奏跳动等功能 而随着人们生活水平的不断提高 单片机控制无疑 是人们追求的目标之一 要为现代人工作 生活提供更好的更方便的服务就需 要从单片机技术着手 一切向着数字化控制 智能化控制方向发展 成都东软学院毕业设计 论文 19 致致 谢谢 这次毕业设计得到了很多老师 同学的帮助 其中我的指导教师董祥千老师 对我的关心和支持尤为重要 每次遇到难题 我最先做的就是向董老师寻求帮 助 而董老师每次不管忙或闲 总会抽空来找我面谈 然后一起商量解决的办 法 另外 感谢校方给予我这样一次机会 能够独立地完成一个课题 并在这个 过程当中 给予我们各种方便 使我们在即将离校的最后一段时间里 能够更 多学习一些实践应用知识 增强了我们实践操作和动手应用能力 提高了独立 思考的能力 最后再一次对我的母校表示感谢 再一次感谢所有在这次毕业设计中给予过 我帮助的人 同时也感谢学院为我提供良好的做毕业设计的环境 以及在设计 中被我引用或参考的论著的作者 感谢在整个毕业设计期间和我密切合作的同 学 和曾经在各个方面给予过我帮助的伙伴们 在大学生活即将结束的最后的 日子里 我们再一次演绎了团结合作的童话 把一个庞大的 从来没有上手的 课题 圆满地完成了 成都东软学院毕业设计 论文 参考文献参考文献 1 陈亮 裴海龙 伍越 基于 Linux 系统的 USB 摄像头视频播放实现 J 现代电子技术 2008 24 93 98 2 罗贤全 尚朝轩 高勤 开发 Linux 嵌入式应用程序 微计算机信息 J 测控自动化 2004 20 6 67 68 3 潘影波 王健 Rusty Lynch MIDLinux 新一代播放器的设计与实现 J 计算机技术与 发展 2009 19 2 202 204 4 杜春雷 arm 体系结构与编程 M 北京 清华大学出版社 2004 5 W Richard Stevens Stephen A Rago Unix Programming in the UNIX Environment 2nd edition M 译者 尤晋元 张亚英 戚正伟 译 北京 人民邮电出版社 2006 47 68 6 Wim Taymans Steve Baker Andy Wingo Ronald S Bultje and Stefan Kost GStreamer Application Development Manual 0 10 21 3 M Open Publication License 2009 7 Jon Masters Richard Blum Professional Linux Programming M Wiley Publishing Inc 2007 319 340 成都东软学院毕业设计 论文 21 附 录 include include include include include include include include include include include include include include include include include include include include include include include include 成都东软学院毕业设计 论文 define IDM FILE 1000 define IDM OPENFILE 1001 define IDM ADDFILE 1002 define IDM HELP 1003 define IDM ABOUT 1004 define IDM EXIT 1005 define IDC HELP ABOUT 1006 define IDC ABOUT BUT 1007 define IDC PLAY 1008 define IDC PAUSE 1009 define IDC CONT 1010 define IDC PREV 1011 define IDC NEXT 1012 define IDC LISTVIEW 1013 define IDC TRACKBAR 1014 define IDM LIST 1015 define IDM OPENLIST 1016 define IDM SAVELIST 1017 define WORD 100 typedef struct list node char file WORD struct list node next struct list node prev node pnode 成都东软学院毕业设计 论文 23 pnode head NULL pnode tail NULL pnode node tmp FILEDLGDATA pfdd 指定初始化数据及用户选择的文件信息 static int id child 子进程 static int id tmp 孙子进程 int key count static int count mp3 文件个数 static HWND hListView 列表句柄 表头数据 static char capion artist title year genre track id3 text content artist id3 text content title id3 text content year id3 text content genre id3 text content track 获取 ID3 信息并存入相应变量 static void getid3 char file id3 tag list taglist id3 content content 成都东软学院毕业设计 论文 taglist mp get tag list from file file content mp get content taglist tag MP ARTIST artist mp parse artist content content mp get content taglist tag MP TITLE title mp parse title content content mp get content taglist tag MP YEAR year mp parse year content content mp get content taglist tag MP GENRE genre mp parse genre content content mp get content taglist tag MP TRACK track mp parse track content 插入子项目数据 static void show item HWND hList PLVITEM lvItem int i LVSUBITEM subdata SendMessage hList LVM ADDITEM 0 LPARAM lvItem i lvItem nItem subdata flags 0 subdata image 0 subdata nItem i subdata subItem 0 subdata pszText artist text SendMessage hList LVM SETSUBITEM 0 LPARAM subdata subItem 1 subdata pszText title text SendMessage hList LVM SETSUBITEM 0 LPARAM 成都东软学院毕业设计 论文 25 subdata subItem 2 subdata pszText year text SendMessage hList LVM SETSUBITEM 0 LPARAM subdata subItem 3 subdata pszText genre text SendMessage hList LVM SETSUBITEM 0 LPARAM subdata subItem 4 subdata pszText track text SendMessage hList LVM SETSUBITEM 0 LPARAM 创建双向循环链表 将歌曲添加入链表中 pnode create list char file LVITEM item if head next NULL strcpy head file file else pnode new new pnode malloc sizeof node if new NULL perror malloc exit EXIT FAILURE strcpy new file file tail next new 成都东软学院毕业设计 论文 new prev tail tail new tail next head head prev tail getid3 file item nItemHeight 25 SendMessage hListView MSG FREEZECTRL TRUE 0 item nItem count show item hListView SendMessage hListView MSG FREEZECTRL FALSE 0 count count 1 播放函数 void play pnode node HWND hWnd node tmp node prev while 1 node tmp node tmp next if vfork 0 id tmp getpid if execl madplay madplay node tmp file NULL 0 button 成都东软学院毕业设计 论文 WS VISIBLE BS DEFPUSHBUTTON WS TABSTOP WS GROUP 25 0 24 24 IDC PAUSE 0 button WS VISIBLE BS DEFPUSHBUTTON WS TABSTOP WS GROUP 50 0 24 24 IDC CONT 0 button WS VISIBLE BS DEFPUSHBUTTON WS TABSTOP WS GROUP 75 0 24 24 IDC PREV 0 trackbar WS VISIBLE TBS NOTIFY TBS TIP 365 0 100 24 IDC TRACKBAR 0 listview WS VISIBLE WS BORDER WS CHILD WS VSCROLL WS HSCROLL 5 26 460 230 IDC LISTVIEW table 0 关于对话框模板 static DLGTEMPLATE aboutcs WS BORDER WS CAPTION WS EX NONE 100 100 160 120 成都东软学院毕业设计 论文 关于 0 0 2 控件数 NULL 0 关于对话框控件 static CTRLDATA aboutcls CTRL STATIC WS VISIBLE SS LEFT 10 10 140 50 IDC HELP ABOUT EDGEplayer n 史上最烂 MP3 播放器 0 CTRL BUTTON WS VISIBLE WS TABSTOP BS DEFPUSHBUTTON 40 60 80 25

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论