ARM实验报告.docx

上传人:b****5 文档编号:7845298 上传时间:2023-01-26 格式:DOCX 页数:16 大小:18.10KB
下载 相关 举报
ARM实验报告.docx_第1页
第1页 / 共16页
ARM实验报告.docx_第2页
第2页 / 共16页
ARM实验报告.docx_第3页
第3页 / 共16页
ARM实验报告.docx_第4页
第4页 / 共16页
ARM实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

ARM实验报告.docx

《ARM实验报告.docx》由会员分享,可在线阅读,更多相关《ARM实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

ARM实验报告.docx

ARM实验报告

2.1

实验目的:

了解ADS1.2集成开发环境的使用方法

实验要求:

1)建立一个新工程

2)建立一个c源文件,并添加到工程中

3)设置文本编辑器支持中文

4)设置编译链接控制选项

5)编译链接工程

6)调试工程

实验步骤:

1)启动ADS,选择filenew,建立一个新工程

2)建立一个新文件

3)在debugrelsetting调试入口地址

4)编译整个工程

5)调试软件

实验结果与分析

可记录R0,R1,PC,CPSR和Memory中0x40003100的变化情况

R0=0x0000000FR1=0X00000000PC=0X40000000

R0=0x0000000FR1=0X00000000PC=0X40000004

R0=0x0000000FR1=0X00000008PC=0X40000008

R0=0x00000017R1=0X00000008PC=0X4000000C

R0=0x00000017R1=0X00000008PC=0X40000000

R0=0x0000000FR1=0X00000008PC=0X40000004

2.2

实验目的:

1)了解ADS1.2集成开发环境及ARMulator软件仿真

2)掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序

3)掌握指令的条件执行和使用LDR/STR指令完成存储器的访问

实验内容:

1)使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10则使用STR指令吧结果写回原地址,若结果大于10,则把0写回原地址。

2)使用ADS1.2软件仿真,单步,全速运行程序,设置断点,打开寄存器窗口监视R0,R1的值,打开存储器观察窗口监视0x40003100的值。

实验步骤:

1)启动ADS,建立新工程

2)建立新文件

3)设置工程链接地址为ROBASE0x40000000,RWBASE0x40003000,设置调试入口地址0x40000000

4)编译工程,启动仿真

5)打开寄存器窗口,监视R1,R0,打开寄存器观察窗口,设置观察地址0x40003100,显示32bit

2.3

实验目的:

1)掌握ARM数据处理指令的使用方法

2)了解ARM指令灵活的第二个操作数

实验内容:

1)使用MOV和MVN指令访问ARM通用寄存器

2)使用ADDSUBANDORRCMPTST等指令完成数据加减运算及逻辑运算

实验步骤

1)启动ADS,建立新工程

2)建立新文件

3)设置工程链接地址为ROBASE0x40000000,RWBASE0x40003000,设置调试入口地址0x40000000

4)编译工程,启动仿真

5)单步运行程序,观察寄存器值的变换

4.实验结果和分析

可单步或者设置断点记录各变化寄存器(包括PC,CPSR)的变化情况

1)

PC=0X40000004R0=0X0000000B

PC=0X00000008R1=0X00000008

PC=0X4000000C

PC=0X40000010

PC=0X40000014R0=0X5FFFFFF8

PC=0X40000018R5=0X5FFFFF60

PC=0X4000001CR0=0X00000008

PC=0X40000020R0=0X00000028

PC=0X40000024R0=0X00000014

PC=0X40000028R1=0X0000000B

PC=0X4000002CR1=0X00000016

PC=0X40000030cpsr=Nzcr

PC=0X40000034

PC=0X40000038

PC=0X4000003CR5=0X5FFFFFFF

PC=0X40000040cpsr=nzcr

PC=0X40000044R5=0X5FFFFFBF

 

2)

Pc=0x4000 0000         

Pc=0x4000 0004R0=0x000 00c8

Pc=0x4000 0008R1=0x0000 00A3

Pc=0x4000 000c

Pc=0x4000 0010

Pc=0x4000 0014R0=0X5FFF FFF8

Pc=0x4000 0018R5=OX5FFF F4A0

Pc=0x4000 001C   R0=0X0000 00A3

