ARM嵌入式系统实验报告1.docx

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

ARM嵌入式系统实验报告1.docx

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

ARM嵌入式系统实验报告1.docx

ARM嵌入式系统实验报告1

郑州航空工业管理学院

嵌入式系统实验报告

2013–2014第2学期

赵成,张克新

 

院  系:

 电子通信工程系

姓  名:

   周振宇   

专  业:

  物联网工程  

学  号:

  121309140

 

电子通信工程系

2014年3月制

实验一 ARM体系结构与编程方法

一、实验目的

  了解ARM9S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2IDE中进行ARM汇编语言程序设计。

二、实验内容

1.ADS1.2IDE的安装、环境配置及工程项目的建立;

2.ARM汇编语言程序设计(参考附录A):

(1)两个寄存器值相加;

(2)LDR、STR指令操作;

(3)使用多寄存器传送指令进行数据复制;

(4)使用查表法实现程序跳转;

(5)使用BX指令切换处理器状态;

(6)微处理器工作模式切换;

三、预备知识

  了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。

四、实验设备

1.硬件环境配置

计算机:

Intel(R)Pentium(R)及以上;

内存:

1GB及以上;

实验设备:

UP-NETARM2410-S嵌入式开发平台,J-LinkV8仿真器;

2.软件环境配置

操作系统:

MicrosoftWindowsXPProfessionalServicePack2;

集成开发环境:

ARMDeveloperSuite(ADS)1.2。

五、实验分析

1.安装的ADS1.2IDE中包括CodeWarrior和AXDDubugger两个软件组件。

在ADS1.2中建立ARMExecutableImage(ARM可执行映像)类型的工程,工程目标配置为Debug;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为ARMUL仿真方式。

2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。

;文件名:

111307326.s

AREAXTF,CODE,READONLY

ENTRY

CODE32

SARTMOVR1,#1

MOVR2,#2

ADDR0,R1,R2

HALTBHALT

END

声明代码段XTF

标识程序入口

声明32位ARM指令

设置参数

R0<---R1+R2

死循环

结束程序段

3.列写出使用LDR、STR指令的汇编程序,并在关键语句后面给出相应的注释。

AREAXTF,CODE,READONLY;声明代码段XTF

ENTRY;标示程序入口

CODE32;声明32位ARM指令

STARTLDRR0,=1;加载数据

LDRR1,=2

LDRR3,=ADDR_1;载符号地址

ADDR2,R0,R1;R2<---R0+R1

STRR2,[R3];R2--->[R3]

 

;数据空间定义

AREAData_1,DATA,ALIGN=2

ADDR_1DCD0

END;结束

4.“使用多寄存器传送指令进行数据复制”汇编程序分析。

LDRR0,=SrcData;执行后,R0的值是标号SrcData的地址

LDRR1,=DstData;执行后,R1的值是标号DstDatad的地址

LDMIAR0,{R2-R9};LDMIA中的指令后缀IA表示IncreaseAfter,即 每次传送后地址加4,[R0]-->R2,[R0+4]-->R3,…,[R0+28]-->R9

STMIAR1,{R2-R9};执行后,程序实现的功能是[R1]<--R2,[R1+4]<--R3,

…,[R1+28]<--R9

5.在“使用查表法实现程序跳转”的汇编程序中,指令LDRPC,[PC,R2]采用的是什么寻址方式?

作为基址的寄存器PC的值是多少?

作为指令指针的PC又指向哪条指令?

这个指令与流水线执行的关系是什么?

(选做)

答:

1)基址加变址寻址;2)PC<----[PC+R2],即PC中存放的是当前PC值加上寄存器R2中的内容形成的有效地址中的操作数;3)对于ARM指令集,PC总是只想当前指令的下两条指令,即PC的值为当前指令的地址值加上8个字节(每条指令占4个字节)。

6.通过运行及观察“使用BX指令切换处理器状态”汇编程序实验,回答ARM指令与Thumb指令之间是如何实现状态切换的?

AXDDebugger调试环境中的哪个寄存器指示了ARM微处理器当前的指令状态?

同时,在程序中添加从Thumb指令切换到ARM指令的代码。

(选做)

答:

1)BX指令使用寄存器作为参数,当32位操作数寄存器的第0位的值为1时,执行BX指令后,ARM处理器从16位半字节对齐ARM指令状态切换到32位字对齐Thumb指令状态;当32位操作数寄存器的第0位为0时,ARM处理器从Thumb指令状态切换到32位ARM指令状态。

2)CPSR的value值为nzcvqIFt_SVC时为ARM32指令状态;为nzcvqIFT_SVC时为Thumb16指令状态

3)AREAXTF,CODE,READONLY;声明代码段XTF

ENTRY;标识程序入口

CODE32;声明32位ARM指令

SARTMOVR1,#1;设置参数

