实验报告。姓名。
学号。班级。
一、实验目的。
1.初步学会使用embest ide for arm 开发环境及arm软件模拟器;
2.通过实验掌握简单arm汇编指令的使用方法。
二.实验设备。
1.硬件:pc机;
2.软件:embest ide 2004集成开发环境。windows98/2000/nt/xp。
三.实验内容。
1.熟悉开发环境的使用,并使用ldr/str和mov等指令访问寄存器或存储单元。
2.使用add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。
四.实验原理。
arm处理器共有37个寄存器:31个通用寄存器,包括程序计数器(pc),这些寄存器都是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。
1.arm通用寄存器。
通用寄存器(r0~r15)可分为3类,即不分组寄存器r0~r7.分组寄存器r8~r14.程序计数器r15。
2. 存储器格式。
arm体系结构将存储器看作是从零地址开始的字节的线性组合。字节0~3存放第一个字,字节4~7存放第2个字,以此类推。
arm体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
3. gnu基础知识。
embest ide集成了gnu汇编器as、编译器gcc和链接器ld。因此,编写程序要符合cnu的语法和规则。关于as.gcc和ld的具体使用,请参照embest ide所带的电子文档。
五实验程序。
1. 实验a程序。
x equ 45
y equ 46
stack_top equ 0x1000
area example, code,readonly
entrystart
mov sp,#stack_top
mov r0,#x
str r0,[sp]
mov r0,#y
ldr r1,[sp]
add r0,r0,r1
str r0,[sp]
stopb stop
end2. 实验b程序。
x equ 45
y equ 64
z equ 87
stack_top equ 0x1000
area lnit, code, readonly
entrystart
mov r0, #x
mov r0, r0,lsl #
mov r1, #y
add r2, r1,r1,lsr #
mov sp, #0x1000
str r2, [sp]
mov r0, #z
and r0, r0, #0xff
mov r1, #y
add r2, r0, r1,lsr #
ldr r0, [sp
mov r1, #0x01
orr r0, r0, r1
mov r1, r2
add r2, r0, r1, lsr #
stopb stop
end五.实验操作步骤。
1. 实验a
1)新建工程:先建立一个实验文件夹,如e\dk07101\001_asm1。运行embest ide集成开发环境,选择file→new workspace菜单项,弹出一个对话框,按照图1.
1输入工程名asm1_a等相关内容。单击ok按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程。
图1.1 新建工作区。
2) 建立源文件:选择file→new菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件**。编辑完后,保存文件asml_a.
s。3)添加源文件:选择project→add to project→file项,或单击工程管理窗口中的相应右键快捷菜单命令,打开文件选择对话框,在工程目录下选择刚才建立的源文件asml_
图1.2 新的工作区处理器设置。
4)基本设置:选择project→settings…菜单项,或按下快捷键alt+f7,弹出工程设置对话框。在工程设置对话框中,选择processor属性页,按照图1.
2对目标板所用处理器进行设置。
5)生成目标**:选择build→build asm_a菜单项,或按下快捷键f7,生成目标**。也可以单击工具栏上相应按钮来完成。
6)调试设置:选择选择project→settings…菜单项,或按下快捷键alt+f7,弹出工程设置对话框。在工程设置对话框中,选择remote页面,按照图1.
3所示对调试设备模块进行设置。
图1.3 新工作区**器设置。
选择debug页面,按照图1.4所示进行调试模块设置。
a)连接相关设置 (b)**相关设置。
图1.4 新工作区调试器配置。
(7)选择debug→remote connect连接软件**器,执行download命令**程序,并打开寄存器窗口。
8)打开存储器窗口,观察地址0x8000~0x801f的内容,以及地址0xff0~0xfff的内容。
9)单步执行程序并观察和记录寄存器与存储器值的变化。
10)结合实验内容和相关资料,观察程序运行,通过实验加深理解arm指令的使用。
2.实验b1) 在工作区窗口工作区名称上右击鼠标,在弹出的快捷菜单中选择“add new project
to workspace…”。
2)参照实验a及相应的实验参考程序,建立工程asml_b。
3)参照实验a的步骤完成目标**的生成与调试。
六.实验报告。
1)画出程序a、程序b的实现框图,并说明实验a、b程序实现的功能是什么?
实验a:该程序实现了两数的相加。
实验b:这个程序实现了基本的数学加法,逻辑或运算。
一、实验目的。
通过实验掌握使用ldm/stm、b和bl等指令完成较为复杂的存储区访问和程序分支,学习使用条件码,加强对cpsr的认识。
二、实验设备。
1.硬件:pc机;
2.软件:embest ide 2004集成开发环境。windows98/2000/nt/xp。
三、实验内容。
1.熟悉开发环境的使用并完成一块存储区的拷贝;
2.完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。
四、实验原理。
1.arm程序状态存储器。
在所有处理器模式下,都可以访问当前程序状态寄存器cpsr。cpsr包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器spsr。
当异常出现时,spsr用于保存cpsr的状态。cpsr和spsr的格式如下:
2.本实验涉及到得as语法及规则。
1)标号的使用。
标号由一个符号后跟一个冒号组成,它表示程序中当前的指令或者数据地址。如果在程序**现两个相同的标号,汇编器会产生一个警告,同时,只有第一个标号有效。
2)几个伪指令。
1)ldrldr伪指令讲一个32位常数或者一个地址值读取到寄存器中。当需要读取到寄存器中的数据超过了mov或者mnv指令可以操作的范围时,可以使用ldr伪指令将该数据读取到寄存器中。在汇编编译器处理源程序时,如果该常数没有超过mov或者mnv可以操作的范围,则ldr指令被这两条指令中的一条所替代;否则,该常数将被放在最近的一个文字池(literal pool)内,同时,本指令被一条基于pc的ldr指令代替。
语法格式。ldr, =
其中,expression 为需要读取的32位常数。register 为目标寄存器。
示例。ldr r1,=0xff
ldr r0,=0xfff0000
2) adr
adr指令将基于pc的地址值或者给予寄存器的地址值读取到寄存器中。在汇编编译器处理源程序时,adr伪指令被编译器替换成一条合适的指令。通常,编译器用一条add指令或者sub指令来实现该伪指令的功能。
如果标号超出范围或者标号在他那个一文件(和同一段)内没有定义,则会产生一个错误,该指令不使用文字池。
语法格式。adr
其中,register 为目标寄存器。label为基于pc或者寄存器的地址表达式。
示例。label1:
mov r0,#
adr r2,label1
3).ltorg
.ltorg 伪操作用于在当前段(一般是。 text段)的当前地址(字对准地址)产生一个文字池。
嵌入式ARM嵌入式系统设计
摘要 本系统设计了基于arm系统的嵌入式硬件平台,其中主要介绍了系统母版的具体电路实现,其硬件电路已经通过了信号完整性分析。中国 网 关键词 arm 嵌入式系统 中图分类号 tp368.1 文献标识码 a 文章编号 1007 9416 2012 12 0104 01 1 序言 本系统是设计一款基于a...
嵌入式系统
期末作业考核。满分100分。一 判断题 每题3分,共30分 1.嵌入式系统中的软件系统主要由嵌入式操作系统和应用软件组成,其中嵌入式微处理器属于嵌入式软件系统的核心。答 错。2.运行在智能手机或平板电脑中的android系统是一种嵌入式操作系统。答 对。3.windriver公司所提供的软件开发包是...
嵌入式系统
关于嵌入式系统 献给热爱此道的初学者们前言。网上看到众多网友都问了关于嵌入式系统方面的很多问题,很多都可在这里找到答案,希望我的这篇文章能给他们以启发。也请大家不要轻易 一 嵌入式系统的概念。着重理解 嵌入 的概念。主要从三个方面上来理解。1 从硬件上,将基于cpu的处围器件,整合到cpu芯片内部,...