Pc=0x4000 0020R0=0X0000 032F

Pc=0x4000 0024R0=0X0000 0197

Pc=0x4000 0028R1=0X0000 00C8

Pc=0x4000 002CR1=0X0000 0190

Pc=0x4000 0030cpsr=ncvq

Pc=0x4000 0034

Pc=0x4000 0038R5=0X5FFF 0000

Pc=0x4000 003C

Pc=0x4000 0040cpsr=ncvq

Pc=0x4000 0044

 

2.3

实验目的:

3)掌握ARM乘法指令的使用方法

4)了解A子程序编写及调用

实验内容:

使用STMFD/LDMFDMUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算X^n的值

实验步骤

1)启动ADS,建立新工程

2)建立新文件

3)设置工程链接地址为ROBASE0x40000000,RWBASE0x40003000,设置调试入口地址0x40000000

4)编译工程,启动仿真,设置观察地址为0x40003EA0,显示size32bit,监视从0x40003EC0起始的满递减堆栈区。

5)单步运行程序,观察寄存器值的变换

6)调试程序,更改X,n来测试程序。

4.实验结果和分析

可单步或者设置断点记录各变化寄存器(包括PC,CPSR)的变化情况

PC=0X00008014R14=0X00008010

PC=0X00008018

PC=0X0000802C

PC=0X00008020

PC=0X00008024

PC=0X00008028cpsr=nzcv

PC=0X0000802C

PC=0X00008030

PC=0X00008034R2=0X00000007

PC=0X00008038R0=0X00000051

PC=0X0000803CR2=0X00000006

PC=0X00008034R0=0X00000209

PC=0X0000803CR2=0X00000005

PC=0X00008034

PC=0X00008038R0=0X000019A1

PC=0X0000803CR2=0X00000004

PC=0X00008034

PC=0X00008038R0=0X000056A9

PC=0X0000803CR2=0X00000003

PC=0X00008034

PC=0X00008038R0=0X00081BF1

PC=0X0000803CR2=0X00000002

PC=0X00008034

 

2.5

1.实验目的:

学习ARM微控制器的16位thumb汇编指令的使用指令

2.实验内容:

使用thumb指令ADD.MOV.CMP.B实现1+2+3······+N

3.实验步骤:

1)启动ADS,建立新工程

2)建立新文件

3)设置工程链接地址为ROBASE0x40000000,RWBASE0x40003000,设置调试入口地址0x40000000

4)编译工程,启动仿真

5)打开寄存器,窗口打开寄存器观察窗口

6)单步运行程序,注意执行BXR0指令前后CPSR寄存器的T位

4.实验结果和分析

PC=0x4000302ccpsr=Nzcv

PC=0x4000302ecpsr=Nzcv

PC=0x40003030cpsr=nzcv

PC=0x40003026cpsr=nzcv

PC=0x40003028cpsr=nzcv

2.6

1.实验目的:

通过实验了解如何使用ARM汇编指令实现结构化程序编程

2.实验内容:

使用ARM汇编指令实现if条件指令

使用ARM汇编指令实现for循环指令

使用ARM汇编指令实现while循环指令

使用ARM汇编指令实现do···while循环指令

使用ARM汇编指令实现switch开关指令

3.实验步骤:

1)启动ADS,建立新工程

2)建立新文件

3)设置工程链接地址为ROBASE0x40000000,RWBASE0x40003000,设置调试入口地址0x40000000

4)编译工程,启动仿真

5)打开寄存器,窗口打开寄存器观察窗口

6)单步运行程序,判断程序是否按设计的程序逻辑执行

4.实验结果和分析

For语句

ADDLDR0,R0,#1

ADDLDR2,R3,#1

BLDFOR_L1

While语句

WHILE_LCMPR0,R1

MOVLSR0,R0,LSL#1

BLSWHILE_L

do···while语句

DOWHILE_LSUBSRO,RO,#1

BNEDOWHILE_L1

Switch

AND、CMP中R2改为R4

2.7

1.实验目的:

1)掌握如何使用MRS/MSR指令实现ARM微控制器工作模式的切换

2)了解在各个工作模式下的寄存器

2.实验内容:

1)使用MRS/MSR指令切换工作模式,并初始化各种模式下堆栈指针

