嵌入式系统工程课程设计报告.doc

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统工程课程设计报告

2010/2011学年第学期 任务书 uCOS-II 内核移植到ARM7 微处理器上 (3):了解uCOS-II 的嵌入式系统BootLoader 的框架和编写过程 (4):了解MP3 歌曲的编、解码的相关知识。 (5):掌握MP3 文件的格式并能分析帧数据结构。 (6):掌握MP3 歌曲的解码播放的基本方法。 (7):学习解码播放内存中的一段MP3 歌曲。 (8):掌握ARM7实验箱上各模块的电路结构,功能,及能进行熟练的使用。 、设计内容 uCOS-II的剪裁和移植,学习在实验箱上实现MP3歌曲的播放。 、实训环境 、实训步骤 (1)BootLoader 实验 1、实验目的 了解基于uCOS-II 的嵌入式系统BootLoader 的框架和编写过程。 2、实验内容 编写简单的BootLoader 程序,实现Shell Menu 测试功能以及应用程序引导功能,并烧 写到ROM 中验证。 3、预备知识 1.掌握在ARM SDT 2.5 或ADS1.2 集成开发环境中编写和调试程序的基本过程。 2.了解计算机启动引导过程。 4、实验设备及工具 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、 仿真器驱动程序、超级终端通讯程序 嵌入式系统设计与实例开发——实验指导书 117 6、实验步骤 1.在编译环境下新建工程。需要注意的是,由于BootLoader 映象文件最终运行的地址 空间是0Bank,所以该工程的连接地址不同于其他运行于SDRAM 的工程。Release 版本的RO Base 是0x0,RW Base 是0xc600000;由于该工程的Debug 版本还可以进行仿真调试,所以 Debug 版本的RO Base 是0xc400000,RW Base 是0xc600000(Debug 版本的连接地址设置仅 供参考)。另外,也可以把工程最后产生的二进制文件名改为bootloader.bin,详情参考 “SDT2.5 和ADS1.2 环境设置实验”。 ADS 环境下,该工程无需其他工程才具有的init 目录,而ARMLinker 配置中的Output 选项中LinkerType 也要选择Simple,然后输入上述地址即可。 把本实验目录下的源文件加入工程。在这里没有给出文件系统的源码,所以把文件系统 的库文件也加入到工程中。SRC 目录下包括系统启动的必须初始化配置文件和部分用到的硬 件驱动,以实现检测功能。 2.打开main.c 文件,查看BootLoader 的编写过程。这里首先作了必要的硬件初始化, 仅给出了NAND FLASH 自检例程(没有给出芯片操作细节),然后输出提示信息。接下来会等 待查询是否有键按下,如果没有则直接引导系统;否则显示Shell Menu。 3.每个菜单项都对应一个类型为Bios_function 的结构体变量,其中包括该菜单项的 功能函数指针,快捷键,菜单中的提示信息等内容。所有这些结构体变量都在一个数组中, 嵌入式系统设计与实例开发——实验指导书 118 以方便检索。在显示菜单后程序等待按键并根据键值查找对应的功能函数。 typedef struct { Bios_func_t func; char *pShellMenu; //shell 模式下显示的菜单字符串 char MenuAcc; //shell 模式下菜单快捷键 char *pCommand; //命令行模式下的命令 char *pHelp; //命令行模式下的帮助 }Bios_function; 4.有的测试功能函数不是一直运行结束再返回菜单,而是边对目标进行操作边查询终 端是否有停止命令,如果有则立刻返回,否则继续执行。BootLoader 是这样完成该动作的: index=Set_UartLoopFunc(ADTest_Loop); Uart_Getch(0); Clear_UartLoopFunc(index); 其中ADTest_Loop 是对AD 硬件的操作函数。Set_UartLoopFunc() 函数把ADTest_Loop 设置到串口轮询函数数组中。Uart_Getch()函数查询串口是否有输入,如果没有的话就调用 串口轮询数组中的函数,否则立刻返回。请查看相关代码分析这种测试过程。 5.实现引导功能的代码并不复杂,请查看Boot()和LoadFile()两个函数源码。由于有 了文件系统,只须打开并读取指定文件到指定位置即完成了装载,然后把程序指针指向该位 置即实现了控制的转移。 int LoadFile(char *file

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档