嵌入式系统设计C语言程序实验1.doc
上传人:sy****28 上传时间:2024-09-15 格式:DOC 页数:4 大小:337KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

嵌入式系统设计C语言程序实验1.doc

嵌入式系统设计C语言程序实验1.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

昆明理工大学信息工程与自动化学院学生实验报告(2011—2012学年第2学期)课程名称:嵌入式系统设计开课实验室:4432012年4月5日年级专业班计科Xx学号Xxxxxxxxxxxx姓名Xxxxxx成绩实验项目名称C语言程序实验指导教师Xxxx教师评语该同学是否了解实验原理:A.了解□B.基本了解□C.不了解□该同学的实验能力:A.强□B.中等□C.差□该同学的实验是否达到要求:A.达到□B.基本达到□C.未达到□实验报告是否规范:A.规范□B.基本规范□C.不规范□实验过程是否详细记录:A.详细□B.一般□C.没有□教师签名:年月日一、实验目的掌握建立基本完整的ARM工程,包含启动代码,连接脚本等;了解ARM7启动过程,学会使用EmbestIDE编写简单的C语言程序和汇编启动代码并进行调试;掌握命令脚本和链接脚本的作用;掌握如何指定代码入口地址与入口点;掌握通过memory/register/watch/variable窗口分析判断结果。二、实验原理1.ARM异常向量表当正常的程序执行流程挂起时,称之为异常。在处理异常之前,必须保存当前的处理器状态,以便从异常程序返回时可以继续执行当前的程序。ARM异常向量表如下所示:地址异常入口模式优先级0x00000000复位管理10x00000004未定义指令未定义60x00000008软件中断管理60x0000000C预取中止中止50x00000010数据中止中止20x00000014保留保留0x00000018IRQIRQ40x0000001CFIQFIQ3处理器允许多个异常同时发生。这时,处理器会按照表2-3中的优先级顺序进行处理。由上可见,复位(Reset)入口是整个程序的实际入口点。因此,编写代码时,第一条语句在0x00000000处开始执行。2.命令脚本文件用户在集成环境与目标板连接时、软件调试过程中以及复位目标板后,有时需要集成环境自动完成一些特定的功能,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等,这些特定的功能可以通过执行一组命令序列完成,保存一组命令序列的文本文件称为命令脚本文件(EmbestIDE使用.cs作为命令脚本文件扩展名)。命令脚本文件中各行以“;”号开始作为注释内容,分号前是一条命令。凡是可以在调试命令窗口使用的命令,都可以在脚本文件中使用,包括执行脚本文件命令“SCRIPT”。命令脚本文件执行时按照命令在脚本文件中排列的先后顺序自动连续地执行。(1)命令脚本文件的两种执行方法命令输入窗口输入:script脚本文件名;在项目设置对话框调试属性页可选择命令脚本文件,在IDE和目标系统连接后首先自动执行。(2)常用命令介绍1)GO–执行程序语法:go说明:从当前PC执行目标程序。2)MEMWRITE–存储区写语法:memwrite[–e]地址数值说明:向存储区指定地址写入数值。3)REFRESH–刷新窗口语法:refresh说明:刷新所有窗口命令。调试命令执行后,各窗口相关内容并不更新,用户可以调用本命令刷新界面各窗口,保持与实际内容一致。4)REGWRITE–寄存器写语法:regwrite寄存器名称寄存器值说明:写寄存器5)RESET–复位目标设备语法:reset说明:复位目标设备6)STOP–停止执行程序语法:stop说明:停止目标板运行3.链接脚本文件所有的链接都是通过链接脚本来控制实现的。这些链接脚本文件使用链接命令语言编写。链接脚本的最主要作用是描述我们编写的文件中这么多个部分应该如何的相应摆放在输出文件中,并控制存储区如何定位这些输出文件。同时,如果需要,我们还可以使用链接脚本文件实现其它功能。大部分链接脚本文件都是很简单的。最简单的链接脚本只有一行命令:SECTIONS。使用SECTIONS命令来告诉存储区应该如何摆放输出文件。内嵌汇编语言GCC支持大部分基本的内嵌汇编语言,编译器遇到这个声明时会在输出流中插入一个汇编语言标记。一个基本的内嵌汇编语言例子如下:__asm__("movr1,r2")三、实验内容用C语言编写延时函数,在C语言中嵌入汇编语言,使用汇编指令实现读/写某存储单元的值。下面是ARM的启动文件init.s及链接脚本文件ldscript的参考程序:参考程序init.s:#.arm.global_start.text_start:#设置中断/异常向量BReset_HandlerUndefined_Handler:BUndefined_HandlerSWI_Handler:BSWI_Handler