2)观察ARM微控制器在各种模式下寄存器的区别

3.实验步骤:

1)启动ADS,建立新工程

2)建立新文件

3)设置工程链接地址为ROBASE0x40000000,RWBASE0x40003000,设置调试入口地址0x40000000

4)编译工程,启动仿真

5)打开寄存器,窗口打开寄存器观察窗口

6)单步运行程序,观察CPSRSPSRR13R14R15

4.实验结果和分析

PC=0x40000000

PC=0x40000004

PC=0x40000008

PC=0x4000000C

PC=0x40000010

PC=0x40000014

PC=0x40000018

PC=0x4000001C

PC=0x40000020

PC=0x40000024

PC=0x40000028

PC=0x4000002C

PC=0x40000030

PC=0x40000034

PC=0x40000058R14=0x40000038

PC=0x4000005C

PC=0x40000060

PC=0x40000064R13=0x400030FC

PC=0x40000068R13=0x40000000R14=0x40000000cpsr=nzcvqIFt_IRQ

PC=0x4000006CR13=0x400031FC

PC=0x40000070R13=0x40000000cpsr=nzcvqIFt_FIQ

PC=0x40000074R13=0x4000323C

PC=0x40000078R13=0x40000000cpsr=nzcvqIFt_Abort

PC=0x4000007CR13=0x4000313C

PC=0x40000080R13=0x40000000cpsr=nzcvqIFt_Ubdef

PC=0x40000084R13=0x4000323C

PC=0x40000088R13=0x40000000cpsr=nzcvqIFt_Sys

PC=0x4000008CR13=0x400030FC

PC=0x40000038

PC=0x4000003C

PC=0x40000040

PC=0x40000044cpsr=nzcvqiFt_Sys

PC=0x40000048cpsr=nzcvqiFt_User

PC=0x4000004C

PC=0x40000050

PC=0x40000054

2.8

1.实验目的:

通过实验了解使用ADS1.2编写C语言程序,并进行调试

2.实验内容:

1)编写一个汇编程序和一个C语言程序文件

2)C语言实现1+2+3······+N

3.实验步骤:

1)启动ADS,建立新工程

2)建立新文件

3)设置工程链接地址为ROBASE0x40000000,RWBASE0x40003000,设置调试入口地址0x40000000

4)编译工程,启动仿真

5)打开寄存器,窗口打开寄存器观察窗口

6)单步运行程序

4.实验结果和分析

Sum=0x00000000

Sum=0x00000001

Sum=0x00000006

Sum=0x0000000A

Sum=0x0000000F

Sum=0x00000015

Sum=0x0000001C

Sum=0x00000024

Sum=0x0000002D

Sum=0x00000037

Sum=0x00000042

Sum=0x0000004E

Sum=0x0000005B

Sum=0x00000069

Sum=0x00000078

Sum=0x00000088

Sum=0x00000099

Sum=0x000000AB

Sum=0x000000BE

Sum=0x000000D2

Sum=0x000000E7

Sum=0x000000FD

Sum=0x00000114

Sum=0x0000012C

Sum=0x00000145

Sum=0x0000015F

Sum=0x0000017A

Sum=0x00000196

Sum=0x000001B3

Sum=0x000001D1

Sum=0x000001F0

Sum=0x00000210

Sum=0x00000231

Sum=0x00000253

Sum=0x00000276

Sum=0x0000029A

Sum=0x000002BF

Sum=0x000002F5

Sum=0x0000030C

Sum=0x00000334

Sum=0x0000035D

Sum=0x00000387

Sum=0x000003B2

Sum=0x000003DE

Sum=0x0000040B

Sum=0x00000439

Sum=0x00000468

Sum=0x00000498

Sum=0x000004C9

Sum=0x000004FB

Sum=0x0000052E

Sum=0x00000562

Sum=0x00000597

Sum=0x000005CD

Sum=0x00000604

Sum=0x0000063C

Sum=0x00000675

Sum=0x000006AF

Sum=0x000006EA

Sum=0x00000726

Sum=0x00000763

Sum=0x000007A1

Sum=0x000007E0

Sum=0x00000820

Sum=0x00000861

Sum=0x000008A3

Sum=0x000008E6

