音乐播放器的设计与实现.docx
- 文档编号:25139486
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:39
- 大小:1.28MB
音乐播放器的设计与实现.docx
《音乐播放器的设计与实现.docx》由会员分享,可在线阅读,更多相关《音乐播放器的设计与实现.docx(39页珍藏版)》请在冰豆网上搜索。
音乐播放器的设计与实现
第一章绪 论
1.1 背景
随着电子技术的飞速发展,嵌入式设备在各领域的应用越来越广泛,复杂
度也越来越高,对其他开发方法也提出了更多的要求和更大的挑战。
在嵌入式
设备系统开发过程中需要将软件应用与操作系统编译连接成一个整体,然后下
载到目标机上运行,所以,嵌入式设备的开发过程是一个复杂的过程。
MP3作为高质量音乐压缩标准,给音频产业带来了具大的冲击。
MP3技术
使音乐数据压缩比率大,回放质量高。
如CD格式的音乐数据压缩成MP3格式,
音效相差无己,但大小至少可压缩12倍。
由于MP3音乐的较小数据量和近乎完
美的播放效果使其在网络上传输得以实现。
1995年,MP3格式的音乐文件刚在
网络上传播时,主要用Winamp等播放软件进行播放,使MP3音乐无法脱离计算
机进行播放,给音乐欣赏带来了不便。
近几年以来,随着MP3播放器的出现及
其技术的发展,人们对MP3播放器的要求越来越高,制造商在MP3播放器的选
型、设计、开发、附加功能和适用领域等方面做了很多努力,设计了多种方案。
本设计主要是利用ARM技术设计一款新型的MP3播放器。
ARM9 是 ARM 公司的 16/32 位 RSIC 处理器,是适用于普通设备的一种高
性价比的微控制器。
本设计采用的 MCU 是三星公司推出的 ARM9 芯片
S3C2440,具有低价格、低功耗、高性能、超小体积等特点主要适用于中高端
场合,目前在嵌入式系统中正得到日益广泛的应用。
S3C2440 主频高达
400M,片上集成了丰富的资源:
如 IIS(Inter-IC sound)总线与 DMA 控制器,
为与数模转换器(DAC)的连接提供了一种理想的解决方案。
MP3 播放器的设计比较复杂且对处理器的要求较高,因而 MP3 播放器必
须仔细设计以降低成本。
本设计是在 ARM9 平台上设计、实现一个 MP3 播放
器。
第二章系统总体方案
2.1 系统功能
本设计提出了一种基于嵌入式 ARM 处理器硬件平台的 MP3 播放器设计方
法。
此播放器采用 ARM 体系结构中的 ARM9 作为系统控制器,利用外围设备
USB 通用串行接口下载 MP3 歌曲,用 flashcard 存贮 MP3 文件。
主要对 MP3
做了各个方面的功能分析,对硬件设计、软件设计、软件实现、系统编译等方
面做了介绍。
系统的主要部分是音频编码与解码,这是系统设计的核心。
MP3
播放器设计的突出问题就是硬件控制和软件控制,另外还有硬盘控制、键盘控
制、液晶显示,这些控制都是基于一块芯片。
基于 ARM9 的 MP3 播放器设计
的软件体系结构采用分层模式,它包括软件层、硬件层、驱动层、操作系统层、
及 MP3 播放器应用层。
主要实现歌曲的播放。
2.2 设计指标
第 1 页
1、MP3工作电压为具有3.3V左右,电流250mA,具有音频解码和播放功能。
2、通过USB接口与大容量外部存储设备进行数据传输,能实现网络播放与
下载、触摸屏输入功能。
3.操作界面统一管理功能,支持mp3格式、wma格式,该MP3播放器除具
有播放音乐外还附有歌词同步等功能。
4、MP3在不充电的情况下待机2小时。
2.3 系统总体结构设计
嵌入式微处理器采用三星公司生产的ARM9处理器S3C2440,处理器采用
ARM9处理器,它具有小体积、低功耗、低成本、高性能的特点是嵌入式微处
理器的理想选择。
同时,ARM9处理器可以运行嵌入式操作系统,处理速度足
够软件解码,扩充性好,是目前理想的解决方案。
本设计的系统总体结构如图
2.1。
三星公司推出的基于ARM9内核32位RISC嵌入式微处理器S3C2440,最高
可运行在200MHz。
该芯片的功能强大,完全能够满足MP3定点或浮点解码程序
的实现,还能够将Linux操作系统移植进入该芯片,实现包括播放MP3在内的多
进程,多任务处理,是一种理想的解决方案。
硬件部分软件部分
电
源
USB
接
口
复
位
电
路
初始化、驱动程序
带触摸屏的LCD
音频编解码
S3C2440
微处理器
Linux
操
作
系
统
应用程序
图形界面
存
储
模
块
以太
网控
制芯
片
串
口
电
路
图2.1系统总体结构图
第三章硬件详细设计方案
3.1 硬件设计说明
系统设计的硬件部分主要包括电源、ARM 微处理器芯片、存储芯片、USB
第 2 页
接口芯片以及音频芯片等。
可归结为两个部分:
(1)微处理器 S3C2440,及其
外围电路,具体包括复位电路,存储模块(包括 FLASH、RAM 和 ROM)、电
源。
(2)系统的外围部分:
音频接口、UART、USB 接口、带触摸屏的 LCD、调
试及下载接口。
音频编解码可以采用 PHILIPS 的 UCB1400 等芯片。
LCD 可以
采用 320X240 的 TFT 液晶显示器,电源则宜用可充电锂电池。
带触摸屏的LCD
以太网控制芯片
复
电
USB
位
接
电
源
口
路
S3C2440
微处理器
UCB1400
数字
音频
接口
FLASHSDRAM
串口
电路
功率放大
喇叭
图 3.1 硬件系统结构图
如上图3.1可知,在此次设计中,MP3主要组成部分是:
CPU、MP3解码部
分、音频放大器、FLASH存储器及SDRAM存储器。
我们所设计的MP3播放器
以微处理器S3C244O为中心,包括外部存储器、串口UART、音频接口、带触
摸屏的LCD、USB接口、复位电路、调试及下载接口。
解码部分由软件完成。
整个播放器整体控制。
此 MP3 播放器的核心是三星公司的 S3C2440 芯片。
系统可以分为核心部
分、音频编解码部分、音频输出、液晶控制等几个部分,此外还有必不可少的
电源管理等部分。
音频编解码可以采用 PHILIPS 公司的 UCB1400 芯片。
LCD
可以采用试验箱上的 TFTLCD 显示器。
硬件设计部分主要是 S3C2440 与
UCB1400 芯片的连接。
具体的模块说明如下。
3.2 处理器模块 S3C2440
S3C2440 是三星公司生产的基于 arm920T 内核的 RISC 微处理器,其主频
可达 203MHz,适用于信息家电、PDA、手持设备、移动终端等领域。
S3C2440
除具备一般嵌入式芯片所具有的总线、SDRAM 控制器和 3 个串口等外设之外,
还具有 TFT LCD 控制器、USBSlave、USB Host、I2C 总线控制器、SPI 控制器、
IIS 音频接口、SD&MMC 存储卡接口等丰富的扩展功能、AD 转换器,有
GPIO(通用 IO 口),还有 nandflash 控制器,这些东西都有一些寄存器来控制。
芯片工作电压 3.3/1.8 V,最高运行速度可达 200 MHz。
由于它是一款专为手持
设备设计的低功耗处理器.因此可以降低手持设备成本,具有较高的性价比。
第 3 页
该芯片是基于 ARM9 而开发的多功能 SOC(signal operation contro1)。
ARM9 是
一种小型、快速、低能耗、集成式的内核 。
它的功能和特性如下:
①具有较高的处理速度,通过内部锁相环,最高可
在 203MHz 的系统时钟下运行;②具有极低的功耗.其核心供电电压为 1.8
V,外围 I/O 口使用 3.3V 电压;③具有 3 种低功耗控制方式,甚至可关闭
CPU 中除唤醒逻辑外的所有功能,极大地降低了功耗;④与其他 arm 器件相比,
S3C2410 片上集成了更多的外设接口,如外部存储控制器、
LCD,DMA,USBl.1,SD,M。
MC 卡控制器、UART,SPI 接口、I2C 总线
控制器和 I2S 总线控制器、I2S 音频接口、PWM 定时器、看门狗、117 个外部
I/O 口、24 个外部中断源、A/D 转换器和触摸屏接口、实时时钟及片上 PLL 的
时钟产生等。
使用集成接口,有利于功能的扩展。
3.3 存储模块
存储模块由一片 64 MB 的 SDRAM 和两片 16 MB 的 Flash 组成,可为系统
提供足够的存储空间。
Flash 存储器是一种可在系统电擦写,掉电后信息不丢失
的存储器。
与 Flash 存储器相比,SDRAM 不具有掉电保持数据的特性,但存取
速度大大高于 Flash 存储器,且具有读/写特性。
因此系统中 SDRAM 主要用作
程序的运行空间、数据及堆栈区。
3.4 音频解码/编码模块
决定 MP3 音质的关键是主控解码器件中的数模转换器(DAC)单元和耳机功
率放大器单元。
DAC 负责把解码的数字音频流转换成可驱动耳机发音的模拟音
频信号;耳机放大器则可把模拟音频信号放大到可驱动耳机的功率。
该系统音
频解码/编码模块采用 PHILIPS 公司的 UCB1400 芯片,UCB1400 的外部接口共
有 48 个管脚,大部分都提供 AC Link、中断、音频、ADC、触屏、功率和其它
接口。
其接口电路图如图 3 所示。
UCB1400 是一种用于音频处理的 20 位立体
声解码/编码器。
它在一个芯片上集成了音频解码/编码功能、一个触屏控制器和
功率管理接口。
10 个通用管脚可进行可编程输入/输出,使得主机控制器可执行
控制功能和监控运行状态。
在此次设计中,UCB1400 主要的作用是音频编解码器与触摸屏控制器,还
有就是对电源管理进行监控。
S3C2440 可通过 IIC 音频接口与 UCB1400 连接。
音频数据
S3C2440
微处理器
音频芯片 扬声器
内存模块
图 3.2 音频模块流程
第 4 页
3.5 网络模块
S3C2440 自身并没有网络控制器,接入以太网时需增加独立的以太网控制
器,在此选用 DM9000 作为以太网控制器。
该器件具有通用的处理器接口、
10M/100M 自适应、4K 双字节静态存取存储器、低功耗、高处理性能,可支持
3.3-5V 的容差。
3.6 带触摸屏的 LCD 模块
显示 MP3 播放控制界面,通过触摸屏实现对播放和暂停,停止,音量递增,
音量递减等功能的控制。
LCD 可以采用试验箱上的 320*240 的 TFT 液晶显示器。
3.7 USB 接口模块
USB 接口模块是连接 U 盘等存储设备为 MP3 播放器提供歌曲来源。
本设计中,主
机是通过主控制器与 USB 设备进行数据传输的,USB 主控制器采用 USB2.0 标
准和开放式主机控制器接口标准,可支持高速和低速的 USB 设备,具备内置的
MCU 和内部缓存,与 CPU 之间有一个静态存储器的接口。
CPU 通过这个接口
进行读写来完成 USB 协议要求的控制和数据收发功能。
USB 主控制器提供一
系列的寄存器,系统通过对这些寄存器可以实现对 USB 主控制器的控制。
3.8 串口电路
此 MP3 提供一个串口,用来调试硬件和软件。
Max232 用来转换电平。
UART 用于开发调试控制和返回调试信息。
3.9 系统复位电路
系统时钟输入由 24.576MHz 的外部晶振提供,而微处理器内核的工作频率
为 66MHz,S3C2440 内部含有 PLL 电路实现倍频,因此,系统由内部 PLL 电
路倍频至 66MHz,供给 CPU 运行。
系统复位信号由 IMP811T 芯片提供,并且
设计了 RESET 按钮,可以在系统运行过程中随时复位操作,便于系统调试。
3.10 电源模块
系统电源由 XC6206P332MR 芯片提供,宜用可充电锂电池。
第四章 系统软件设计方案
总体上来说,系统软件包括操作系统、驱动程序及播放器应用程序 3 部分。
4.1 软件总体设计
第 5 页
在此次设计中,MP3 播放器的软件体系结构采用分层模式,它包括硬件层、
驱动层、操作系统层及 MP3 播放器应用层等,软件体系结构图如下所示 4.1。
Mp3playApplication
LinuxOsFile Syetem Protocal Stack
DiversAudio, USB, HDD, LCD
HardwarePhysical Layer
图 4.1 MP3 播放器的软件体系结构图
从软件角度看,嵌入式 Linux 操作系统分为引导加载程序、内核、文件系
统及用户应用程序 4 部分。
其一用于完成初始化 RAM,初始化串口、设置
Linux 启动参数、调用 Linux 内核映像等功能;其二为特定于具体硬件的定制内
核以及控制内核引导系统的参数;其三为含根目录文件的系统建立 Flash 存储
器设备的文件系统;其四为特定于用户的应用程序,即为播放程序。
软件的核心是 Linux 操作系统。
首先需要设备驱动程序,包括 USB、硬盘
控制、音频控制、LCD 等等。
然后是文件系统。
该设计采用的是通用的 FAT32
文件系统,在对 Windows 平台有很好的兼容性。
硬件层包括了 MP3 播放器所需的物理设备:
USB 接口、音频接口芯片
AC97、3.5 英寸的 TFT 液晶屏等;设备驱动层包括上述各个设备的驱动程序的
编写;操作系统层我们移植了 Linux2.6 的操作系统,由操作系统来统一管理
各个硬件设备;最上层是应用层,我们使用 QT 设计图形用户界面,通过移植
开源的 Madplay 解码器实现对 MP3 文件的解码,播放、音量增减的控制。
此
MP3 播放器软件系统包括驱动程序、操作系统及 MP3 播放器应用程序 3 部分。
4.2 操作系统的实现
在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加
载启动任务就完全由BootLoader来完成。
BootLoader的任务是初始化芯片和主板,
通过修改相应的配置文件和驱动程序就可以实现移植过程中需要创建的开发板
文件。
4.2.1 嵌入式开发环境的搭建
在此次设计中,硬件平台是基于 XSBASE270 试验箱的。
嵌入式开发环境的搭建主要包括以下几个方面,如下:
1、虚拟机安装
安装虚拟机,采用VMware。
2、Linux系统安装
在VMware上安装REDHAT企业版linux操作系统。
安装完毕之后,安装
VMwareTools工具。
第 6 页
3、minicom配置
在启动红帽之前,要设置添加一个串口,设置成功之后,打开linux操作系统,
在终端执行minicom -s命令 ,会出现以下界面:
选择serial port setup,按照以下设置:
设置串口,设置波特率为115200,硬件流
控制设为无。
具体如下:
选择Save setup as dfl
选择Exit即可启动minicom
4、Tftp配置
Tftp是类似于ftp的一个传输协议。
它使用IP和UDP作为子协议。
在目标板上,该协议被会在Bootloader下被用来下
载kernel和文件系统的镜像,传输媒质是以太网,以较高的速度。
安装tftp rpm包的步骤如下:
①安装tftp-server-0.17-9.i386软件包
在终端中输入命令:
rpm -ivh tftp-server-0.17-9.i386.rpm
②修改/etc/xinetd.d/tftp文件,内容如下:
service tftp
{
socket_type = dgram
protocol= udp
wait= yes
user= root
server= /usr/sbin/in.tftpd
server_args= -s /tftpboot
server_args += -s /odm/tftpboot
disable=no
}
第 7 页
5、在根目录下建立/tftpboot文件夹,将要下载的文件放在该目录中即可。
6、bootp配置
引导协议(BOOTP)是一种基于UDP/IP的协议。
这种协议允许正在启动的
主机动态配置而无需用户监督。
BOOTP主要用于客户机从服务器获得自己的IP
地址,服务器的IP地址以及启动映象文件名。
在一个评估板系统中,这些协议通常是和tftp一起使用用来将内核和文件系
统从PC上下载到目标板中。
Bootp主要用来获得目标板和主机的ip信息,以便可
以使用Tftp协议来传输文件。
①安装bootp-2.4.3-7.i386软件包
在终端中输入命令:
rpm -ivh bootp-2.4.3-7.i386.rpm
②在/etc/xinetd.d/目录下建立bootp文件,文件内容如下:
service bootps
{
disable=no
socket_type=dgram
protocol=udp
wait=yes
user=root
server=/usr/sbin/bootpd
}
③在/etc/目录下建立bootptab文件,内容如下
test:
\
ht= 1:
\
ha= 0x123456789a00:
\
#ha=0x123456789999:
\
ip=192.168.0.50:
\
sm=255.255.255.0
④重启xinitd
在终端中输入:
/etc/rc.d/init.d/xinetd restart
7、nfs配置
8、交编译环境配置
交叉编译环境的配置总共分为四个部分:
配置交叉编译环境,然后将交叉编
译工具安装在/opt目录下,试交叉编译环境,测试的时候用file命令查看文件。
4.2.2 Bootloader 烧写
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。
通过这段小
程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬
件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。
因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。
尽管如
此,我们仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定
的 Boot Loader 设计与实现。
下面介绍Boot Loader的烧写过程,以Linux-2.6.22.10内核为例,我们采用的
第 8 页
烧写工具是jflashmm。
具体步骤如下:
将bootloader的映象文件boot拷贝Jflash-XSBase270(jflashmm所在目录),
并利用用Jflash-XSBase270目录中jflashmm程序,将bootloader映象文件boot烧
写到开发板上。
在 Jflash_Xsbase270文件夹下打开一个终端,同时给板子上电,
输入命令:
./Jflashmmboot,即可完成boot的烧写。
指令为:
[root@localhost pxa270] #cdJflash_Xsbase270
[root@localhost Jflash-XSBase270] # ./jflashmmboot
4.2.3 内核、文件系统的烧写
Bootloader 烧写成功后,接下来就进行内核和文件系统的烧写,具体步骤如下:
(1) 开发板上电,进入下载模式
打开 minicom,已经配置好了,拔掉 JTAG 下载线。
按空格键,进入下载模式
按空格键,进入下载模式
按菜单 0,
第 9 页
51Board>set
myipaddr:
192.168.0.50
destipaddr:
192.168.0.100
myhaddr:
00:
02:
88:
8E:
CA:
B1
autoboot:
load kernel; load ramdisk; boot
kernelname:
zImage
fsname :
rootfs.img
delay :
2
按键盘上的 0,进入命令行模式:
[0]Comanndlinemode
51board>set//查看系统状态
将系统属性修改成以上状态
按键盘上的 1,进入命令行模式:
[1] View current configuration,回车。
然后按
2,3,4……等烧写成功后,可看到显示屏亮起来,显示当前的操作系统。
4.4 驱动程序的实现
在嵌入式 Linux 系统中操作设备的方法,是将设备看作一个文件来访问。
用户只需注意对文件的操作。
在嵌入式 Linux 系统中一个设备表示为主设备和
从设备。
Linux 系统的设备分为字符设备、块设备和网络设备 3 种。
字符设备是指存取时没有缓存的设备,块设备的读写都有缓存来支持,并
且块设备必须能够随机存取,字符设备则没有这个要求。
典型的字符设备包括
鼠标、键盘、串行口等;块设备主要包括硬盘软盘设备、CDROM 等,这些设
备要想在操作系统下正常运行,必须配置相应的驱动程序。
在本系统中,Flash
及 USB 属于块设备,AUDIO 及 LCD 属于字符设备。
下面是读写 Flash 存储器
的驱动程序的主要代码:
第 10 页
main()
{char buf[4096],buf2[4096];
int fd1,fd2;
if( ((fd1=open(“/dev/dsk5”,O_RDONLY))= = 1)||
(fd1=open(“/dev/dsk5”,O_RDONLY))= = 1)
printf(“failure on open \n”);
exit();
}
lseek(fdl,8192L,O);
lseek(fd2,8192L,O);
if((read(fd1,buf,sizeof(buf1))= = -1)||(read(fdl,buf1,sizeof(buf1))= = -1)
{
printf(“failure on read \n”):
exit();
}
for(i=0;I < sizeof(buf1);i++)
if(buf1[i] !
= buf2[i])
{
Printf(“diferent at offset%d\n”,i);
exit();
}
printf(“reads match\n”);
}
MP3 解码部分芯片的驱动。
音频驱动程序实现的主要功能是:
(1)系统启动时可以完成芯片的初始化;
(2)具体操作时可以提供给操作系统合适的软件接口。
音频驱动初始化程
序如下:
void STA013_Init(void)
{
if(STA013_SendCommand(RESET_REG,0,0x00))//复位 STA013
STA013_PrintError();
if(STA013_SendCommand(ACT_CON_REG,0,0x00))//未激活状态
STA013_PrintError();
if(STA013_SendCommand(PWR_CON_REG,0,0x00))//上电
STA013_PrintError();
if(STA013_SendCommand(FS_CON_REG,0,
I STA013L_FsValue[SysInfo.SamplingIndex])
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 播放 设计 实现