嵌入式报告3.docx

上传人:b****4 文档编号:24645175 上传时间:2023-05-29 格式:DOCX 页数:10 大小:89.65KB
下载 相关 举报
嵌入式报告3.docx_第1页
第1页 / 共10页
嵌入式报告3.docx_第2页
第2页 / 共10页
嵌入式报告3.docx_第3页
第3页 / 共10页
嵌入式报告3.docx_第4页
第4页 / 共10页
嵌入式报告3.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

嵌入式报告3.docx

《嵌入式报告3.docx》由会员分享,可在线阅读,更多相关《嵌入式报告3.docx(10页珍藏版)》请在冰豆网上搜索。

嵌入式报告3.docx

嵌入式报告3

中南大学

嵌入式系统与单片机

实验报告

学生姓名惠苗壮

指导教师贺建飚

学院信息科学与工程学院

专业班级计科0904班

学号0909091627

完成时间2012年4月24日

ARM汇编指令实验二

一.实验目的:

实验A:

通过实验掌握LDM/STM,B,BL等指令,完成较为复杂的存储区访问和程序分支。

学习使用条件码,加深对CPSR的认识。

实验B:

通过实验熟悉MOV/CMP/B等指令的使用,在实验中根据R0寄存器的不同选择不同的子程序。

二.实验设备:

1)硬件:

PC机;

2)软件:

ADS1.2集成开发环境,Windows98/2000/NT/XP。

三.实验内容:

1)熟悉开发环境并完成一块存储区的复制;

2)完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。

四.实验原理:

1)ARM程序状态寄存器

在所有处理器模式下都可以访问当前的程序状态寄存器CPSR。

当异常出现时,SPSR用于保存CPSR的状态。

CPSR和SPSR的格式如下:

五.实验操作步骤:

实验A:

本实验主要让读者熟悉stmfd/ldmia/sub/bne/beq等指令的使用。

通过使用这些指令实现到一块存储区的复制。

先进行2次以8个字节为单位的数据复制,对剩下不足8个字的数据跳转到copywords,以字为单位复制。

1)参考2.1节ARM汇编指令实验一中实验A的步骤

(1),建立一个新的工程,命名为ARMcode。

2)参考2.1节ARM汇编指令实验一中实验A的步骤

(2)和本实验参考程序,建立ARM-code.S并添加文件到工程ARMcode。

3)参考2.1节ARM汇编指令实验一中实验A的步骤(3),程序编辑ARMcode.S。

4)参考2.1节ARM汇编指令实验一中实验A的步骤(4).进行编译和链接。

5)参考2.1节ARM汇编指令实验一中实验A的步骤(5).设置AXD进行调试.并选择

ProcessorViewRegisters打开寄存器窗口;

6)选择ProcessorViewMemory打开存储器窗口,观察地址Ox8054-Ox80A0的内容,以及地址Ox80A4-Ox80F0的内容

7)劝单步执行程序并观察和记录寄存器与存储器中的值变化,注意观察步骤(6)里面地址的内容变化当执行STMFD.LDMFD.LDMIA和STMIA指令时.注意观察其后面参数听指的地址段或寄存器段的内容变化。

8)结含实验内容和相关资料,观察程序运行.通过实验加深理解ARM指令的使用。

9)理解和掌握实验后,完成实验练习题.

 

实验B:

1)参考汇编指令实验一和本实验的参考程序,创建新工程asm_b;

2)参考实验A的步骤完成调试;

3)理解和掌握实验后完成练习题。

六.实验代码

实验A代码:

numequ20

areastart,code,readonly

entry

ldrr0,=src

ldrr1,=dst

movr2,#num

movsp,#0x400

blockcopy

movr3,r2,lsr#3

beqcopywords

stmfdsp!

{r4-rl1}

octcopy

ldmiar0!

{r4-rl1}

stmiar1!

{r4-rl1}

subsr3,r3,#1

bneoctcopy

ldmfdsp!

{r4-rl1}

copywords

andsr2,r2,#7

beqstop

;创建数据缓冲区

ltorg

areasrc,data,readwrite

dcd1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,3

areadst,data,readwrite

lcd0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

end

 

实验b代码

numequ2

areastart2,code,readonly

entry

movr0,#0

movr1,#3

movr2,#2

blarithfunc

stop

bstop

;………………

arithfunc

cmpr0,#num

bhsdoadd

adrr3,jumptable

ldrpc,[r3,r0,lsl#2]

jumptable

dcddoadd

dcddosub

doadd

addro,r1,r2

movpc,lr

dosub

subro,r1,r2

movpc,lr

end

七.实验注意事项

1)标号的使用

标号是一个符号,它表示程序中当前的指令或者数据地

址。

如果在程序中出现两个相同的标号,汇编器回产生一个警告,并且只有第一个标号有效。

2)几个伪指令

1.LDR

2.ADR

3.LTORG

2.4ARM处理器工作模式实验

一.实验目的:

通过实验掌握使用MSK/MRS指令实现ARM处理器下咋模式的切换,观察不同模式下的寄存器.加深对CPU结构的理解。

二.实验设备:

1)硬件:

PC机;

2)软件:

ADS1.2集成开发环境,Windows98/2000/NT/XP。

