好文档 - 专业文书写作范文服务资料分享网站

嵌入式系统ARM实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

南京邮电大学通信与信息工程学院

实验名称:

实 验 报 告

实验一 基于ADS开发环境的设计 实验二 嵌入式Linux交叉开发环境的建立 实验三 嵌入式Linux环境下的程序设计

课程名称 嵌入式系统B 班级学号 B13010711 姓 名 马俊民 开课时间 2015/2016学年 第1学期

实验一 基于ADS开发环境的程序设计

一、 实验目的

1、学习ADS开发环境的使用;

2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、 实验内容

1、编写和调试汇编语言程序; 2、编写和调试C语言程序;

3、编写和调试汇编语言及C语言的混合程序; 4、编写程序测试多寄存器传送指令的用法。

三、 实验原理

ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。

ADS用于无操作系统的ARM系统开发,是对裸机(可理解成一个高级单片机)的开发。ADS具有极佳的测试环境和良好的侦错功能,它可使硬件开发工作者更深入地从底层去理解ARM处理器的工作原理和操作方法,为日后自行设计打基础,为BootLoader的编写和调试打基础。

1.ADS软件的组成

ADS由命令行开发工具、ARM运行时库、GUI开发环境(CodeWarrior和AXD)、实用程序、支持软件等组成。

2.GUI开发环境

ADS GUI开发环境包含CodeWarrior和AXD两种,其中Code Warrior是集成开发工具,而AXD是调试工具。

使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。 汇编语言具有一些相同的基本特征:

1. 一条指令一行。

2. 使用标号(label)给内存单元提供名称,从第一列开始书写。 3. 指令必须从第二列或能区分标号的地方开始书写。 4. 注释必须跟在指定的注释字符后面,一直书写到行尾。

在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA作为该段的结束,段名必须唯一。程序的开始和结束需以ENTRY和END来标识。

嵌入式C语言设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。

四、 实验过程与关键代码分析

1. 创建项目工程

在File菜单中选择New命令,打开一个新建工程对话框。在Project选项卡下,选择ARM Executable Image, 然后在Project name文本框里输入项目名称,点击确定。弹出工程窗口。

选择File菜单中的New命令,选择File标签页,在File name文本框中输入要创建的文件名。汇编程序以.s结尾,c程序以.c结尾。在Location文本框中指定文件的存放位置,选中Add to Project,在Targets中选中DebugRel,单击确定关闭窗口。

2.用汇编语言设计程序实现10的阶乘

AREA EXAMPLE, CODE, READONLY ENTRY start

MOV R0, #10 MOV R1, #1 LOOP

MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END

在这个程序中,我们首先对R0和R1赋值,将R0作为一个变量,而R1作为一个存贮阶乘值的寄存器。在每进行一次乘法之后,将R0减1。同时在做完减法后进行判断,如果此时R0大于1,则返回继续乘法,否则结束程序,输出结果。

3.用调用子程序的方法实现1!+2!+3!+…+10!,代码如下: asmp.s

AREA JC, CODE, READONLY EXPORT JCP ENTRY JCP

ADD R3, R0, #1 MOV R2, #1 MOV R1, #1 LOOP MUL R0, R1, R2 MOV R1, R0 ADD R2, R2, #1

CMP R2, R3 BNE LOOP NOP NOP MOV PC, LR END

PROGC.c

#include Extern int JCP(int N)

int main() {

int res=0; int m=10; int i;

for (i=1;i<=m;i++) res=res+JCP(i);

printf(“The result =%d\\n”,res); return 0; }

在这个程序中,主程序由c语言完成作求和,子程序由汇编语言写成作阶乘。

5.实现字符串的逆序复制TEXT1=“HELLO”=>TEXT2=“OLLEH” AREA invstring, CODE, READONLY start ADR R1, TEXT1 ADR R2, TEXT2 MOV R3, #0 LOOP

LDRB R0, [R1], #1 ADD R3, R3, #1 CMP R0, #0 BNE LOOP SUB R1, R1, #2

LOOP1

LDRB R0, [R1], #-1 STRB R0, [R2], #1 SUB R3, R3, #1 CMP R3, #1 BNE LOOP1 MOV R5, #&55

TEXT1

TEXT2

NOP

=“HELLO”,0 ALIGN =“OELLH” END

五、实验小结

在这次实验中,学会了如何使用汇编程序进行编程。对汇编程序编程一些

基本的要求有了一定的了解,学习了C语言的语法和在其中调用汇编程序的方法。学会了利用CodeWarrior IDE开发C和ARM汇编代码。学会了在AXD中进行代码调试的方法和过程,对AXD的调试有初步的了解。

嵌入式系统ARM实验报告

南京邮电大学通信与信息工程学院实验名称:实验报告实验一基于ADS开发环境的设计实验二嵌入式Linux交叉开发环境的建立
推荐度:
点击下载文档文档为doc格式
73zom7j37k7g2499ip734mu7526kg600fse
领取福利

微信扫码领取福利

微信扫码分享