MOVR2,#2

ADDR0,R1,R2;R0<---R1+R2

;HALTBHALT

LDRR3,=Into_Thumb+1;将Into_Thumb地址值加1,再赋给R3

;产生跳转地址并且设置最低位

BXR3;地址值位0为1,将进入THUMB状态

;BranchExchange进入Thumb状态

CODE16;Thumb状态下的子函数,16位对齐

Into_Thumb

MOVR5,#3

MOVR6,#4

ADDR4,R5,R6

LDRR3,=Bach_to_ARM;将Back_to_ARM地址值赋给R3

;产生字对齐的跳转地址,最低位被清除,即bit0为0

BXR3

;BranchExchange返回到ARM状态,此时运行在ARM指令集环境里

CODE32;ARM状态下的子函数

Bach_to_ARM

MOVR8,#3

MOVR9,#4

ADDR7,R8,R9

END

7.观察“微处理器工作模式切换”程序的运行,按顺序写出ARM工作模式切换过程中依次出现的工作模式,同时,通过观察回答ARM微处理器是否能从用户模式切换到特权模式?

(选做)

答:

1)Usr(用户)Sys(系统)Fiq(快中断)Svc(管理)Abt(终止)Irq(中断)Und(未定义)

2)用户模式不能直接切换到其他处理模式(特权模式),特权模式可以自由切换到其他处理器模式。

程序:

AREAWork_mode_switch,CODE,READONLY;

ENTRY;入口

CODE32

;**************************************************

;now_in_svc_mode

;ARM处理器默认工作在SVC模式M=10011

;切换原理:

CPSR最低8位I、F、T、M位用作控制位,当异常出现时改变控位。

;其中,中断标志位I、F;指令状态标志T;工作模式位M[4:

0]

;通过软件控制模式位M即可控制ARM工作状态。

;************************************************

;into_Sys_mod

;系统模式下可运行具有特权的操作系统任务,与用户模式类似,但可以直接切换到其他模式。

MRSR0,CPSR;复制CPSR到R0

BICR0,R0,#0x1F;清除R0的后5位

ORRR0,R0,#0x1F;设定R0的最后5位为11111

MSRCPSR_c,R0;把R0装在到CPSR,切换到系统模式

MOVR13,#1;对系统模式下的R13赋值(R0-R14)

;into_Fiq_mode

;用于高速数据传输或通道处理,Fiq异常响应时进入此模式

MRSR0,CPSR;复制CPSR到R0

BICR0,R0,#0x1F;清楚R0的后5位

ORRR0,R0,#0x11;设定R0的最后5位为10001

MSRCPSR_c,R0;把R0装在到CPSR,切换到快中断模式

MOVR13,#2;对快中断模式下的R13赋值(R8-R14)

;into_Svc_mode

;操作系统使用的保护模式,系统复位和软件中断响应时进入此模式

MRSR0,CPSR;复制CPSR到R0

BICR0,R0,#0x1F;清楚R0的后5位

ORRR0,R0,#0x13;设定R0的最后5位为10011

MSRCPSR_c,R0;把R0装在到CPSR,切换到管理模式

MOVR13,#3;对快管理模式下的特有缓冲器R13赋值(R13-R14)

;into_Abt_mode

;可用于虚拟存储及存储保护,当数据或指令预取终止时进入该模式

MRSR0,CPSR;复制CPSR到R0

BICR0,R0,#0x1F;清楚R0的后5位

ORRR0,R0,#0x17;设定R0的最后5位为10111

MSRCPSR_c,R0;把R0装在到CPSR,切换到数据访问终止模式

MOVR13,#4;对快数据访问终止模式下的特有缓冲器R13赋值(R13-R14)

;into_Irq_mode

;用于通用的中断处理,Irq异常时进入此模式

MRSR0,CPSR;复制CPSR到R0

BICR0,R0,#0x1F;清楚R0的后5位

ORRR0,R0,#0x12;设定R0的最后5位为10010

MSRCPSR_c,R0;把R0装在到CPSR,切换到外部中断模式

MOVR13,#5;对快外部中断模式下的特有缓冲器R13赋值(R13-R14)

;into_Und_mod

;可用于支持硬件协处理器的软件仿真,当未定义的指令执行时进入该模式

MRSR0,CPSR;复制CPSR到R0

BICR0,R0,#0x1F;清楚R0的后5位

ORRR0,R0,#0x1b;设定R0的最后5位为11011

MSRCPSR_c,R0;把R0装在到CPSR,切换到未定义模式

MOVR13,#6;对未定义模式下的特有缓冲器R13赋值(R13-R14)

;into_Usr_mod

;正常程序工作模式,不能直接切换到其他模式,功能最弱。

MRSR0,CPSR;复制CPSR到R0

