课程设计3434167932.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计3434167932

开发环境设置及功能实现 1、安装好andlinux,将交叉编译环境、补丁包、内核文件分别拷贝到工作目录下; 2、在工作目录下解压交叉编译环境(并设置好环境变量)、补丁包(./patchgo一定要执行)、内核文件; 3、进入内核,进行内核的配置(第一次进入时要执行make distclean),并进行内核的编译; 4、在andlinux下,编译应用程序(arm-linux-gcc final_mp3.c –o yy),并更名为yy,将驱动程序misc_button拷贝至 /drivers/char下,使用vim Makefile和vim Kconfig,修改内核配置,重新编译内核,将新生成的内核文件zImage和misc_button.ko拷贝至共享目录下,将yy、misc_button.ko、zImage拷贝至U盘; 5、安装好USB驱动和dnw软件,连接好开发板,新建好超级终端,看dnw是否显示[USB:OK],若是,则输入f,格式化flash,将U盘连接开发板,把刚刚放进去的3个文件拷贝到开发板的工作目录下输入v,下载bootloader,输入k,下载新编译的内核镜像文件zImage,输入y,下载文件系统,输入b,启动开发板; 6、在根目录下,输入insmod misc_button.ko,并执行./yy; 7、操作开发板,测试应用程序的相应功能。 总体功能介绍 1、硬件部分: 利用驱动程序,将硬件操作与软件应用结合起来,通过硬件的操作,实现开始、暂停、继续、下一曲等市面mp3的功能; 2、软件部分: (1)创建双向循环链表,将歌曲文件添加到链表中; (2)创建共享内存,用于储存歌曲文件和正在播放的歌曲进程号,实现进程间的信号传递; (3)通过软件设置,将5个按键分别设置为响应的功能键 设计修改部分介绍 在老师提供的应用程序上,我们小组做了以下更改: 1、添加了第二次按K1键退出播放的功能; 2、添加了专用放置歌曲文件夹的功能; 3、修改了在没按K1键的前提下,按其他键出错的错误; 4、添加了将暂停和继续播放的按键,合并为一个按键的功 能; 5、添加了单曲循环以及退出单曲循环的功能; 6、添加了检索歌曲文件后缀不仅仅为.mp3的功能; 具体每个小点的功能,将在下面的讲解中简略介绍 K1键开始/退出播放的功能 将K1设置为双功能键,实现开始/退出的功能,具体流程如下: 1、设置标志位flag,并初始化置0; 2、按下K1键,当遇到flag=0时,开启madplay,并将flag取非置1; 3、再次按下K1键时,当遇到flag=1时,退出madplay,将flag再次取非置0。 专用歌曲文件夹功能 1、在超级终端下新建了一个文件夹,用于存放所有的歌曲文件; 2、应用程序代码的修改:修改了opendir函数,在检索歌曲文件(.mp3)的时候,是直接检索存放歌曲的文件夹; 3、此功能的修改,类似于市场上出售的mp3,允许用户自己新建文件夹,把不同的类型的歌曲文件放置在不同的文件夹中,方便用户的选择。 修改按键出错的功能 1、初始应用程序代码在没按K1而先按其他键的情况下,有可能会导致开发板无法操作,甚至可能导致系统崩溃; 2、修改的部分是:根据key_count的值,先判断K1是否按下,初始key_count值为1,按下K1后, key_count的值被赋为0,后面K2、K3等的代码部分,首先判断key_count的值是否是0,是则执行其他键的功能,否则提示“please press K1 first”语句; 出现以上错误的原因在于一个kill函数,K2以下代码中的kill函数将会杀死子进程的id号(id_tmp),在没有按K1时,fork()未执行,子进程没有产生,当然就没有所谓的子进程的id,此时的id_tmp可能是一个随机值,也可能是系统进程中的某个值,因此可能导致系统的崩溃。 按键合并的功能 1、合并K2(暂停)、K3(继续)按键,为一个按键K2; 2、主要的实现步骤:定义一个标志位,初始值为0,在播放歌曲的时候 ,第一次按下K2键,标志位置0,将会暂停歌曲,并且将标志位取反置1;再按下K2键,标识位为1,继续播放当前歌曲。 单曲循环功能 1、按下K6键,超级终端提示进入当前歌曲的单曲循环状态,在不操作其他按键的基础上,开发板将会一直播放当前歌曲; 2、在单曲循环的状态下,再按其他按键,依然可以实现暂停、继续、上一曲、下一曲功能,并且上一曲(下一曲)也会处于单曲循环状态; 3、再按下K6键,退出单曲循环状态,在播放完当前歌曲后,开发板会自动跳转到下一曲的播放,其他功能键依然有效。 以上功能主要是通过在共享内存中设置了一个标志位,在按下K6键的情况下,更改标志位的值,使代码无法实现自动跳转

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档