基于S3C244O_的MP3设计报告.docx_第1页
基于S3C244O_的MP3设计报告.docx_第2页
基于S3C244O_的MP3设计报告.docx_第3页
基于S3C244O_的MP3设计报告.docx_第4页
基于S3C244O_的MP3设计报告.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

基于s3c2440的mp3播放器设计报告设计者:陆伟学号:100603138指导老师:耿 鹏设计时间:2013.8.182012.9.13前 言随着社会的日益信息化,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人来说,需要的已经不再仅仅是那种放在桌上处理文档、进行工作管理和生产控制的计算机机器。任何一个普通人都可能拥有从小到大的各种使用嵌入式技术的电子产品,小到mp3、pda 等微型数字化产品,大到网络家电、智能家电、车载电子设备等。目前,各种各样的新型嵌入式系统设备在应用数量上已经远远超过了通用计算机。在工业和服务领域中,使用嵌入式技术的数字机床、智能工具、工业机器人、服务机器人正在逐渐改变着传统的工业生产和服务方式。mp3是现实生活娱乐中最常见的工具,但是mp3也是嵌入式的最主要应用之一。一个成型的mp3具有开始、暂停、继续播放、下一曲、循环列表等功能。本文重点讨论基于s3c2440的mp3的功能的实现,包括开发环境的建立、内核的配置与编译以及代码的流程与解释。近几年,嵌入式系统技术得到了广泛的应用,普适计算、无线传感器网络、可重构计算等新兴技术的出现又为嵌入式系统技术的研究与应用注入了新的活力。智能手机、信息家电、汽车电子、家用机器人嵌入式系统已“无处不在”。嵌入式系统是当今最热门的概念之一。作为一个系统,往往是在硬件和软件双螺旋式交替发展的支撑下逐渐趋于稳定和成熟,嵌入式系统也不例外。嵌入式系统的最初应用是基于单片机的。20 世纪70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能,更容易使用、更快、更便宜。这些装置已经初步具备了嵌入式的应用特点,但是这时的应用只是使用8 位的芯片,执行一些单线程的程序,还谈不上系统的概念。从20 世纪80 年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入式应用软件,这使得开发人员可以进一步缩短开发周期,降低开发成本并提高开发效率。1981 年,ready system 开发出世界上第一个商业嵌入式实时内核(vtrx32)。这个实时内核包含了许多传统操作系统的特征,包括任务管理、任务间通信、同步与相互互斥、中断支持和内存管理等功能。此后,一些公司也纷纷推出了自己的嵌入式操作系统,如integrated system incorporation(isi)的psos、windriver 的vxworks 和qnx 公司的qnx等。这些嵌入式操作系统都具有嵌入式的典型特点:它们均采用占先式的调度,响应的时间很短,任务执行的时间可以确定;系统内核很小,具有可裁剪性、可扩充性和可移植性,可以移植到各种处理器上;较强的实时性和可靠性,适合嵌入式应用。这些嵌入式实时多任务操作系统的出现,使得应用开发人员从小范围的开发中解放出来,同时也促使嵌入式有了更为广阔的应用空间。20 世纪90 年代以后,随着对实时性要求的提高,软件规模不断上升,实时内核逐渐发展为实时多任务操作系统(rtos),并作为一种软件平台逐步成为目前国际嵌入式操作系统的主流。这时更多的公司看到了嵌入式系统的广阔的发展前景,开始大力发展自己的嵌入式操作系统。除了上面的几家老牌公司以外,还出现了palm os、windows ce、嵌入式linux、lynx、nucleus 以及国内的hopen、delta os 等嵌入式操作系统。随着嵌入式技术的发展前景日益广阔,相信会有更多的嵌入式操作系统软件出现。根据ieee(国际电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。不过,上述定义并不能充分体现出嵌入式系统的精髓。目前,国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础,软硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算。一般而言,嵌入式系统的构架可以分成4 个部分,即处理器、存储器、输入/输出(i/o)和软件(由于多数嵌入式设备的应用软件和操作系统都是紧密结合的,在这里对其不加区分,这也是嵌入式系统和windows 系统的最大区别)。从前面对嵌入式系统所作的定义可以看出嵌入式系统的几个重要特征。(1) 系统内核小,由于嵌入式系统一般应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。例如enea 公司的ose 分布式系统,内核只有5kb,而windows 的内核则要大得多。(2) 专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌,同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的升级是完全不同的概念。(3) 系统精简。嵌入式系统一般没有系统软件和应用软件的明显区别,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。(4) 高实时性的操作系统软件是嵌入式软件的基本要求。而且软件要求固化存储,以提高速度。软件代码要求高质量和高可靠性。(5) 嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行;但是为了合理地调度多任务,利用系统资源、系统函数以及专家库函数接口,用户必须自行选配rtos 开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。第一章 总体方案设计 1.1 项目介绍本次项目是在linux操作系统中,在飞凌s3c2440开发板上,运用c语言编写的一个mp3的程序。目前主要实现的功能的是:1、 将 start与pause 功能集中在key1上。2、 将 continute 功能置于key2中。3、 将 next one功能置于key3中。4、 将 prev功能置于key4中。整体思路是:在ubunto中编写c程序并且利用arm-linux-gcc指令将写好的可执行文件移植到已装有linux内核的飞凌的s3c2440的开发板上,并且将按键驱动以及madplay在开发板上整合起来就可以实现一个简易的mp3播放器了。1.2 硬件平台介绍采用飞凌s3c2440开发板,飞凌s3c2440开发板是飞凌有限公司开发的嵌入式系统开发平台,本开发板采用的是arm9系统芯片s3c2440作为主控芯片,搭配3.2英寸液晶触摸屏,以及自带音频解码芯片,配有丰富的硬件接口,是当今最热门的开发开发平台之一。是当今最热门的开发开发平台之一。该开发板可以实现车载gps,以及mp3 音乐播放器,mp4 视频播放器等高端消费电子产品。用本开发板实现mp3 播放器的整体思路是,在移植操作系统的基础上,只需添加sd 卡相关驱动和液晶触摸屏的相关驱动,便可以轻松挂载sd 卡外设,实现sd 卡中文件的快速读取,并通过相关软件设计出又好的图形用户接口,用户只需通过触摸屏幕,便可实现和平台的交互。并且,tq2440 开发板自带音频解码芯片uda1341,能够完全胜任mp3 文件的解码工作。音频设备pcs3c24401.3 软件平台介绍1.3.1 vmware workstation由于linux 的兼容性差,目前很多常用软件并不支持在linux 平台上运行,这就导致如果直接安装linux,那么在linux 环境中,将会有很多不便。因此,我们在此采用虚拟机下安装linux 的方案。虚拟机的工具我们选择vmware workstation。vmware workstation 允许操作系统(os)和应用程序(application)在一台虚拟机内部运行。虚拟机是独立运行主机操作系统的离散环境。在 vmware workstation中,你可以在一个窗口中加载一台虚拟机,它可以运行自己的操作系统和应用程序。你可以在运行于桌面上的多台虚拟机之间切换,通过一个网络共享虚拟机(例如一个公司局域网),挂起和恢复虚拟机以及退出虚拟机 这一切不会影响你的主机操作和任何操作系统或者它正在运行的应用程序。vmware workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发测试部署新的应用程序的最佳解决方案。vmware workstation 可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。对于企业的 it 开发人员和系统管理员而言,vmware 在虚拟网路,实时快照,拖曳共享文件夹,支持 pxe 等方面的特点使它成为必不可少的工具。1.3.2 madplay介绍mp3 技术使音乐数据压缩比率大,回放质量高,较小数据量和近乎完美的播放效果使其在网络上传输得以实现。随着mp3 播放器的出现及其技术的发展,对mp3 播放器的要求越来越高,制造商在选型、设计、开发、附加功能和适用领域等方面做了很多努力,设计了多种方案。对mp3 文件进行解码可以采用软件解码和硬件解码两种方法。 硬件解码如采用专用解码芯片mas3507d,实现简单但增加硬件成本。软件解码需占用大量cpu 时间。实现难度较大,但硬件成本低、处理灵活。madplay 是友善之臂移植的一个基于控制台下的mp3 播放器。它有多种播放控制模式,可以运行“madplay -h”查看其使用帮助。其移植过程主要包括源代码的获取,相应库的安装,详细过程如下所示:(1)准备源代码。可以到http : //project/showfiles.php?qroup id=12349 下载madplay源代码和相关依赖包:madplay-0.15.2b.tar.gzlibid3tag-0.15.2b.tar.gzlibmad-0.15.2b.tar.gz(2) 安装zlib-1.2.3。新建目录install。作为库文件的安装路径。解压zlib-1.2.3.tar.gz,在当前目录下生成的zlib-1.2.3目录就是zlib-1.2.3源代码所在路径。$ mkdir install$ tar xzvf zlib-1.2.3.tar.gz编译zlib-1.2.3。进入zlib-1.2.3目录,在交叉编译时需要修改makefile文件的cc=arm-linux-gcc,profix=$(pwd)/install,然后进行编译。$ make$ make install(3) 编译安装libid3tag-0.15.2b。解压libid3tag-0.15.2b.tar.gz,在当前目录下生成的libid3tag-0.15.2b目录就是安装目录。使用configure命令配置库编译选项,包括c编译器、编译选项、链接选项和安装路径等,然后用arm编译工具交叉编译libid3,将编译好的库安装到指定目录下,然后用以下目录安装到指定目录下。$ make$ make install(4) 编译安装libmad-0.15.2b。解压libmad-0.15.2b.tar.gz,在当前目录下生成的libmad-0.15.2b就是安装路径。使用configure命令配置库编译选项,包括c编译器、编译选项、链接选项和安装路径等,然后用arm编译工具交叉编译libid3,将编译好的库安装到指定目录下,然后用以下目录安装到指定目录下。$ make$ make install(5)可执行文件的拷贝编译成功后生成的可执行文件madplay在/opt/friendlyarm/mini2440/madplay/target-arm/bin目录下,编译成功后生成的madplay的库文件/opt/friendlyarm/mini2440/madplay/target-arm/lib目录下。将可执行文件放到开发板的/usr/bin目录下将madplay的库文件放到开发板的/usr/lib目录下方法:u盘,nfs,ftp等。(6)madplay在开发板上的测试最简单的测试方法在开发板终端输入“madplay xxxx. mp3”,此时将以缺省模式播放xxxx. mp3。在文件系统的“/root/documents”下存放一首名test.mp3,输入#madplay/root/documents/ test.mp3,就能听到美妙的歌曲了。1.4 开发所需知识1.4.1 进程间的通信进程的的定义:(1)进程是程序的一次执行。(2)进程是一个程序及其数据在处理机顺序执行时所发生的活动。(3)进程是程序咋uyige数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。linux下进程间通信有(1)信号(2)管道(3)共享内存(4)信号量(5)消息队列。常见信号含义及默认操作:信号操作的相关函数:其中我们对kill函数的加以说明:1.4.2 交叉编译 安装mware和ubuntu后就可以进行交叉编译环境的设置了。1. 安装标准的c开发环境:sudo apt-get install gcc g+ libgcc1 libg+ make gdb2.解包安装 将arm-linux-gcc-3.4.1.tar.bz2解包: rootlocalhost /#tar jxvf arm-linux-gcc-3.4.1.tar.bz2 -c /注意:c 后面有个空格,并且c 是大写的,它是英文单词“change”的第一个字母,在此是改变目录的意思。在解压的信息中我们可以看到linux将之解压到了/usr/local/arm目录下。 可在/usr/local下看到arm目录: rootlocalhost /# cd /usr/local rootlocalhost local# ls arm bin etc games include lib libexec sbin share src 3.添加交叉编译器环境变量:修改/etc/profile文件: rootlocalhost local# sudo gedit /etc/profile 在末尾添加:if -d /usr/local/arm ; then path=/usr/local/arm/3.4.1/bin:$pathfi 4.使新的环境变量生效。 rootlocalhost local# source /etc/profile 5.检查是否将路径加入path rootlocalhost local# echo $path 若显示的内容中有/usr/local/arm/3.4.1/bin,说明已经将交叉编译器的路径加入path。自此,交叉编译环境搭建完成。 6.测试 简单例子: rootlocalhost local#gedit hello.c -输入: /*hello.c*/ #include int main() printf(hello,world!/n); return 0; -保存退出 rootlocalhost local#arm-linux-gcc hello.c -o hello rootlocalhost local# ls arm bin etc games hello hello.c include lib libexec sbin share src -成功生成hello文件 rootlocalhost local# ./hello bash: ./hello: cannot execute binary file -提示无法执行二进制文件 -file一下hello文件类型 rootlocalhost local# file hello mypdf: elf 32-bit lsb executable, arm, version 1 (sysv), dynamically linked (uses shared libs), for gnu/linux 2.6.14, not stripped -看到没,可执行的arm体系文件 至此,arm-linux-gcc交叉编译环境搭建成功。第二章 软件设计2.1 各软件之间的关系 madplay 是友善之臂移植的一个基于控制台下的mp3 播放器。它有多种播放控制模式,可以运行“madplay -h”查看其使用帮助.madplay是一款开放源代码的音乐播放软件,它是一个独立的应用程序。 按键驱动是用来驱动按键,需要调用。 应用程序实在ubunto上利用arm-linux-gcc生成的可执行文件。其三者的关系如下:音频播放按键按键驱动应用程序madplay当执行可执行文件时候我们需要播放一个.mp3文件,从而这时我们需要madplay播放器的支持,在播放过程中,我们需要通过按键来对mp3进行各种指令的操作,这是我们就需要按键驱动来对应用程序提供支持,从而成功的获取按键。当一切都就绪之后,可执行文件即可以打开.mp3文件,这时madplay将.mp3播放,当需要按键时,可执行文件调用按键驱动,来使按键可以控制播放器从而达到控制播放的功能,最后再通过声卡驱动将音乐播放出来。2.2 应用程序代码的处理流程设计结束play( memory_id,node_tmp);strcpy(next_name, share_tmp-name_tmp);kill(id_test,sigkill)kill(share_tmp-id_tmp,sigkill);play(memory_id,node_tmp)strcpy(next_name, share_tmp-name_tmp);kill(id_test,sigkill)kill(share_tmp-id_tmp,sigkill);kill(share_tmp-id_tmp, sigcont)kill(share_tmp-id_tmp, sigstop)first_key=0play(memory_id,head)id_test = fork();first_key=1play_flag=1first_key=1first_key按键为key2按键为key3按键为key4按键为key1按键扫描父进程中使用共享内存,获取孙进程中记录的进程id和当前歌曲名遍历整个目录寻找后缀mp3的普通文件 getcwd(cwd_buf,sizeof(cwd_buf)open(/dev/key, 0)开始 2.3 各函数功能介绍pnode create_list(char para40,int n):创建双向链表,将歌曲加入链表中;pnode search_list(pnode head,char para):遍历链表,返回当前播放歌曲所对应的节点;void print_list(pnode head):打印双向链表每一个节点的值;void play(int mem_id,pnode para):播放函数;getcwd(cwd_buf,sizeof(cwd_buf):获取当前目录;while(ptr = readdir(dir) != null) /*查找后缀名为mp3的普通文件 */if(ptr-d_type = 8) & (p=strstr(ptr-d_name,.mp3) != null) strcpy(namei+,ptr-d_name); head = create_list(name,i);print_list(head);/* 监测按键的变化 */ret = select(buttons_fd + 1, &rds, null, null, null); /* 读取按键的值到数组中 */ret = read(buttons_fd, &buf_key, sizeof(buf_key); 第三章 演示过程3.1 在vmware workstation对代码进行交叉编译3.2 打开超级终端并对其进行配置3.3 向s3c2440内加入linu

温馨提示

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

最新文档

评论

0/150

提交评论