BICR0,R0,#0x1F;清楚R0的后5位

ORRR0,R0,#0x10;设定R0的最后5位为10000

MSRCPSR_c,R0;把R0装在到CPSR,切换到用户模式

MOVR13,#7;对未定义模式下的特有缓冲器R13赋值(R13-R14)

HALTBHALT

END

六、遇到的问题及解决方法

在ADS中编写汇编程序如下:

MAKE时提示下面的错误:

检查源程序,发现第一行AREA是关键字,且最后两行注释用的分号是中文状态输入,修改程序如下:

(徐腾飞)

 

实验二 VMWARE虚拟机与Linux环境的建立

一、实验目的

  熟悉嵌入式系统开发环境的建立,掌握VMWARE-Linux环境的安装步骤;能够配置Samba服务、设置VMWARE虚拟机共享功能,学会Windows系统环境与Linux系统环境共享资源的基本方法。

二、实验内容

1.在Windows系统环境中安装VMWARE7.0虚拟机软件;

2.在VMWARE7.0虚拟机中安装LinuxRHELAS4操作系统;

3.设置VMWARE虚拟机提供的共享功能;

4.在Linux系统中建立Samba服务;

三、预备知识

  了解VMWARE、VirtualBox、VirtualPC等虚拟机软件的相关知识;了解Linux操作系统的安装方法及基本操作方法。

四、实验设备

1.硬件环境配置

计算机:

Intel(R)Pentium(R)及以上

内存:

1GB及以上

实验设备:

UP-NETARM2410-S嵌入式开发平台,J-LinkV8仿真器

2.软件环境配置

操作系统:

MicrosoftWindowsXPProfessionalServicePack2

虚拟机:

VMwareWorkStation7

Linux系统:

RedHatEnterpriseLinuxAS4(2.6.9-5.EL)

五、实验分析

1.查看实验设备中配备的PC机,将下列硬件型号填写正确:

●CPU型号:

AMDA4-3305MAPUwithRedeon(tm)HDGraphics

●内存大小:

6G

●硬盘空间:

500G

根据实验的实际操作,将下列软件版本号填写正确:

●VMWARE:

7.0.0build-203739

●Linux系统:

Redhat.Enterprise.Linux.Advanced.Server.4

●Windows系统:

Windows7Ultimate,64-bit6.1.7601,ServicePack1

2.在VMWARE软件中安装RHEL4虚拟机时,出现网络连接方式的设置界面,如下图,提供了四个选项:

桥接(bridgednetworking)、NAT(NetworkAddressTranslation)、host-only及无需连接。

应该选择哪种方式?

并解释其他方式的特点。

图设置网络连接方式

答:

选择NAT方式。

桥接:

将虚拟机视为与物理机在网络中处于同一地位的独立主机,可以实现虚拟机与主机,虚拟机与互联网的相互通信。

但主机与互联网的连接中断后,虚拟机与主机无法正常通信。

NAT:

虚拟机与主机中的虚拟网卡VMnet8同网段,以VMnet8作为网关,通过物理机访问外网。

可以实现主机与虚拟机相互通信,虚拟机单相访问外网。

Host-only:

虚拟机与VMnet1同网段。

可以与主机相互通信,但不能与外网相互访问。

3.根据在Linux系统中的实际操作方法,按实验步骤简要说明Samba服务的设置与测试过程。

答:

设置步骤:

先在Applications>SystemSettings>SecurityLeval内关闭Linux中的防火墙;然后在Applications>SystemSettings>SeverSettings>Smaba内添加共享文件路径,并设置共享文件属性;再接着Applications>SystemTools>NetworkDeviceControl>Configuren内设置etho的IP地址为192.168.1.160与VMnet8、物理机本地网络连接IP在同一网段;设置虚拟及连接方式为NAT。

测试:

物理机内打开“运行”窗口,输入\\192.168.1.160,弹出共享文件对话框,说明配置成功。

4.参考教材中的实践指导部分,在Linux系统环境中安装VMWARETools软件,观察安装过程中的交互提示。

安装成功后,系统给出了什么提示信息?

怎样从VMWARE的VM菜单中设置Windows-Linux共享功能?

答:

1)安装成功后出现“Enjoy”提示。

2)VM>Setting…>Options>SharedFolders>Add…>Next,选择物理机中的共享文件路径,确定,设置Alwaysenabled,点击OK。

六、遇到的问题及解决办法

答:

问题:

设置好本地静态IP地址后,能正常登陆QQ聊天工具,但无法用浏览器通过域名与互联网通信

解决方法:

仔细检查本地物理机连接配置,发现没有设置DNS服务器,正确设置DNS服务器后问题解决

实验三 LinuxRHELAS4开发基础

一、实验目的

熟悉Linux操作系统开发环境,掌握Linux操作系统中的基本操作命令;掌握Vi编辑器的使用;掌握GCC工具的使用;掌握make及Makefile文件的使用。

