- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)