基于mini2440的mp3播放器_第1页
基于mini2440的mp3播放器_第2页
基于mini2440的mp3播放器_第3页
基于mini2440的mp3播放器_第4页
基于mini2440的mp3播放器_第5页
已阅读5页,还剩69页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2013届毕业设计(论文)题目基于MINI2440的MP3播放器学院浦江学院专业电子信息工程班级电子0905姓名顾驰指导教师李荣雨起讫时间20130225201306102013年6月I基于MINI2440的MP3播放器摘要MINI2440是一款真正低价实用的ARM9开发板,是目前国内性价比最高的一款学习板;它采用SAMSUNGS3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。本文采用MINI2440开发板进行开发,在该平台上设计MP3播放器,操作系统使用LINUX操作系统,搭建嵌入式开发环境,建立交叉编译环境。将UBOOT进行移植,使其能够在MINI2440开发板上进行运行。对LINUX系统进行移植,然后利用按键中断这一方法开发了MINI2440开发板的按键驱动,并对MP3播放器所需要的文件系统进行了制作。最后编写了用户层的MP3应用程序,使此平台能够运行MP3的一些基本功能。调试结果表明,本系统各项标准已达到本设计的所有要求。IIABSTRACTMINI2440ISATRULYPRACTICALLOWCOSTARM9DEVELOPMENTBOARD,ISCURRENTLYTHEMOSTCOSTEFFECTIVEALEARNINGBOARDITUSESTHESAMSUNGS3C2440MICROPROCESSOR,ANDUSINGPROFESSIONALSTABLECPUCOREPOWERSOURCECHIPANDRESETCHIPTOENSURETHESYSTEMISRUNNINGSTABILITYINTHISPAPER,MINI2440DEVELOPMENTBOARDTODEVELOP,ONTHEPLATFORMDESIGNMP3PLAYER,THEOPERATINGSYSTEMUSESTHELINUXOPERATINGSYSTEMONTHECOMPUTERTOBUILDEMBEDDEDDEVELOPMENTENVIRONMENT,THEESTABLISHMENTOFCROSSCOMPILERENVIRONMENTBECAUSEDEVELOPMENTBOARDTOMOUNTTOAVIRTUALMACHINEONALINUXOPERATINGSYSTEM,SOTOINSTALLANDCONFIGURETHETFTPSERVICE,INSTALLANDCONFIGURETHENFSSERVICEBUTALSOMINI2440DEVELOPMENTBOARDRUNNINGLINUXOPERATINGSYSTEM,SOTHELINUXSYSTEMFORTRANSPLANTMP3PLAYERUSINGTHEKEYSTHEOPERATIONTOBEKEYDRIVERSFORTHEPREPARATION,ATRUNTIME,THEBACKGROUNDLOADKEYDRIVERMODULESFINALLYWRITETHEAPPLICATIONTOCONTROLTHEMP3PLAYERFUNCTIONISIMPLEMENTEDTESTRESULTSSHOWTHATTHESYSTEMHASREACHEDTHESTANDARDSFORALLOFTHEDESIGNREQUIREMENTSIII目录摘要IABSTRACTII第一章绪论111前言112选题背景213国内外的研究概况314设计要求3141基本要求3142论文结构3第二章系统硬件设计和软件设计方案421硬件设计方案422软件设计方案423MINI2440用户按键524音频接口6第三章搭建嵌入式开发环境731LINUX下建立嵌入式开发环境7311建立交叉编译环境7312安装配置TFTP服务7312安装配置NFS服务832UBOOT在ARM9上的移植8321UBOOT介绍8322UBOOT的移植8第四章LINUX系统移植及按键驱动开发941LINUX系统移植9411获取LINUX内核源代码9412指定交叉编译变量9IV413内核配置菜单中的MINI2440选项9414为内核打上YAFFS2补丁11415配置和编译带YAFFS2支持的内核1142按键驱动开发13421按键驱动原理13421按键驱动设计思路1443根文件系统的制作17431常用的LINUX根文件系统类型17432YAFFS2文件系统的移植18433制作根文件系统21第五章应用程序编写及调试2451主程序的编写24511主程序流程图24512主程序25第六章总结和展望29参考文献30南京工业大学本科生毕业设计(论文)1第一章绪论11前言随着计算机技术、微处理器技术、电子技术、通信技术、集成电路技术的发展,嵌入式系统已成为计算机技术和应用领域的一个重要组成部分,嵌入式产品在人们的日常生活中也扮演着越来越重要的角色。目前,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人来说,需要的已经不再仅仅是那种放在桌上处理文档、进行工作管理和生产控制的计算机机器。任何一个普通人都可能拥有从小到大的各种使用嵌入式技术的电子产品,小到MP3、PDA等微型数字化产品,大到网络家电、智能家电、车载电子设备等。目前,各种各样的新型嵌入式系统设备在应用数量上已经远远超过了通用计算机。在工业和服务领域中,使用嵌入式技术的数字机床、智能工具、工业机器人、服务机器人正在逐渐改变着传统的工业生产和服务方式。1工业控制基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8、16、32位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是8位单片机。但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。2交通管理在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。3信息家电这将称为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引2领人们的生活步入一个崭新的空间。即使你不在家里,也可以通过电话线、网络进第一章绪论3行远程控制。在这些设备中,嵌入式系统将大有用武之地。4家庭智能管理系统水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌有的专用控制芯片将代替传统的人工检查,并实现更高,更准确和更安全的性能。目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。5POS网络及电子商务公共交通无接触智能卡CONTACTLESSSMARTCARD,CSC发行系统,公共电话卡发行系统,自动售货机,各种智能ATM终端将全面走入人们的生活,到时手持一卡就可以行遍天下。6机器人嵌入式芯片的发展将使机器人在微型化,高智能方面优势更加明显,同时会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入式系统之外,家电产品控制协议也需要制订和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制器件都需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。所以,开发和探讨嵌入式系统有着十分重要的意义。12选题背景MP3本身是一种压缩与解压缩的计算方式,用来处理高比率的声音信息。经过MP3编码软件进行编码后,在音质几乎与高保真的CD没有什么差别的情况下,容量为640MB的普通CD盘就是你买的MP3音乐光盘啦能存储十几个小时的声音文件了,每分钟声音的MP3文件只有1MB左右大小,这样每首歌的大小只有数兆字节。然后使用MP3播放工具对MP3文件进行实时的解压缩解码,把还原后的声音信号输出到扬声器上,高品质的MP3声音就播放出来了。MP3从网络下载几乎免费、音质好、文件小,如今已热门到严重威胁传统唱片市场的地步。第二章系统硬件设计和软件设计方案413国内外的研究概况目前国外MP3技术的研发基本在中国完成,我们国内做MP3芯片的厂家珠海炬力上市,也更加证明从芯片解决方案上,国内厂家也有足够的研发能力。MP3属于一个新兴的行业,产业链已经形成,不必靠历史积累下的资源,就能有很好的突破。MP3是嵌入式的最主要应用之一,高端的MP3已经不仅仅着眼于实现音乐播放这一简单功能,而是同时具备了文本浏览、图片浏览、甚至视频播放等强大功能。本文重点讨论了基于MINI2440的MP3的功能的实现,包括开发环境建立、内核配置与编译、按键控制等一系列详细过程。14设计要求141基本要求(1)能够在MINI2440开发板上播放MP3格式音频文件。(2)通过按钮操控MP3播放器的播放,暂停,中止,上一首,下一首的功能。142论文结构本论文结构如下第2章介绍了系统硬件的选择,软件设计的方案。第3章描述了嵌入式开发环境的搭建。第4章给出了LINUX系统的移植,相关驱动的编写及移植,编译镜像,以及构建文件系统。第5章介绍了应用程序的编写及测试。第6章总结描述,自己在设计中的心得和体会。南京工业大学本科生毕业设计(论文)5第二章系统硬件设计和软件设计方案21硬件设计方案采用MINI2440开发板,MINI2440是广州友善之臂科技有限公司开发的嵌入式系统开发平台,本开发板采用ARM9系列芯片S3C2440作为主控芯片,搭配32英寸液晶触摸屏,以及自带音频解码芯片,配有丰富的硬件接口,是当今最热门的开发开发平台之一。该开发板可以实现车载GPS,以及MP3音乐播放器,MP4视频播放器等高端消费电子产品。用本开发板实现MP3播放器的整体思路是,在移植操作系统的基础上,并且挂载到电脑上面,就能实现文件的快速读取。MINI2440开发板自带UDA1341音频解码芯片,能够胜任MP3音频解码功能。系统框图如图21按键MINI2440PC音频解码电路音箱输出显示读取图21系统框图22软件设计方案采用开源的LINUX系统。LINUX操作系统具有诸多优点,并且内核可裁剪,在满足系统要求的同时,具有高度的可移植性,由于嵌入式设备硬件平台的多第二章系统硬件设计和软件设计方案6样南京工业大学本科生毕业设计(论文)7性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如X86,ARM,MIPS,POWERPC等,并具有良好的可移植性。另外还需要支持种类繁多的外部设备。LINUX支持以上几乎所有的主流芯片,并且还在不断的被移植到新的芯片上,嵌入式系统具有成本敏感性,处理器速度较低,存储器空间较少,这要求嵌入式OS体积小,速度快。LINUX体系结构比较灵活,易于裁减,可以小到2MFLASH,4MRAM。基于LINUX的操作系统结构框图如图12所示。系统硬件层设备驱动系统内核应用层MADPLAY图12LINUX系统结构框图23MINI2440用户按键开发板有六个用户测试用按键,它们均从CPU中断引脚直接引出,属于低电平触发,这些引脚也可以复用为GPIO和特殊功能口,6个按键的定义如表21表21K1K2K3K4K5K6对应的中断EINT8EINT11EINT13EINT14EINT15EINT19复用的GPIOGPG0GPG3GPG5GPG6GPG7GPG11特殊功能口无NSS1SPIMISO1SPIMOSI1SPICLK1TCLK1第二章系统硬件设计和软件设计方案824音频接口S3C2440内置I2S总线接口,可直接外接8/16比特的立体声CODEC,本开发板采用基于I2S总线的UDA1341芯片实现音频解码系统,该芯片内部寄存器的初始化和设置则是采用L3BUS总线连接控制实现的。在这里我们沿用了三星公板的设计,分别使用CPU的GPB2、GPB3、GPB4端口模拟实现L3BUS规范的L3MODE、L3DATA、L3CLOCK,他们在初始化完UDA1341以后就不再有用了。南京工业大学本科生毕业设计(论文)9第二章系统硬件设计和软件设计方案10第三章搭建嵌入式开发环境31LINUX下建立嵌入式开发环境311建立交叉编译环境使用交叉编译器(ARMLINUXGCC432建立步骤1,下载ARMLINUXGCC432TGZ到任意的目录下,进入这个文件夹TARXVZFARMLINUXGCC432TGZC/C后面有个空格,起的是改变目录意义。2修改环境变量,把交叉编译器的路径加入到PATH,为了可以方便使用ARMLINUXGCC编译器系统,把ARMLINUX工具链目录加入到环境变量PATH中。3在命令行输入ARMLINUXGCCV,交叉编译环境安装完成。312安装配置TFTP服务因为在使用MINI2440的时候通常用电脑作为宿主机,需要TFTP和NFS这两种网络服务,所以要配置TFTP服务。安装配置TFTP服务的大致步骤如下(1)安装TFTPHPA,TFTPDHPA和OPENBSDINETD程序;(2)修改配置文件/ETC/INETDCONF;(3)根据配置文件的路径,建立TFTP目录,并且修改目录权限;(4)重启TFTP服务;(5)本地传输的测试;南京工业大学本科生毕业设计(论文)11312安装配置NFS服务安装配置NFS服务的大致步骤如下(1)安装NFS内核服务;(2)重新配置PORTMAP服务,修改/ETC/HOSTSDENY和/ETC/HOSTSALLOW配置文件,重启PORTMAP服务;(3)修改NFS服务的配置文件/ETCEXPORTS,添加服务目录和配置,重新导入配置;(4)重启NFS服务,并检查可挂载的目录;(5)在本地挂载测试;32UBOOT在ARM9上的移植321UBOOT介绍UBOOT是BOOTLOADER的一个版本,BOOTLOADER是在操作系统内核启动前运行的一段小程序。通过这段程序,我们可以初始化硬件设备,以便为最终调用操作系统内核准备好正确的环境,最后从别处载入内核映像到主寸并跳入到入口地址。322UBOOT的移植首先修改顶层的MAKEFILE文件,使其支持MINI2440开发板。然后在/BORAD目录当中创建MINI2440的目录及其文件,最后在CONFIGS当中创建MINI2440开发板的配置文件。第三章搭建嵌入式开发环境12第四章LINUX系统移植及按键驱动开发41LINUX系统移植411获取LINUX内核源代码从LINUX官方网站下载LINUX内核代码。412指定交叉编译变量我们移植目的是让LINUX26322可以在MINI2440上运行。修改总目录下面的MAKEFILE,改为EXPORTKBUILD_BUILDHOSTSUBARCHARCHARMCROSS_COMPILEARMLINUX其中,ARCH是指定目标平台为ARM,CROSS_COMPILE是指定交叉编译器,这里指定的是系统默认的交叉编译器。413内核配置菜单中的MINI2440选项输入命令MAKEMENUCONFIG出现内核配置菜单如图41南京工业大学本科生毕业设计(论文)13图41按上下键移动到SYSTEMTYPE,按回车进入该子菜单,如图42图42第三章搭建嵌入式开发环境14再找到S3C2440MACHINES,按回车进入该子菜单,选择MINI2440DEVELOPMENT即可。414为内核打上YAFFS2补丁进入YAFFS2目录执行CDYAFFS2/PATHKERSHC/OPT/FRIENDLYARM/MINI2440/LINUX26322YAFFS2补丁成功打上。415配置和编译带YAFFS2支持的内核在LUNUX内核源代码根目录运行MAKEMENUCONFIG,移动上下键找到FILESYSTEM,如图43,按回车进入该子菜单图43南京工业大学本科生毕业设计(论文)15再找到“MISCELLANEOUSFILESYSTEM”菜单栏,按回车进入该子菜单,如图44图44出现如图45,找到“YAFFS2FILESYSTEMSUPPORT”,并按空格选中它,这样我们就在内核中添加了YAFFS2文件系统的支持。第四章LINUX系统移植及按键驱动开发16图45在命令行输入MAKEZIMAGE42按键驱动开发421按键驱动原理MINI2440具有6个用户测试用按键,它们都是连接到CPU的中断引脚。6个用户按键分别对应如下表41表41按键对应的端口寄存器对应的中断对应的复用功能K1GPG0EINT8仅有GPIO和中断功能K2GPG3EINT11NSS1K3GPG5EINT13SPISIMOK4GPG6EINT14SPISIMIK5GPG7EINT15SPICLKK6GPG11EINT19TCLK南京工业大学本科生毕业设计(论文)17421按键驱动设计思路(1)整体思路按键的捕获,MINI2440是用的中断方式,所以要对每个按键进行结构体定义,然后使用中断服务程序对中断进行捕获。(2)中断模式MINI2440一共有7种工作模式,中断模式是其中一种,是特权模式,也是异常模式。中断的控制寄存器比较多,其实总开关就在CPSR种的I位和F位,一个是中断允许,一个是快中断允许。当一个异常模式发生时候(这里关心中断模式),ARMCORE会自动地完成许多事情1在异常模式的LR寄存器种保存上一个模式的的下一条,即将执行的指令的地址2将CPSR值复制到异常模式的SPSR3将CPSR设置为异常模式的数值4令PC的数值等于异常模式在异常向量表中的地址,即跳转执行异常向量表中的指令当退出异常模式的时候,由软件完成下列事情1将前面保存在异常模式中的LR的数值减去适当的数值,赋给PC寄存器2将SPSR复制给CPSR使用中断的步骤如下1设置好中断模式和快速中断的栈2准备好中断处理函数要设置好中断向量表,并且要中断核心的程序ISR,最后清除中断3进入中断,出中断需要保存运行环境4根据具体中断,设置外设5确定中断的方式,FIQ还是IRQ6IRQ,设置INTMSK寄存器,FIQ不受INTMSK影响7设置CPSR中的总中断位IF位第四章LINUX系统移植及按键驱动开发18(3)驱动程序的分析和编写按键是利用中断的方式进行操作的,所以要定义一个结构体来存放按键的中断号,GPIO端口,定义键值,用来传递给应用层让客户可以在写程序时候用到,实际代码如下STRUCTBUTTON_IRQ_DESCINTIRQ/按键对应的中断号INTPIN/按键所对应的GPIO端口INTPIN_SETTING/按键对应的引脚描述,实际并未用到,保留INTNUMBER/定义键值,以传递给应用层/用户态CHARNAME/每个按键的名称/结构体实体定义/STATICSTRUCTBUTTON_IRQ_DESCBUTTON_IRQSIRQ_EINT8,S3C2410_GPG0,S3C2410_GPG0_EINT8,0,“KEY0“,IRQ_EINT11,S3C2410_GPG3,S3C2410_GPG3_EINT11,1,“KEY1“,IRQ_EINT13,S3C2410_GPG5,S3C2410_GPG5_EINT13,2,“KEY2“,IRQ_EINT14,S3C2410_GPG6,S3C2410_GPG6_EINT14,3,“KEY3“,因为本驱动是基于中断方式的,所以要创建一个等待队列,以配合中断函数使用;当有按键按下并读取到键值时,将会唤醒此队列,并设置中断标志,以便能通过READ函数判断和读取键值传递到用户态;当没有按键按下时,系统并不会轮询按键状态,以节省时钟资源。具体实现代码如下STATICDECLARE_WAIT_QUEUE_HEADBUTTON_WAITQ/中断标识变量,配合上面的队列使用,中断服务程序会把它设置为1,READ函数会把它清零/STATICVOLATILEINTEV_PRESS0STATICIRQRETURN_TBUTTONS_INTERRUPTINTIRQ,VOIDDEV_IDSTRUCTBUTTON_IRQ_DESCBUTTON_IRQSSTRUCTBUTTON_IRQ_DESCDEV_IDINTDOWNUDELAY0南京工业大学本科生毕业设计(论文)19DOWNS3C2410_GPIO_GETPINBUTTON_IRQSPINIFDOWNKEY_VALUESBUTTON_IRQSNUMBEREV_PRESS1WAKE_UP_INTERRUPTIBLERETURNIRQ_RETVALIRQ_HANDLED在应用程序执行OPEN“/DEV/BUTTONS”,时会调用到此函数,在这里,它的作用主要是注册按键的中断。所用的中断类型是IRQ_TYPE_EDGE_BOTH,也就是双沿触发,在上升沿和下降沿均会产生中断,这样做是为了更加有效地判断按键状态具体实现代码如下STATICINTS3C24XX_BUTTONS_OPENSTRUCTINODEINODE,STRUCTFILEFILEINTIINTERR0FORI0I0IIFBUTTON_IRQSIIRQF_FLAGSELSEWAIT_EVENT_INTERRUPTIBLEBUTTON_WAITQ,EV_PRESSEV_PRESS0ERRCOPY_TO_USERBUFF,RETURNERREFAULTMINSIZEOFKEY_VALUES,COUNT43根文件系统的制作431常用的LINUX根文件系统类型(1)NFS网络文件系统南京工业大学本科生毕业设计(论文)21(2)JFFS/JFFS2(3)YAFFS/YAFFS2我采用的是YAFFS2文件系统,它是NANDFLASH嵌入式文件系统。432YAFFS2文件系统的移植1下载YAFFS2文件系统代码。2将下载的文件YAFFSTARGZ拷贝到你的一个临时文件夹中,假设是/TMP,并解压CD/TMPTARXZVFYAFFSTARGZ解压后得到DEVELOPMENT文件夹,该文件夹里有两个子文件YAFFS和YAFFS2。考虑到现在的NANDFLASH容量越做越大,而且YAFFS2可以自动选择挂载是YAFFS1还是YAFFS2文件系统,这里我们移植YAFFS2。当然如果你的NANDFLASH只是51216B的,可以只移植YAFFS,因为即使你移植了YAFFS2,它也会自动选择挂载YAFFS1的。3在要移植的内核目录下建立YAFFS2文件夹,并将需要的文件拷贝过来CDLINUXDIR/FSMKDIRYAFFS2CDYAFS2CP/TMP/DEVELOPMENT/YAFFS2/CCP/TMP/DEVELOPMENT/YAFFS/HCP/TMP/DEVELOPMENT/YAFFS2/MAKEFILEKERNELMAKEFILECP/TMP/DEVELOPMENT/YAFFS2/KCONFIG4修改LINUXDIR/FS/YAFFS2中的文件在开始未修改该目录C文件前,会出现很多的BUILTINO的错误,要么是提示某些函数未定义,要么是某些函数重复定义,花了我很长的时间,终于找到问题所在。部分错误提示如下这是我开始编译YAFFS时的错误,YAFFS2的错误更多,但类型差不多FS/BUILTINOTEXT0X8478CINFUNCTION第四章LINUX系统移植及按键驱动开发22YAFFS_INTERNAL_READ_SUPER_MTDUNDEFINEDREFERENCETONANDMTD_WRITECHUNKTONANDFS/BUILTINOTEXT0X84790INFUNCTIONYAFFS_INTERNAL_READ_SUPER_MTDUNDEFINEDREFERENCETONANDMTD_READCHUNKFROMNANDFS/BUILTINOTEXT0X84794INFUNCTIONYAFFS_INTERNAL_READ_SUPER_MTDUNDEFINEDREFERENCETONANDMTD_ERASEBLOCKINNANDFS/BUILTINOTEXT0X84798INFUNCTIONYAFFS_INTERNAL_READ_SUPER_MTDUNDEFINEDREFERENCETONANDMTD_INITIALISENAND查看C文件,我发觉有很多是通过KCONFIG文件里定义的CONFIG常量来判断执行的,而这些常量在你MAKEMENUCONFIG/XCONFIG后退出后会将你的选择保存到文件中,但YAFFS2目录下的有些C文件中引用了这些常量来判断,却并未加入引用CONFIGH文件,从而会出错。将YAFFS2目录下所有引用了这些常量的C文件中加入对CONFIGH的引用即可INCLUDE5修改LINUXDIR/FS/MAKEFILE和KCONFIG文件。CDLINUXDIR/FSVIMAKEFILE将下面一行添加到MAKEFILE中OBJCONFIG_YAFFS_FSYAFFS2/VIKCONFIG将下面一行添加到KCONFIG中SOURCE“FS/YAFFS2/KCONFIG6在编译内核时选择YAFFS2FILESYSTEMSUPPORT512BYTE/PAGEDEVICESLETSYAFFSDOITSOWNECC2048BYTEORLARGER/PAGEDEVICESAUTOSELECTYAFFS2FORMATDISABLELAZYLOADING南京工业大学本科生毕业设计(论文)23TURNOFFWIDETNODESTURNOFFDEBUGCHUNKERASECHECK通过MKYAFFSIMAGE制做出来的IMAGE其OOB中也包含它自己计算的ECC校验数据,其校验算法有可能和MTDNAND驱动的校验算法不同,如果在内核中由MTD来处理ECC,会造成MTD认为所有的PAGE都校验错误。所以,这也是我前面说最好把LETSYAFFSDOITSOWNECC选上的原因,同时,要把MTDNAND驱动中的ECC校验关闭。在LINUXDIR/DRIVERS/MTD/NAND/YOUR_NANDC的初始化函数中设置THISECCMODENAND_ECC_NONE这样做实际是使用了YAFFS的ECC,但在读写YAFFS分区时分出现提示说READINGDATAFROMNANDFLASHWITHOUTECCISNOTRECOMMENDEDWRITINGDATAWITHOUTECCTONANDFLASHISNOTRECOMMENDED个人认为,其实已经使用了YAFFS的ECC,只是在传给MTD时,MTD没认可,参考MTD/NAND/NAND_BASEC文件里的NAND_READ_ECC函数以及YAFFS2/YAFFS_FSC文件中在于ECC的定义。这里应该是提示没用NAND的ECC,而使用的是YAFFS的ECC。这可以通过MKYAFFSIMAGE制作一个IMAGE来验证。解决方法要么使用NAND的ECC,将YAFFS的ECC屏蔽掉;要么将NAND_BASEC里的相关错误信息屏蔽掉。7修改你要移植的芯片中的MAKEFILE,在DEVICES后面添加MTDX和MTDBLOCKX设备,设备个数视你的NAND的分区个数而定,这里我的FLASH在YOUR_NANDC中分成了三个区。MTD0,C,90,0MTD1,C,90,1MTD2,C,90,2MTDBLOCK0,B,31,0MTDBLOCK1,B,31,1MTDBLOCK2,B,31,28编译后将KERNEL和文件系统下载到板子上,查看结果并挂载。CAT/PROC/MTD查看分区情况MTD00040000000004000“EV40FLASHPARTITION1“MTD10040000000004000“EV40FLASHPARTITION2“第四章LINUX系统移植及按键驱动开发24MTD20080000000004000“EV40FLASHPARTITION3“CAT/PROC/FILESYSTEMS查看内核支持的文件系统NODEVSYSFSNODEVROOTFSNODEVBDEVNODEVPROCNODEVSOCKFSNODEVFUTEXFSNODEVPIPEFSNODEVEVENTPOLLFSEXT2NODEVRAMFSNODEVDEVFSNODEVNFSNODEVJFFS2ROMFSYAFFSYAFFS2NODEVRPC_PIPEFS我们发现系统已经支持YAFFS和YAFFS2文件系统了。ERASEALL/DEV/MTD0在挂载之前可以先将该分区里的内容擦除掉MOUNTTYAFFS2/DEV/MTDBLOCK0/MNT将第1个分区挂载到/MNT目录下YAFFSDEVIS32505856NAMEIS“MTDBLOCK0“YAFFSATTEMPTINGMTDMOUNTON310,“MTDBLOCK0“YAFFSAUTOSELECTINGYAFFS1我们发现如果你的FLASH是51216B/PAGE的,即使你选择的是YAFFS2文件系统,内核也会自动选择挂载YAFFS1文件系统。南京工业大学本科生毕业设计(论文)25433制作根文件系统根文件系统介绍根文件系统是嵌入式LINUX系统三个重要组成部分之中的其中一个,其他两个是BOOTLOADER,KERNEL。在系统中扮演者重要的角色。它是LINUX系统正常运行必须的SHELL命令和其他应用程序的存储媒介。通常存储在磁盘以及FLASH中。嵌入式一般根文件系统存储在NANDFLASH中,比较著名的FLASH根文件系统是JFFS2和YAFFS2。在开发阶段一般用NFS网络文件系统。还有一种内存文件系统,RAMDISK内存盘,这个文件系统因为在内存的缘故,掉电后所存储的东西就会丢失。根文件系统的目录结构BIN存放所有用户都可以使用的、基本的命令。SBIN存放的是基本的系统命令,它们用于启动系统、修复系统等。USR里面存放的是共享、只读的程序和数据。PROC这是个空目录,常作为PROC文件系统的挂载点。DEV该目录存放设备文件和其它特殊文件。ETC存放系统配置文件,包括启动文件。LIB存放共享库和可加载块即驱动程序,共享库用于启动系统、运行根文件系统中的可执行程序。BOOT引导加载程序使用的静态文件HOME用户主目录,包括供服务账号锁使用的主目录,如FTPMNT用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。OPT给主机额外安装软件所摆放的目录。ROOTROOT用户的主目录TMP存放临时文件,通常是空目录。VAR存放可变的数据。建立根文件系统的基本目录第四章LINUX系统移植及按键驱动开发26/BIN/SHECHO“CREATEROOTFSDIRECTONSSTART“MKDIRROOTFSCDROOTFSECHO“CREATEROOT,DEV“MKDIRROOTDEVETCBOOTTMPVARSYSPROCLIBMNTHOMEUSRMKDIRETC/INITDETC/RCDETC/SYSCONFIGMKDIRUSR/SBINUSR/BINUSR/LIBUSR/MODULESECHO“MAKENODEINDEV/CONSOLEDEV/NULL“SUDOMKNODM600DEV/CONSOLEC51SUDOMKNODM600DEV/NULLC13MKDIRMNT/ETCMNT/JFFS2MNT/YAFFSMNT/DATAMNT/TEMPMKDIRVAR/LIBVAR/LOCKVAR/RUNVAR/TMPCHMOD1777TMPCHMOD1777VAR/TMPECHO“MAKEDIRECTIONDONE“将上段代码保存成脚本,加上可执行权限。就会在工作目录建立根文件系统基本目录。南京工业大学本科生毕业设计(论文)27第5章应用程序编写及调试51主程序的编写511主程序流程图第六章应用程序编写及调试28512主程序INTMAINVOIDINTBUTTONS_FDINTKEY_VALUESTRUCTSONGHEAD/打开设备文件/BUTTONS_FDOPEN“/DEV/BUTTONS“,0IFBUTTONS_FD0PERROR“OPENDEVICEBUTTONS“EXIT1/创建播放列表/HEADCREAT_SONG_LISTPRINTF“OPTIONNNNN“PRINTF“K1START/PAUSEK2STOPK3NEXTK4PRIORNNNN“PRINTF“N“/共享内存用于存放子进程ID,播放列表位置/IFSHMIDSHMGETIPC_PRIVATE,5,PERM1EXIT1P_ADDRSHMATSHMID,0,0MEMSETP_ADDR,0,1024南京工业大学本科生毕业设计(论文)29WHILE1FD_SETRDSINTRETFD_ZEROFD_SETBUTTONS_FD,/监听获取键值/RETSELECTBUTTONS_FD1,IFRET0PERROR“SELECT“EXIT1IFRET0PRINTF“TIMEOUTN“ELSEIFFD_ISSETBUTTONS_FD,IFRETSIZEOFKEY_VALUEIFERRNOEAGAINPERROR“READBUTTONSN“CONTINUE第六章应用程序编写及调试30ELSE/PRINTF“BUTTONS_VALUEDN“,KEY_VALUE1/首次播放,必须是按键1/IFFIRST_KEYSWITCHKEY_VALUECASE0STARTPLAYFIRST_KEY0BREAKCASE1CASE2CASE3PRINTF“PRESSK1TOSTARTPLAYN“BREAKDEFAULTPRINTF“PRESSK1TOSTARTPLAYN“BREAK/ENDSWITCH/ENDIFFIRST_KEY/若不是首次播放,则根据不同键值处理/ELSEIFFIRST_KEYSWITCHKEY_VALUECASE0南京工业大学本科生毕业设计(论文)31/PRINTF“PLAY_FLAGDN“,PLAY_FLAGIFPLAY_FLAGMY_PAUSEGRADCHILDELSECONTI_PLAYGRADCHILDBREAKCASE1MY_STOPGRADCHILDBREAKCASE2NEXTGRADCHILDBREAKCASE3PREVGRADCHILDBREAKCLOSEBUTTONS_FDRETURN0第六章应用程序编写及调试32南京工业大学本科生毕业设计(论文)33第6章总结和展望通过这次的毕业设计让我对嵌入式系统有了更深刻的理解,对大学里所学的一些基础知识是一个应用的过程,也可以说是一个再学习的过程,在这次毕设的过程中,我的自学能力,动手能力,解决困难问题的能力有了提高。在面对问题的时候,有了更良好的心态。本课题研究的是基于MINI2440的MP3播放器,我选用了现在流行的硬件平台MINI2440,在方案实施的过程中,主要是采用了开源的流行度很高的LINUX平台,根据设计需求,在其平台上进行软件开发,完成这次的毕业设计。展望,本论文实现了在MINI2440板上实现MP3播放器的功能,并达到了预期的效果。但是还存在一些功能上的不足,比如说,播放的音效效果,播放的模式切换。随着以后应用的进一步扩大,客户的需求的提高,可以添加更多的功能,使用户体验能够上升到另一个层次。第六章应用程序编写及调试34参考文献1何加铭主编嵌入式32位微处理器系统设计与应用M电子工业出版社20062杜春雷ARM体系结构与编程M清华大学出版社20033魏洪兴,胡亮,曲学楼嵌入式系统设计与实例开发实验教材一基于ARM9处理器与LMUX操作系统M清华大学出版社20054许海燕,付炎著嵌入式系统技术与应用M机械工业出版社20025DAVIDARUSLING朱珂等译LINUX编程白皮书机械工业出版社M20006田泽主编嵌入式系统开发与应用教稃北京航空航天大学出版社M20057周立功主编ARM嵌入式系统基础教程北京航空航天人学出版社M20058陈赜主编ARM9嵌入式技术及LINUX高级实践教程M北京航空航天大学出版社20059马忠梅等ARM嵌入式处理器结构与应用基础M北京航空航天大学出版社,200210李勇嵌入式LINUX集成开发环境的研究J安阳师范学院学报2005年05期11许海燕,付炎著嵌入式系统技术与应用M机械工业出版社200212DAVIDARUSLING朱珂等译LINUX编程白皮书M机械工业出版社200013田泽主编嵌入式系统开发与应用教稃M北京航空航天大学出版社200514周立功主编ARM嵌入式系统基础教程M北京航空航天人学出版社200515陈赜主编ARM9嵌入式技术及LINUX高级实践教程M北京航空航天大学出版社2005南京工业大学本科生毕业设计(论文)35毕业设计(论文)管理规定及相关表格汇编目录本科生毕业设计(论文)管理规定1毕业论文(设计)工作实施细则(草案)2优秀毕业论文评选办法7毕业论文的写作与排版规范10毕业设计(论文)写作模板14毕业设计(论文)答辩提问记录表21毕业设计第周工作总结22毕业设计(论文)过程跟踪表23毕业设计(论文)课题申请表24毕业设计(论文)任务书25第六章应用程序编写及调试36毕业设计(论文)开题报告26毕业设计工作中期检查27毕业设计工作中期检查28大学本科生毕业设计(论文)管理规定为提高本科生毕业设计(论文)质量,加强毕业生毕业设计管理工作,特制定如下规定1本科毕业设计工作从第七学期(四年级第一学期)考试周前,完成教师选题、师生见面及指导教师向学生下达任务书(见附表一)。毕业设计从第八学期开学正式开始,十六周内完成。2毕业设计开始时,教师必须填写毕业设计课题申请表、并由系汇总后交院毕业设计领导小组审核。(见附表)。3指导教师必须定期对学生辅导(每周至少两次),并将确定的周辅导时间上报教学办,教学办将定期和不定期进行检查。4指导教师自行组织学生的开题报告,并填写开题报告表(见附表二)5加强中期的监督与检查,第一次检查时间定在第五周,检查内容含学生资料阅读,方案论证情况。第二次检查定在第十周,形式为由指导教师组织,院毕业设计领导小组成员旁听,学生口头汇报。主要检查学生的阶段性结果。两次检查学生均应填写中期检查报告表格(见附表三、四),指导教师或系对检查情况写出书面评语。6学生需上交一篇与本专业有关不少于5000字的外文文章翻译,并将原文和译文用A4打印加自设计封皮一起装订成册。7论文答辩前,指导教师必须给出评语及评分,然后由各系主任指定其他评阅人对论文进行评阅及评分(请参考毕业论文书面成绩评分表规定的评分标准评分)。8论文答辩由各系组织,并成立答辩委员会对所有学生论文进行答辩。答辩必须给出答辩委员会意见及评分并填写相应表格。答辩委员会成员必须按评分表中各项指标标准进行评分,然后由各成员给出的分数计算出得分。9毕业设计(论文)最终成绩计算指导教师评分X30评阅人评分X30答辩委员会评分X40总分10毕业设计(论文)提交的文档及装订要求南京工业大学本科生毕业设计(论文)37(1)毕业论文一份(包含封皮、目录、中英文摘要、内容及参考文献)(2)不少于5000汉字的科技翻译资料一份(并将原文和译文用A4打印加自设计封皮一起装订成册)(3)毕业论文简介(A4纸打印12页)(包含题目、专业、年级、姓名、指导教师、毕业论文所做的工作、解决的问题、创新之处等)(4)毕业设计任务书(加在毕业论文目录之前和毕业论文一起装订,)(5)开题报告(加在毕业论文目录之前和毕业论文一起装订,)(6)毕业设计工作中期检查表、注(4)(5)(6)加在毕业论文目录之前和毕业论文一起装订。11毕业设计(论文)随正式论文一律附交电子文档(光盘或软盘)。被推荐参加学校优秀毕业设计(论文)3评选的,还要另附(符合发表格式要求的)修改为5000字左右的电子文档。2005年12月修订大学毕业设计(论文)工作实施细则(试行)根据毕业设计(论文)工作暂行规定,为了进一步规范毕业设计(论文)工作的各个环节,结合我院实际情况,经院教学指导委员会讨论,院长办公联席会议通过,对我院毕业设计(论文)工作特制订以下实施细则。一、指导教师资格毕业设计(论文)的指导教师原则上应由各专业具有中级含中级以上专业技术职务的教师担任。也可以聘任具有相应职称、学术水平高的工程技术人员担任。指导教师名单由各系系主任核定,报分管教学的副院长批准后实施。二、课题的命题过程1命题的基本原则是(1)目标原则命题必须符合专业培养目标,具有一定的深度、广度与新颖性,能使学生得到比较全面的训练。(2)价值原则命题应具有一定的学术研究或应用开发价值,尽可能做到理论与实际相结合,体现学科的发展性与应用性。(3)能力原则命题的难度应考虑学生完成命题的条件与能力,因材施教。(4)兴趣原则应考虑学生对命题的兴趣与探索研究的积极性。(5)多样化原则命题应注意题目的不断更新与类型的多样化,同一指导教师的设计(论文)课题选题和近三届毕业设计课题的重复率不高于50,题目数量应满足一人一题的基本要求。第六章应用程序编写及调试382课题的审核由各专业指导教师确定后的课题,填写毕业设计课题申请表。经系主任汇总后,报院毕业设计领导小组审核,由分管教学的副院长批准。3确定课题的时间要求一般在第七学期第15周前完成命题,对于经批准认可的命题,在第16周内向学生公布。指导教师在实际指导过程中,一般不应随意更改命题,确实需要更改命题时,应办理相关手续。三、选题与任务书1学生在教师指导下从公布的命题范围内选题。2学生自拟题目须经系主任审阅后指定指导教师,并报分管教学副院长批准。3选题原则上要求一人一题。4学生选题一般在第七学期的第17周前完成。5根据学生选题情况,填写大学毕业论文(设计)任务书,其中“设计所需的工作条件”应与课题的实际需要相符;“设计(论文)任务及目标”应指明毕业设计的详细任务(所需完成的工作、达到的设计要求等),不能简单了事。四、开题1指导学生书写开题报告,开题报告主要内容包括课题研究的意义和背景、课题研究相关资料的研究情况(说明课题研究的历史、现状和发展趋势)、对课题研究的基本构思。2指导学生填写大学毕业论文(设计)开题报告,并要求学生在第八学期的第2周前提交不少于1000字的开题报告,基本内容应包括课题研究的意义和背景、课题研究相关资料的研究情况(说明课题研究的历史、现状和发展趋势)、对课题研究的基本构思、阶段性工作计划、参考文献等。参考文献的列写格式要符合要求。3第八学期的第3周前完成开题审核,通过开题审核的学生,一般不应更换选题;开题未获通过的学生,应及时根据开题指导小组的意见更换选题,并于开题后的2周内做好准备,向开题指导小组第二次提出开题申请;对再次开题未获通过的学生,取消其本次毕业设计(论文)资格,延至下届进行。指导教师要重视对开题未获通过的学生进行指导。4开题报告中,“指导教师意见”应对学生开题情况作出基本评价以及对学生毕业设计(论文)研究方案或毕业设计(论文)写作提纲提出改进意见,同时还应对南京工业大学本科生毕业设计(论文)39学生是否可以进入研究和设计(论文)撰写

温馨提示

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

评论

0/150

提交评论