文档库 最新最全的文档下载
当前位置:文档库 › 基于armmp3播放器_毕业论文

基于armmp3播放器_毕业论文

济源职业技术学院

毕业设计(论文)

题目基于嵌入式ARM9 Mp3播放器的实现

系别信息工程系

专业计算机应用技术

班级应用技术0803班

姓名### 学号8090342 指导教师##

日期二零一零年十二月

I

目录

摘要...................................................................... I ABSTRACT................................................................... II 第1章绪论............................................................ - 1 -1.1开发嵌入式MP3播放系统的目的 (1)

1.2开发嵌入式MP3播放系统的意义 (1)

第2章系统方案及嵌入式LINUX环境的搭建.................................. - 2 -2.1嵌入式系统方案的设计 .. (2)

2.2嵌入式L INUX环境的搭建 (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.1M ADPLAY原理.. (11)

4.2移植到TX2440开发板上 (11)

4.2.1 编译文件................................................. - 11 -

4.2.2移植madplay到TX2440 ..................................... - 12 - 致谢 (14)

参考文献 (15)

I

摘要

二十一世纪是信息技术的时代,信息的交流量非常大,这就会使人们在计算机面前工作的时间大大增加,因而增加了人们的负担和压力。再加上飞快的生活节奏,物质生活的逐步改善,更会给人们带来身心的劳累,人们在这种身体状况下去工作,不但效率不高,而且还很容易犯错,人们对精神层面的需求逐渐增强。因此人们需要一些娱乐和消遣的软件来减轻压力,消除疲劳,让人们更好的去工作和生活。由于不满足于仅在家中欣赏电视提供的多媒体,便携的媒体播放器应运而生。本Mp3播放器就是为了实现这个目的而编写的。

由于嵌入式Linux操作系统功能强大又易于移植。本次设计的是MP3播放器应用程序,就是一个基于嵌入式开发的一个媒体播放器软件,采用嵌入式ARM9经典开发平台。

关键词:嵌入式系统,Linux,Mp3播放器

I

Abstract

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.

Key Words: Embedded systems, Linux, Mp3 player

第1章绪论

1.1 开发嵌入式MP3播放系统的目的

二十一世纪是信息技术的时代,信息的交流量非常大,这就会使人们在计算机面前工作的时间大大增加,因而增加了人们的负担和压力。再加上飞快的生活节奏,物质生活的逐步改善,更会给人们带来身心的劳累,人们在这种身体状况下去工作,不但效率不高,而且还很容易犯错,人们对精神层面的需求逐渐增强。因此人们需要一些娱乐和消遣的软件来减轻压力,消除疲劳,让人们更好的去工作和生活。由于不满足于仅在家中欣赏电视提供的多媒体,便携的媒体播放器应运而生。

1.2 开发嵌入式MP3播放系统的意义

社会信息化、智能化、网络化高速发展的今天,嵌入式系统技术也随之提高,嵌入式Linux操作系统功能强大又易于移植,嵌入式产品渗入各个行业,如图1-1所示。嵌入式系统开发无疑成为当今最热门最有发展前途的IT领域之一。

图1-1嵌入式产品渗入各个行业

由于嵌入式Linux操作系统功能强大又易于移植。本次设计的是MP3播放器应用程序,就是一个基于嵌入式ARM9开发的一个媒体播放器软件,采用S3C2440经典开发平台,基于嵌入式ARM9开发的。本软件所具有的功能就可以满足一般用户的要求。本软件能支持所有MP3格式的音频文件,这些文件在网上都很容易找得到。根据个人的不同喜好,可以下载自己喜欢的MP3歌曲类型进行播放。因为音乐能使人们的神经放松,消除疲累,使人们有更好的状态工作和生活。

- 1 -

第2章系统方案及嵌入式Linux环境的搭建

2.1嵌入式系统方案的设计

嵌入式系统开发环境建立在一台主机(pc)上,开发是使用主机上的交叉编译、汇编及连接工具形成在目标板上可以运行的二进制代码。然后下载到板子上运行。本设计的宿主机Linux 操作系统是建立在Linux----Red Hat 9.0虚拟机中,这样可以灵活的与我们熟悉的Windows操作系统进行数据共享,加快开发速度。之后在宿主机上设置各种环境变量,建立交叉编译调试的环境,移植到开发板。

2.2 嵌入式Linux环境的搭建

嵌入式Linux(Embedded Linux)是指对Linux经过小型化裁剪后,能够固化在容量只有几十万字或几十字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux 操作系统。通常它的体积小,性能稳定,源代码免费,将大大减少开发商的成本,更具市竟争力。

最基本的嵌入式Linux系统需要4个基本元素:(1)u-boot移植:包括固化在固件中的启动代码和Bootloader 两大部分,用于完成机器加电后的系统定位引导。(2)LINUX 系统内核的编译和烧写:为嵌入式应用提供一个软件环境,为应用程序完成基本的底层的资源管理工作。(3)根文件系统的制作:操作系统中负责管理和存储文件信息的软件机构。(4)为了最小嵌入式系统具有一定的实用性,还需加上硬件驱动程序及一个或几个应用进程以提供必要的应用功能支持。

第3章硬件开发平台及其操作系统的构建

3.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 调试电路,可以直接用并口电缆连接计算机进行仿真、下载等

- 3 -

(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、指纹识别等扩展板。

- 5 -

3.2 开发平台的体系结构

S3C2440开发平台的体系结构如图1-2所示。

图1-2

体系结构

3.3 开发平台硬件间的工作流程S3C2440开发平台的工作流程如图1-3所示。

图1-3 工作流程

3.4 开发平台操作系统的搭建

3.4.1 U-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 0x1113 改为#define REFCNT 0x4f4,将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定义一些数据结构和函数,

- 7 -

在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下,有网卡驱动DM9000x.c 和 DM9000x.h,网卡芯片DM9000接在BANK4,位宽16。在include/configs/TX2440.h中设置网卡的基地址,在drivers目录下,只留nand、nand_legacy、dm9000x.c、dm9000x.h和Makefile文件,其他文件全部删除,修改Makefile文件,将顶层目录下没用的lib_x 文件夹删除,只留lib_arm和lib_generic文件。然后,设置一下Linux启动参数就可以了。

运行执行make TX2440_config make all 生成生成支持NAND Flash和网卡芯片DM9000的u-boot.bin文件。

3.4.2烧写U-boot

将编译后生成的u-boot.bin文件烧入NAND Flash中运行。

3.4.3 内核(kernel)的编译与烧写

我们在网上下载内核源码并解压源码,进入目录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文件,这里我们要使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: 0xec, Chip ID:

0xda (Samsung NAND 256MiB 3,3V 8-bit)

Scanning device for bad blocks

Creating 3 MTD partitions on "NAND 256MiB 3,3V 8-bit":

0x000000000000-0x000000100000 : "boot"

0x000000120000-0x000000520000 : "kernel"

0x000000520000-0x000010000000 : "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.4 根文件系统的制作

创建根文件系统目录:/bin,/etc,/dev,/home,/lib,/mnt,/pot,/proc,/root,/sbin, /sys,/tmp,/usr,/var 建一个名为root_2.6.31,在文件夹下创建以上目录。编译busybox,修改 Makefile 文件,执行#make menuconfig进行配置busybox,配置选项大部

- 9 -

相关文档
相关文档 最新文档