ARM嵌入式系统实验报告.docx
- 文档编号:10458590
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:16
- 大小:346.38KB
ARM嵌入式系统实验报告.docx
《ARM嵌入式系统实验报告.docx》由会员分享,可在线阅读,更多相关《ARM嵌入式系统实验报告.docx(16页珍藏版)》请在冰点文库上搜索。
ARM嵌入式系统实验报告
郑州航空工业管理学院
嵌入式系统实验报告
(修订版)
20 –20 第 学期
赵成,张克新
院 系:
姓 名:
专 业:
学 号:
电子通信工程系
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中包括CodeWarriorIDE和AXDDebugger两个软件组件。
在ADS1.2中建立ARMExecutableImage类型的工程,工程目标配置为Debug;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为AXDDebugger仿真方式。
2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。
;文件名:
ADDER
COUNTEQU10
AREAADDER,CODE,READONLY
ENTRY
CODE32
STARTLDRR0,=COUNT
ADDR0,R0,#3
HALT
BHALT
;程序入口
;32位代码
;将COUNT的值赋值给R0
;R0=R0+3;
;死循环
3.列写出使用LDR、STR指令的汇编程序,并在关键语句后面给出相应的注释。
LDRR0,[R1];R0←[R1]
STRR0,[R1];[R1]←R0
LDRR0,[R1,#4];R0←[R1+4]
LDRR0,[R1,#4]!
;R0←[R1+4],R1←R1+4
LDRR0,[R1],#4:
R0←[R1],R1←R1+4
LDRR0,[R1,R2];R0←[R1+R2]
4.“使用多寄存器传送指令进行数据复制”汇编程序分析。
LDRR0,=SrcData;执行后,R0的值是SrcData
LDRR1,=DstData;执行后,R1的值是DstData
LDMIAR0,{R2-R9};LDMIA中的指令后缀IA表示在每次
;执行完加载/存储操作后,R0按字长增加
STMIAR1,{R2-R9};执行后,程序实现的功能是R2←[R0],
;R3←[R0+4],R4←[R0+8],R5←[R0+12]
;R6←[R0+16],R7←[R0+20],R8←[R0+
;24],R9←[R0+28]
;STMIA指令功能是将R1~R7的数据保存到R0存储器中,R0存储器指针在保存第一个值之后增加,增长方向为向上增长
5.在“使用查表法实现程序跳转”的汇编程序中,指令LDRPC,[PC,R2]采用的是什么寻址方式?
作为基址的寄存器PC的值是多少?
作为指令指针的PC又指向哪条指令?
这个指令与流水线执行的关系是什么?
(选做)
6.通过运行及观察“使用BX指令切换处理器状态”汇编程序实验,回答ARM指令与Thumb指令之间是如何实现状态切换的?
AXDDebugger调试环境中的哪个寄存器指示了ARM微处理器当前的指令状态?
同时,在程序中添加从Thumb指令切换到ARM指令的代码。
(选做)
7.观察“微处理器工作模式切换”程序的运行,按顺序写出ARM工作模式切换过程中依次出现的工作模式,同时,通过观察回答ARM微处理器是否能从用户模式切换到特权模式?
(选做)
六、遇到的问题及解决方法
实验二 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型号:
Intel(R)Pentium(R)
●内存大小:
1GB
●硬盘空间:
300G
根据实验的实际操作,将下列软件版本号填写正确:
●VMWARE:
VMwareWorkStation7
●Linux系统:
RedHatEnterpriseLinuxAS4(2.6.9-5.EL)
●Windows系统:
MicrosoftWindowsXPProfessionalServicePack2
2.在VMWARE软件中安装RHEL4虚拟机时,出现网络连接方式的设置界面,如下图,提供了四个选项:
桥接(bridgednetworking)、NAT(NetworkAddressTranslation)、host-only及无需连接。
应该选择哪种方式?
并解释其他方式的特点。
图设置网络连接方式
3.根据在Linux系统中的实际操作方法,按实验步骤简要说明Samba服务的设置与测试过程。
4.参考教材中的实践指导部分,在Linux系统环境中安装VMWARETools软件,观察安装过程中的交互提示。
安装成功后,系统给出了什么提示信息?
怎样从VMWARE的VM菜单中设置Windows-Linux共享功能?
六、遇到的问题及解决办法
实验三 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指令、data指令显示系统的时间、日期。
将上面指令练习中用到的指令进行分类。
文件命令:
cplsmvcatrm
目录命令:
pwdcdmkdirrmdir
多用户命令与安全性命令:
whofigure
其它常用命令:
suechotimedate
2.使用VI编辑器编写hello.c源代码,并存放在/home/zcnet目录中。
然后,使用GCC编译hello.c源代码,并在计算机上运行得到的相应可执行程序。
hello.c源代码
用到的相关操作指令
#include
intmain()
{
printf("helloworld\n");
return(0);
}
#cd/home/zcnet
#vihello.c
#gcc-ohellohello.c
#
#
#
3.使用VI编辑器编写编译上述hello.c的Makefile源代码,并存放在/home/zcnet目录中。
然后,使用make指令编译hello.c源代码,并在计算机上运行得到的相应可执行程序。
Makefile源代码
用到的相关操作指令
#viMakefile
=======================
#ToCompilehello.c
hello:
hello.o
gcchello.o-ohello
hello.o:
hello.c
gcc-g-chello.c-ohello.o
clean:
rm-f*.o
#cd/home/zcnet
#viMakefile
#make-fMakefile
#make
#
#
4.用Shell指令依次列出实验中嵌入式交叉编译环境的建立步骤,并写出测试安装效果的指令。
使用嵌入式交叉编译工具重新编译hello.c源文件,并使用readelf命令查看得到的hello可执行程序的文件头信息。
使用chmod指令设置hello为可执行程序,在PC机上再次运行hello程序,观察执行情况,并给出相关的分析。
六、遇到的问题及解决办法
实验四 嵌入式系统仿真软件SKYEYE的应用
一、实验目的
熟悉使用嵌入式系统仿真软件SKYEYE开发嵌入式系统的方法。
二、实验内容
1.安装嵌入式系统仿真软件SKYEYE-1.2.4版本;
2.安装SKYEYE的测试工具包skyeye-testsuite-2.3.tar.bz2;
3.使用SKYEYE的配置文件skyeye.conf并测试SKYEYE的执行;
三、预备知识
了解电路专业相关的仿真软件;了解SKYEYE软件基本的应用方法。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上
内存:
1GB及以上
实验设备:
UP-NETARM2410-S嵌入式开发平台,J-LinkV8仿真器
2.软件环境配置
操作系统:
MicrosoftWindowsXPProfessionalServicePack2
虚拟机:
VMwareWorkStation7
Linux系统:
RedHatEnterpriseLinuxAS4(2.6.9-5.EL)
五、实验步骤
1.根据实际的实验操作过程,列出在安装嵌入式系统仿真软件SKYEYE-1.2.4时用到的各个指令。
tar–xzvfskyeye-1.2.4_Rel.tar.gz
make
具体安装步骤:
a.安装嵌入式系统仿真软件SKYEYE-1.2.4
1)将下载的SKYEYE-1.2.4REL.tar.gz源代码压缩文件放在/home/sysk_msk路径下,运行tar–xzvfskyeye-1.2.4_REL.tar.gz,则建立skyeye-1.2.4文件夹;
2)进入skyeye-1.2.4文件夹直接运行“make”指令,系统自动编译SKYEYE源代码,当输出信息出现“Thebinaryfilelocatedat‘binary/skyeye’,enjoyit.”说明已经编译并且安装成功。
b.安装测试工具包
下载skyeye-testsuite-2.3.tar.bz2测试工具包,在终端命令提示符后输入“tar-xjvfskyeye-testsuite-1.2.5.tar.bz2”解压缩到/home目录下;再复制initrd.img文件到skyeye1.2.4/binary目录下;
c.进入skyeye1.2.4/binary目录,使用vi编辑器创建skyeye.conf配置文件;
d.在binary目录下,运行终端,命令提示符后输入./skyeye–h,测试SKYEYE的执行过程和结果。
2.使用tar指令解压SKYEYE的测试工具包skyeye-testsuite-2.3.tar.bz2,再使用相关指令进入ARMS3C2410A的测试目录,使用cat指令查看skyeye.conf的内容。
列出上述实验过程的具体指令。
tar–xzvfskyeye-testsuite-2.3.tar.bz2
cdskyeye-testsuite-2.3/skyeye-testsuite/linux/s3c2410/s3c2410x-2.6.14/
catskyeye.conf
3.运行skyeye.exe程序,使用帮助查看常用的参数及相应的格式,在下面写出运行的指令及skyeye.exe的命令行参数格式。
./skyeye–h
skyeye.exe的命令行参数格式:
skyeye[options]–eprogram[programargs]
选项:
-eexec-file:
可执行文件ELF格式
-lload_address,load_address_mask:
加载地址
-b:
当不使用-e选项时,指定数据存储类型为大端对齐
-d:
在GDBserver模式下,可以连接GDB服务器
-cconfig-file:
指定skyeye的配置文件,如果不指定将使用skyeye.conf文件
-h:
显示帮助信息
4.在skyeye-testsuite-2.3测试包提供了测试ARMS3C2410A的测试目录,配置文件选用提供的skyeye.conf,使用skyeye.exe程序仿真运行U-Boot程序及Linux内核的运行。
写出实验时的测试步骤,并简单描述U-Boot程序及Linux内核的运行效果。
仿真运行U-Boot程序:
将测试包中U-BOOT文件夹下的smdk2410文件夹下的u-boot-1.2.0中的skyeye.conf以及u-boot可执行文件拷贝到skyeye的binary文件夹下,然后运行:
[root@localhostbinary]#./skyeye-cskyeye.conf-eu-boot
U-Boot的运行结果如下:
可以在SMDK2410#后面输入指令,例如可以使用version查看版本:
输入help查看帮助信息:
Linux内核的运行:
配置好内核后,将测试包的linux/s3c2410/s3c2410x-2.6.14/中的initrd.img,skyeye.conf,vmlinux三个文件复制到skyeye的binary文件夹下,并且使用vi编辑skyeye.conf如下,然后运行:
[root@localhostbinary]#./skyeye-evmlinux
skyeye.conf如下:
#skyeyeconfigfileforS3C2410X
arch:
arm
cpu:
arm920t
mach:
s3c2410x
#physicalmemory
mem_bank:
map=M,type=RW,addr=0xc0000000,size=0x00800000
mem_bank:
map=M,type=RW,addr=0xc0800000,size=0x00800000,file=./initrd.img
mem_bank:
map=M,type=RW,addr=0xc1000000,size=0x01000000
mem_bank:
map=I,type=RW,addr=0x48000000,size=0x20000000
mem_bank:
map=I,type=RW,addr=0x19000300,size=0x00000020
net:
type=cs8901a,base=0x19000300,size=0x20,int=9,mac=08:
00:
3E:
26:
0A:
5B,ethmod=tuntap,hostip=10.0.0.1
内核运行结果如下:
可以在$输入指令,例如reset执行CPU复位,使用date显示日期和时间:
/$date
ThuJan100:
00:
42UTC1970
六、遇到的问题及解决办法
1)通过SKYEYE可以模拟出一个完整的硬件环境来使用户虚拟化的操作硬件平台;
2)使用vi编辑器编写skyeye.conf文件时,必须要以空白行结束,否则在执行skyeye程序时会提示错误;
3)使用vi编辑器编写skyeye.conf文件时,地址分配要和内核配置的地址一致,否则运行时会出错。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 嵌入式 系统 实验 报告