基于armMP3播放器论文 2.docx
- 文档编号:9708955
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:18
- 大小:253.34KB
基于armMP3播放器论文 2.docx
《基于armMP3播放器论文 2.docx》由会员分享,可在线阅读,更多相关《基于armMP3播放器论文 2.docx(18页珍藏版)》请在冰点文库上搜索。
基于armMP3播放器论文2
广东海洋大学寸金学院
《嵌入式》期末考查(论文设计)
论文题目:
基于嵌入式ARM9Mp3播放器的实现
系别:
信息技术系
专业:
电气工程及其自动化
班级:
电气工程及其自动化1班
姓名:
林晓波
学号:
2010103120128
指导老师:
舒秀兰
职称:
讲师
日期:
2013年12月11日
广东海洋大学寸金学院教务处制
目录
摘要I
AbstractII
第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.1U-Boot的编译-7-
3.4.2烧写U-boot-8-
3.4.3内核(kernel)的编译与烧写-8-
3.4.4根文件系统的制作-9-
第四章MP3播放器的制作与移植-11-
4.1Madplay原理-11-
4.2移植到TX2440开发板上-11-
4.2.1编译文件-11-
4.2.2移植madplay到TX2440-12-
致谢14
参考文献15
摘要
二十一世纪是信息技术的时代,信息的交流量非常大,这就会使人们在计算机面前工作的时间大大增加,因而增加了人们的负担和压力。
再加上飞快的生活节奏,物质生活的逐步改善,更会给人们带来身心的劳累,人们在这种身体状况下去工作,不但效率不高,而且还很容易犯错,人们对精神层面的需求逐渐增强。
因此人们需要一些娱乐和消遣的软件来减轻压力,消除疲劳,让人们更好的去工作和生活。
由于不满足于仅在家中欣赏电视提供的多媒体,便携的媒体播放器应运而生。
本Mp3播放器就是为了实现这个目的而编写的。
由于嵌入式Linux操作系统功能强大又易于移植。
本次设计的是MP3播放器应用程序,就是一个基于嵌入式开发的一个媒体播放器软件,采用嵌入式ARM9经典开发平台。
关键词:
嵌入式系统,Linux,Mp3播放器
Abstract
Thetwenty-firstcenturyistheeraofinformationtechnology,informationexchangeisverylarge,whichmakepeopleworkinfrontofthecomputertimeisgreatlyincreased,thusincreasingthepeople'sburdenandpressure.Coupledwiththefastpaceoflife,thegradualimprovementofmateriallife,butalsogiverisetophysicalandmentalfatigue,physicalconditioninwhichpeoplegotoworknotonlyinefficient,andveryeasytomakemistakes,peopleonthespiritualdemandgradually.Sopeopleneedsomeentertainmentandrecreationsoftwaretoreducestress,reducefatigue,allowpeopletoworkandlivebetter.BecausenotcontenttoprovideonlywatchTVathome,multimedia,portablemediaplayershaveemerged.
DuetotheembeddedLinuxoperatingsystem,powerfulandeasytotransplant.ThedesignoftheMP3playerapplication,isadevelopmentbasedonanembeddedmediaplayersoftware,usingtheclassicalembeddedARM9developmentplatform.
朗读
显示对应的拉丁字符的拼音
字典-查看字典详细内容
翻译以下任意网站
∙Vogue-法国
∙USAToday-美国
∙Marmiton.org-法国
∙Bild.de-德国
∙LaInformación-西班牙
∙LosAngelesTimes-美国
∙YomuiriOnline-日本
∙Público.es-西班牙
∙ZamalekFans-阿拉伯语
∙Nord-Cinema-法国
∙News.de-德国
∙NouvelObs-法国
在更多的Google产品中使用Google翻译
KeyWords:
Embeddedsystems,Linux,Mp3player
第1章绪论
1.1开发嵌入式MP3播放系统的目的
二十一世纪是信息技术的时代,信息的交流量非常大,这就会使人们在计算机面前工作的时间大大增加,因而增加了人们的负担和压力。
再加上飞快的生活节奏,物质生活的逐步改善,更会给人们带来身心的劳累,人们在这种身体状况下去工作,不但效率不高,而且还很容易犯错,人们对精神层面的需求逐渐增强。
因此人们需要一些娱乐和消遣的软件来减轻压力,消除疲劳,让人们更好的去工作和生活。
由于不满足于仅在家中欣赏电视提供的多媒体,便携的媒体播放器应运而生。
1.2开发嵌入式MP3播放系统的意义
社会信息化、智能化、网络化高速发展的今天,嵌入式系统技术也随之提高,嵌入式Linux操作系统功能强大又易于移植,嵌入式产品渗入各个行业,如图1-1所示。
嵌入式系统开发无疑成为当今最热门最有发展前途的IT领域之一。
图1-1嵌入式产品渗入各个行业
由于嵌入式Linux操作系统功能强大又易于移植。
本次设计的是MP3播放器应用程序,就是一个基于嵌入式ARM9开发的一个媒体播放器软件,采用S3C2440经典开发平台,基于嵌入式ARM9开发的。
本软件所具有的功能就可以满足一般用户的要求。
本软件能支持所有MP3格式的音频文件,这些文件在网上都很容易找得到。
根据个人的不同喜好,可以下载自己喜欢的MP3歌曲类型进行播放。
因为音乐能使人们的神经放松,消除疲累,使人们有更好的状态工作和生活。
第2章系统方案及嵌入式Linux环境的搭建
2.1嵌入式系统方案的设计
嵌入式系统开发环境建立在一台主机(pc)上,开发是使用主机上的交叉编译、汇编及连接工具形成在目标板上可以运行的二进制代码。
然后下载到板子上运行。
本设计的宿主机Linux操作系统是建立在Linux----RedHat9.0虚拟机中,这样可以灵活的与我们熟悉的Windows操作系统进行数据共享,加快开发速度。
之后在宿主机上设置各种环境变量,建立交叉编译调试的环境,移植到开发板。
2.2嵌入式Linux环境的搭建
嵌入式Linux(EmbeddedLinux)是指对Linux经过小型化裁剪后,能够固化在容量只有几十万字或几十字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。
通常它的体积小,性能稳定,源代码免费,将大大减少开发商的成本,更具市竟争力。
最基本的嵌入式Linux系统需要4个基本元素:
(1)u-boot移植:
包括固化在固件中的启动代码和Bootloader两大部分,用于完成机器加电后的系统定位引导。
(2)LINUX系统内核的编译和烧写:
为嵌入式应用提供一个软件环境,为应用程序完成基本的底层的资源管理工作。
(3)根文件系统的制作:
操作系统中负责管理和存储文件信息的软件机构。
(4)为了最小嵌入式系统具有一定的实用性,还需加上硬件驱动程序及一个或几个应用进程以提供必要的应用功能支持。
第3章硬件开发平台及其操作系统的构建
3.1开发平台的硬件资源
我们采用的硬件开发平台为S3C2440经典开发平台。
(1)核心板
S3C2440核心板:
S3C2440ARMCPU、64MSDRAM、64MNANDFLASH,通过280Pin精密插座与主板连接。
核心板上可以配置2M或4M容量的NorFlashAM29LV160/320,硬件支持从NorFlash启动并可增加NandFlash容量。
PXA270核心板:
PXA270XScaleCPU、64MSDRAM、64MNANDFLASH,16MNorFLASH。
经典平台的核心板接口设计完全兼容博创的PXA270核心板和S3C2440核心板,在软件支持下,两个核心板在经典开发平台主板上均可以实现大部分硬件功能,完全可以替换原有的2440-S和270A系列产品。
(2)双100MEtherNet网卡:
由两片DM9000AE构成的双网卡,一般可只用其一。
(3)4HOST/1DEVICEUSB接口:
从CPU的主USB口扩展为4个,由AT43301构成USBHUB。
USB从口保持处理器本身的1个。
(4)3UART/IrDA:
2个RS232串口。
另有1个RS485串口,1个IrDA收发器,均从处理器的UART2引出,由CPLD内部逻辑进行选择。
(5)168PinEXPORT:
提供一个168Pin扩展卡插槽,引出所有总线信号和未占用资源。
(6)LCD和VGA接口:
标配8寸16bit真彩屏,同时预留一个24bit接口。
扩展了VGA接口和AV接口,可以连接VGA显示器。
(7)TouchScr:
采用2440内部ADC构成的控制和转换电路,或者PXA270的AC97CODEC芯片的触摸屏控制器,二者根据核心板的不同由软件设置CPLD逻辑进行选择。
(8)AUDIO:
CODEC采用UDA1341和UCB1400,二者根据核心板的不同由软件设置CPLD逻辑进行选择,具有放音、录音和线路输入等功能。
功放电路由LM386构成,板载扬声器可播放音频。
(9)PS2KEYPAD:
使用ATMEGA8单片机控制2个PS2接口和板载17键小键盘。
两个PS2可接PC键盘和鼠标。
(10)LED:
扩展2个数码管和1个8x8点阵发光管显示器,均由CPLD逻辑驱动。
(11)POWERSUPPLY、RESET、RTC等必须资源。
经典平台主板集成了UP-LINK调试电路,可以直接用并口电缆连接计算机进行仿真、下载等
(12)ADC:
板载3个电位器,同时在板上设模拟电压输入专用接口。
(13)IDE/CF卡插座:
扩展有笔记本硬盘接口和PCCARD模式的CF卡接口电路,使用CPLD芯片实现
PCCARD逻辑。
(14)SD卡插座:
从CPU扩展SD接口。
(15)IC卡。
也由ATMEGA8单片机控制。
(16)直流电机。
扩展直流电机驱动电路,由PWM控制。
带有红外线测速电路。
(17)CANBUS:
设置1个CAN口,采用MCP2510和TJA1050芯片构成。
(18)DA输出:
采用MAX504,SPI总线操作,输出模拟电压。
(19)设置了PWMDA、IIC存储器、IO控制LED和可产生硬中断的按键等简单调试资源
(20)可以提供配套的GPRS/GPS、FPGA、WLAN、USB2.0、RFID、指纹识别等扩展板。
3.2开发平台的体系结构
S3C2440开发平台的体系结构如图1-2所示。
图1-2体系结构
3.3开发平台硬件间的工作流程
S3C2440开发平台的工作流程如图1-3所示。
图1-3工作流程
3.4开发平台操作系统的搭建
3.4.1U-Boot的编译
在U-boot的board目录下就是其支持的开发板,数量非常多。
这里我们选择2440开发板。
(1)在board下建立开发板目录,修改Makefile文件,添加我们自己开发板的配置信息:
在Makefile中找到TX2410的配置信息,在下面加上与TX2440相关的信息
(2)建立开发板的头文件TX2440.h,再把所有的文件全部删除,只留TX2440.h,用以下命令建立TX2440.h:
cpinclude/configs/TQM866M.hinclude/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中,检查#defineB6_BWSCON(DW32)位宽为32根据HCLK设置SDRAM 的刷新参数,主要是REFCNT寄存器。
开发板HCLK为100M将#defineREFCNT0x1113改为#defineREFCNT0x4f4,将FCLK设为400MHz,分频比为FCLK:
HCLK:
PCLK=1:
4:
8。
修改board/TX2440/TX2440.c中的board_init函数,在程序开头增加一行DECLARE_GLOBAL_DATA_PTR;,这样才可以使用gd变量,修改get_PLLCLK函数.
支持NANDFlash:
首先在配置文件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编写之前,需要针对S3C2440NANDFlash定义一些数据结构和函数,在include/s3c24x0.h中增加S3C2440_NAND数据结构,定义2440的函数:
staticinlineS3C2440_NAND*constS3C2440_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启动参数就可以了。
运行执行makeTX2440_configmakeall生成生成支持NANDFlash和网卡芯片DM9000的u-boot.bin文件。
3.4.2烧写U-boot
将编译后生成的u-boot.bin文件烧入NANDFlash中运行。
3.4.3内核(kernel)的编译与烧写
我们在网上下载内核源码并解压源码,进入目录linux-2.6.31,修改Makefile文件:
指定系统硬件架构、交叉编译器、修改时钟和修改机器码(根据实际情况,这个要和bootloader的匹配)。
接下来配置文件,在配置菜单中选择这一项:
“LoadanAlternateConfiguationFile”输入2440的默认配置:
arch/arm/configs/s3c2410_defconfig
配置完后,回到主菜单,选择这一项“saveanAltenateconfigurationFile”输入要保存的配置文件名称:
.config(默认),编译内核:
#makezlmage。
编译后,会在arch/arm/boot下生成zimage内核镜像文件,把zimage镜像烧进nandflash跑一下,检查是否正常打印出信息。
支持NandFlash:
修改arch/arm/plat-s3c24xx/common-smdk.c文件,这里我们要使nandflash同时支持64M,256M或更高容量。
接下来修改Nand读写匹配时间,这个改不改应该问题都不大,是根据Nand的读写特性相关的,也就是查芯片资料得到的值,每种Nand的值都不一样,修改Kconfig文件,在配置时选择NAND类型,修改driver/mtd/nand/Kconfig,配置内核,支持NandFlash。
启动时输出:
S3C24XXNANDDriver,(c)2004SimtecElectronics
s3c24xx-nands3c2440-nand:
Tacls=1,10nsTwrph0=330ns,Twrph1=110ns
s3c24xx-nands3c2440-nand:
NANDhardwareECC
NANDdevice:
ManufacturerID:
0xec,ChipID:
0xda(SamsungNAND256MiB3,3V8-bit)
Scanningdeviceforbadblocks
Creating3MTDpartitionson"NAND256MiB3,3V8-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行加入:
unsignedsetclkval;/*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)配置完毕后,在makemenuconfig后,选择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文件,执行#makemenuconfig进行配置busybox,配置选项大部分都是保持默认的。
然后执行#makemakeinstall就会在上一级目录下生成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中的文件系统分区中如果文件系统能正常挂载,终端会打印出:
PleasepressEntertoactivatethisconsole.
Processing/etc/profile…
Done
第四章MP3播放器的制作与移植
4.1Madplay原理
madplay是linux上的一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于armMP3播放器论文 基于 armMP3 播放 论文