嵌 入 式 系 统

发布 2022-10-21 05:15:28 阅读 5814

实验报告。姓名。

学号。班级。

一、实验目的。

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芯片内部,...