掌握建立嵌入式交叉编译环境的方法。

二、实验内容

1.在Linux操作系统中执行常用的文件命令、目录命令、多用户命令与安全性命令以及其它常用命令;

2.使用Vi编辑器建立一个hello.c源文件,并存放在指定目录中;

3.使用GCC工具编译hello.c源文件,并在计算机上执行得到的hello可执行程序;

4.使用Vi编辑器建立一个Makefile文件,存放在指定目录中。

使用make命令重新编译hello.c源文件;

5.建立嵌入式交叉编译环境;

6.使用嵌入式交叉编译工具重新编译hello.c源文件,并使用readelf命令查看得到的hello可执行程序的文件头信息;

三、预备知识

  了解Linux操作系统的基本操作方法;了解嵌入式系统基本的开发方法。

四、实验设备

1.硬件环境配置

计算机:

Intel(R)Pentium(R)及以上

内存:

1GB及以上

实验设备:

UP-NETARM2410-S嵌入式开发平台,J-LinkV8仿真器

2.软件环境配置

操作系统:

MicrosoftWindowsXPProfessionalServicePack2

虚拟机:

VMwareWorkStation7

Linux系统:

RedHatEnterpriseLinuxAS4(2.6.9-5.EL)

五、实验步骤

1.Shell指令练习

打开Terminal窗口,使用su指令切换到root用户,使用echo指令在屏幕上显示“Experiment1onmyARMCoursefromdztx,zzia.\nNow,GoGoGo!

”。

使用pwd指令查看当前路径,使用cd指令切换到/home目录下,再使用ls指令浏览该目录,使用mkdir指令在当前路径下建立zcnet目录及zzia目录,随即使用rmdir指令删除zzia目录。

将当前路径下的readme.txt使用cp指令复制到/home/zcnet目录中,然后,使用cd指令切换进入/home/zcnet目录中,使用ls指令查看readme.txt是否存在。

使用mv指令将readme.txt重命名为demo.txt,再使用cat指令查看,然后,使用rm指令将demo.txt删除。

使用who指令、finger指令查看当前用户的登陆信息,使用time指令、date指令显示系统的时间、日期。

将上面指令练习中用到的指令进行分类。

文件命令:

mkdir、rmdir、cp、cat、rm、mv

目录命令:

pwd、cd、ls、

多用户命令与安全性命令:

su、who、finger、

其它常用命令:

time、date

2.使用VI编辑器编写hello.c源代码,并存放在/home/zcnet目录中。

然后,使用GCC编译hello.c源代码,并在计算机上运行得到的相应可执行程序。

hello.c源代码

用到的相关操作指令

#include

intmain()

{

printf("Hello,thisisatest!

\n");

}

#cd/home/zcnet

#vihello.c

#gcc–ohellohello.c

#./hello

#readelf

#

3.使用VI编辑器编写编译上述hello.c的Makefile源代码,并存放在/home/zcnet目录中。

然后,使用make指令编译hello.c源代码,并在计算机上运行得到的相应可执行程序。

Makefile源代码

用到的相关操作指令

OBJS=hello.o

CC=gcc

CFLAGS=-Wall-O-g

NAME=hello

${NAME}:

${OBJS}

${CC}-o$@$^

clean:

rm-f*.o

#cd/home/zcnet

#vihello.c

#viMakefile

#make–fMakefile

#./hello

#readelf

4.用Shell指令依次列出实验中嵌入式交叉编译环境的建立步骤,并写出测试安装效果的指令。

使用嵌入式交叉编译工具重新编译hello.c源文件,并使用readelf命令查看得到的hello可执行程序的文件头信息。

使用chmod指令设置hello为可执行程序,在PC机上再次运行hello程序,观察执行情况,并给出相关的分析。

答:

1)

定义变量并解压:

[root@localhosthome]#arm=arm-linux-tools-20061213.tar.gz

[root@localhosthome]#tarxzvf$arm

配置环境变量并查看:

[root@localhosthome]#exportPATH=$PATH:

/home/sur/local/bin

[root@localhosthome]#echo$PATH

测试安装效果:

[root@localhosthome]#armv=arm-linux-gcc

[root@localhosthome]#$armv-v

2)

#cd/home/zcnet

#arm-linux-gcc–ohello–chello.c

#readelf

3)

执行命令:

#chmoda+xhello

#

#./hello

执行结果:

bash:

./hello:

cannotexecutebinaryfile

分析:

相同代码使用不同编译工具编译结果不同,适用的运行平台也不同。

arm-linux-gcc编译的结果适用于ARM平台。

故该编译结果不能在计算机上运行。

 

六、遇到的问题及

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

当前位置:首页 > 高等教育 > 工学

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

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