三.实验内容:

通过ARM汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握

ARM不同模式的进人与退出,该实验通过使用MSR/MRS等指令实现依次从System模式

(sys)-FIQ模式(fiq)-管理模式(svc)-中止模式(abt)-IRQ模式(irc).最后到未定义模式(und)的切换。

四.实验原理:

1)ARM处理器模式

ARM体系结构支持如表2-2所列的7种处理器模式。

在软件控制下可以改变模式,外部中断或异常处理也可以引起模式发生改变。

大多数应用程序在用户模式下执行当处理器下咋在用户模式时.正在执行的程序不能访

问某些被保护的系统资源·也不能改变模式·除非异常(exception)发生。

这允许适当编写操作系统来控制系统资源的使用。

除用户模式外的其他模式称为特权模式它们可以自由地访问系统资源和改变模式。

其中

的5种称为异常模式FIQ,IRQ,管理,终止,和未定义。

当特定的异常出现时,进人相应的模式每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。

剩下的模式是系统模式仅ARM体系结构v4以及以上的版本有该模式不能由于任何

异常而进人该模式。

它与用户模式有完全相同的寄存器.然而它是特权模式,不受用户模式的限制,它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器避免使用附加寄存器,保证了当任何异常出现时,都不会使任务的状态不可靠。

2)程序状态寄存器

有关程序状态寄存器的介绍详见实验一的实验原理。

五.实验操作步骤:

1)参考2.1节ARM汇编指令实验一中实验A的步骤

(1),建立一个新的工程,命名为ARMMode。

2)参考2.1节ARM汇编指令实验一中实验A的步骤

(2)和本实验参考程序,建立ARM-

Mode.S并添加文件到工程ARMMode。

3)参考2.1节ARM汇编指令实验一中实验A的步骤(3),程序编辑ARMMode.S。

4)参考2.1节ARM汇编指令实验一中实验A的步骤(4).进行编译和链接。

5)参考2.1节ARM汇编指令实验一中实验A的步骤(5).设置AXD进行调试.并选择

ProcessorViewRegisters打开寄存器窗口;

6)单步执行.观察并记录寄存器RO和CPSR值的变化,以及每次变化后执行寄存器赋值

后的36个寄存器值的变化情况,尤其注意各个模式下R13和R14的值。

7)劝结合实验内容和相关资料,观察程序运行.通过实验加深理解ARM各种状态下寄存器的使用

8)理解和掌握实验后,完成实验练习题.

六.实验代码

.global_start

.text

_start:

bReset_Handler

Undefined_Handler:

bUndefined_Handler

bSWI_Handler

Prefetch_Handler:

bPrefetch_Handler

Abort_Handler:

bAbort_Handler

nop/*Reservedvector*/

IRQ_Handler:

bIRQ_Handler

FIQ_Handler:

bFIQ_Handler

SWI_Handler:

movpc,lr

Reset_Handler:

mrsr0,cpsr/*readCPSRvalue*/

bicr0,r0,#0x1f/*clearlow5bit*/

orrr0,r0,#0x1f/*setthemodeasSystemmode*/

msrcpsr,r0/*writethedataintoCPSR*/

movr0,#1/*initializationtheregisterinSystemmode*/

movr1,#2

movr2,#3

movr3,#4

movr4,#5

movr5,#6

movr6,#7

movr7,#8

movr8,#9

movr9,#10

movr10,#11

movr11,#12

movr12,#13

movr13,#14

movr14,#15

/*intoFIQmode*/

mrsr0,cpsr

bicr0,r0,#0x1f

orrr0,r0,#0x11/*setthemodeasFIQmode*/

msrcpsr,r0

movr8,#16/*initializationtheregisterinFIQmode*/

movr9,#17

movr10,#18

movr11,#19

movr12,#20

movr13,#21

movr14,#22

/*intoSVCmode*/

mrsr0,cpsr

bicr0,r0,#0x1f

orrr0,r0,#0x13/*setthemodeasSVCmode*/

msrcpsr,r0

movr13,#23/*initializationtheregisterinSVCmode*/

movr14,#24

/*intoAbortmode*/

mrsr0,cpsr

bicr0,r0,#0x1f

orrr0,r0,#0x17/*setthemodeasAbortmode*/

msrcpsr,r0

movr13,#25/*initializationtheregisterinAbortmode*/

movr14,#26

/*intoIRQmode*/

mrsr0,cpsr

bicr0,r0,#0x1f

orrr0,r0,#0x12/*setthemodeasIRQmode*/

msrcpsr,r0

movr13,#27/*initializationtheregisterinIRQmode*/

movr14,#28

/*intoUNDEFmode*/

mrsr0,cpsr

bicr0,r0,#0x1f

orrr0,r0,#0x1b/*setthemodeasUNDEFmode*/

msrcpsr,r0

movr13,#29/*initializationtheregisterinUNDEFmode*/

movr14,#30

bReset_Handler

.end

七.实验感想

通过此次实验学会了使用MSR/MRS指令实现ARM处理器工作模式的切换,观察不同模式下的寄存器,加深了对CPU结构的理解,同时掌握了ld中如何使用命令行指定代码段起始地址。

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

当前位置:首页 > 法律文书 > 调解书

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

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