Sum=0x0000092A

Sum=0x0000096F

Sum=0x000009B5

Sum=0x000009FC

Sum=0x00000A44

Sum=0x00000A8D

Sum=0x00000AD7

Sum=0x00000B22

Sum=0x00000B6E

Sum=0x00000C09

Sum=0x00000C58

Sum=0x00000CA8

Sum=0x00000CF9

Sum=0x00000D48

Sum=0x00000D9E

Sum=0x00000DF2

Sum=0x00000E47

Sum=0x00000E9D

Sum=0x00000EF4

Sum=0x00000F4C

Sum=0x00000FA5

Sum=0x00000FFF

Sum=0x0000105A

Sum=0x000010B6

Sum=0x00001113

Sum=0x00001171

Sum=0x000011D0

Sum=0x00001230

Sum=0x00001291

Sum=0x000012F3

Sum=0x00001356

Sum=0x000013BA

2.10

1.实验目的:

(1)掌握LPC2200专用工程模板

(2)掌握EasyJTAG仿真器的安装和使用

(3)能够在magicARM2200教学开发平台运行第一个程序

(4)熟悉LPC2000系列ARM7微控制器GPIO控制

2.实验内容

控制magicARM2200教学实验开发平台上蜂鸣器报警,先使用片外RAM(MT445W4MW16芯片)进行调试,调试通过后将程序固化到片外FLASH(SST39VF160芯片)然后脱机使用。

3.实验程序

#include"config.h"

#defineBEEPCON0x00000080

voidDelayNS(uint32dly)

{uint32i;

for(;dly>0;dly--)

{

for(i=0;i<5000;i++);

}

}

intmain(void)

{

PINSEL0=0x00000000;

while

(1)

{

IO0SET=BEEPCON;

DelayNS(15);

IO0CLR=BEEPCON;

DelayNS(15);

}

return(0);

}

4.分析思考

哪句使蜂鸣器鸣叫哪句使蜂鸣器停止鸣叫

答:

intmain(void)开始鸣叫DelayNS(15)暂停鸣叫

2.11

1.实验目的

熟悉LPC2000系列ARM微控制器GPIO控制

2.实验内容

使用GPIO控制8个LED流水灯显示

3.实验程序

include"config.h"

#defineLED11<<16//P2.16

#defineLED21<<17//P2.17

#defineLED31<<18//P2.18

#defineLED41<<19//P2.19

#defineLED51<<20//P2.20

#defineLED61<<21//P2.21

#defineLED71<<22//P2.22

#defineLED81<<23//P2.23

#defineLEDCON0X00ff0000

constuint32DISP_TAB[8]={0Xff01ffff,0xff02ffff,0xff04ffff,0xff08ffff,

0xff10ffff,0xff20ffff,0xff40ffff,0xff80ffff};

voidDelayNS(uint32dly)

{uint32i;

for(;dly>0;dly--)

{

for(i=0;i<5000;i++);

}

}

intmain(void)

{uint8i;

IO2DIR=LEDCON;

while

(1)

{

for(i=0;i<8;i++)

{

IO2CLR=DISP_TAB[i];

DelayNS(10);

IO2SET=0Xffffffff;

}

}

return(0);

}

4.分析思考

(1)二进制显示

#include"config.h"

#defineLED11<<16//P2.16

#defineLED21<<17//P2.17

#defineLED31<<18//P2.18

#defineLED41<<19//P2.19

#defineLED51<<20//P2.20

#defineLED61<<21//P2.21

#defineLED71<<22//P2.22

#defineLED81<<23//P2.23

#defineLEDCON0X00ff0000

constuint32DISP_TAB[8]={0Xff01ffff,0xff02ffff,0xff04ffff,0xff08ffff,

0xff10ffff,0xff20ffff,0xff40ffff,0xff80ffff};

voidDelayNS(uint32dly)

{uint32i;

for(;dly>0;dly--)

{

for(i=0;i<5000;i++);

}

}

intmain(void)

{longinti;

IO2DIR=LEDCON;

while

(1)

{

for(i=0;i<256;i++)

{

IO2CLR=i<<16;

DelayNS(10);

IO2SET=0Xffffffff;

}

}

return(0);

}

(2)流水灯正反走

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1