版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验1ADS开发工具介绍
1.1ARM开发环境的介绍
1.2ARMADS开发环境的安装
1.3ARMADS开发环境的组成
ARMADS2的默认安装目录:C:\ProgramFiles\ARM\ADSvl_2»
ARMADS2安装目录包含文件介绍:
Bin可执行文件,armasm.exe,arm汇编器
Armcc.exe,armc编译器
Armcpp.exe,armc++编译器
Armlink.exe,armelf影像连接器
Armsd.ee,arm符号调试器
Axd.exe,arm调试器
IDE.exe,CodeWarrior应用程序界面
其它各种各样的卜一述应用程序使用的动态连接库文件
CodeWarriorHelp--CodeWarriorIEDE使用指南
Examples---各种各样的程序例子
Inclu加一Arm支持C语言的系统头文件
Lib--编写ARM程序时C语言可以使用的库文件的目录
PDF--各种各样的手册使用指南、帮助文档,是学习使用ADS集成开发环境的
第一手数据。
具体如下:
ADS_GettingStarted_D:ADS快速使用指南
ADS_DeveloperGuide_D:ADS开发者指南
ADSCodeWarriorlDEGuide:CodeWarriorlDE使用指南
ADS_AssemblerGuide_B:Arm?匚编2岸使用■}■旨南
ADS_CompilerGuide_D:ARM编译器使用指南
ADS_LinkerGuide_A:ARM连接器使用指南
ADS_AXDarmsdGuide_D:ARM符号调试器指南
ADSDebugTargetGuideD:ARM调试目标指南
1.4ARMADS2开发环境的基本使用
1)建立工作目录:在电脑的D盘创建“my_project”目录,以后我们的实验程序都放在这
个目录下。
2)建立工程:运行"CodeWarriorfbrARMDeveloperSuite"(以下简称ADS)。然后选择
File->New,弹出属性为"New"的窗口,选中"ArmExecutableImagen选项,并在右
面的“Location”文本框选择D盘的my_project目录,并输入项目名称"asm”,如图1
所示。
图1
在图1中点击“保存”按钮,保存项目,结果如下图2所示。
图2
在图2中点击“确定”按钮,该动作将创建一个新的工程asm.mcp,该工程所在
目录是D:\my_project\asm文件夹(可去该目录下看新生成的一些文件)。同时在ADS中
创建了一个与工程名相同的工作区,在工作区窗口将显示该工作区和工程,如图3所示。
图3
3)建立源文件:选择File->New菜单项,在弹出的标题为“New”的窗口中选择“File”选
项卡,再选中“TextFile”选项,并在右面的文本框中输入如图所示内容。之后点击确
定,建立asm.s汇编文件。如图4所示。
图4
在该文件中输入如下汇编程序代码,并保存asm.s汇编源程序。
AREAINIT,CODE,READONLY;namethisblockofcode
numEQU20;Setnumberofwordstobecopied
ENTRY;markthefirstinstructiontocall
start
LDRrO,=src;rO=pointertosourceblock
LDRrl,=dst;rl=pointertodestinationblock
MOVr2,#num;r2=numberofwordstocopy
wordcopy
LDRr3,[r0],#4;awordfromthesource
STRr3,[rl],#4;storeawordtothedestination
SUBSr2,r2,#1;decrementthecounter
BNEwordcopy;...copymore
stop
MOVrO,#0x18;angelSWIreasonReportException
LDRrl,=0x20026;ADPStoppedApplicationExit
SWI0x123456;ARMsemihostingSWI
AREABlockData,DATA,READWRITE
srcDCD123,4,5,6,7,8,123,4,5,6,7,8,1,2,3,4
dstDCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
END
注:也可以使用你所喜欢的编辑工具编写源文件,然后再拷贝到项目目录。
该程序包括•个数据段和一个代码段,在数据段定义了两个缓冲区:src和dst。代码段
程序的主要功能是以字为单位把src缓冲区的存储内容依次拷贝到dst缓冲区。
4)添加源文件:在ADS中选择“Project”->“AddFiles”,打开文件选择对话框,在工程
目录下选择刚才建立的源文件asms。
5)开发工具设置:在工作区窗口中的下拉列表中选择“Debug”条目,然后双击“target”
选项卡下的"Debug”条目,弹出“DebugSettings”窗口。分别见图5〜图7。
^DebugRel
^Release
图5
注意:图5中,Debug、Release>DebugRel其实代表了三种不同的编译选项,选择每
一种选项都可以编译生成ARM可执行映象。不同的是,Dcbgu选项所产生的映象包含了
比较多的调试信息,主要用于调试阶段;而Release的映象则不包含任何调试信息,主要用
于程序发布阶段。DebugRell选项产生的映象介于两者之间。
@DebugRel
④Release
图6
图7
选择该图7窗口左面树型列表里面的“TargetSettings"选项。在右面的Linker下拉菜单
处选择ARMLinker作为程序连接器。Pre-Linker选项选择None,Post-linker选项选择ARM
fromELFo这里ARMfVomELF是ADS提供的一个小工具,用于在连接之后,把映象从ELF
格式转换成bin格式。
选择图7窗口左面树型列表里面的"LanguageSettings”条目下面的"ARMAssembler”
选项,然后在右边的“ArchitectureorProcessor”列表中选择“ARM920T";uFloatingPoint
列表中选择"NoFloatingPoint”。如图8所示。
图8
解释:在图8中,所做的设置其实是培植IDE调用汇编器时传递的命令行参数。每选选中
一项或取消一项都会对命令行参数进行调整,在"EauivalentCommandLine”编辑框内放映
了全部的命令行参数。至于每一个命令行参数代表什么意义请查阅
**ADSAssemblerGuideB",。
下面,选择图7窗口左面树型列表里面的“LanguageSettings"条目下面的“ARMC
Compiler",设置C编译器,如图9所示。
j*pebugSettings01区]
gTargetSettingsFanels®ARfflCCompiler
Ff-Target
TargetandSourceATPCS!Waitings|Errors|Debug/Opt|PreprocessI
TargetSettings
AccessPathsArchitectureorProcessorFloatingPoint
BuildExtras|kRM920T|Pure-endiansoftfp
RuntimeSettings
FileMappings
SourceTrees
ARMTargetByteOrderSourceLanguage
•一LanguageSettingsGLittleEndi
(AHSI/ISOStandardC
LARMAssemblerr*BigEndiai
…MRMCCompiler
H
LARMC++Compiler
…ThumbCCompilerEquivalentCommandLine
一ThumbC++Com.-00-才-cpuARM920T
Linker
ABMLinker
ARMfromELF
一Editor
RevertImportPanel.|ExportPanel...
图9
解释:在此窗U中,可点击其它选项卡,并进行设置。这些设置会反映到C编译器的命令
参数中,多代表的具体意义请参见"ADS_CompilerGuide_D”文档。
接下来,设置程序连接器,点击“Linker”目录下的ARMLinker,并做如图10所示设置(采
用默认设置即可):
•■DebugSettings
factorySetting^EevertImportPanel.ExportPanel..
Apply
图10
在图10中点击OK按钮,开发环境设置完毕。
解释:在此窗口的设置中,ROBASE和RWBASE其实分别指定了程序影像代码段和数据
段的不同连接地址,当RWBASE空着不填时,默认数据段根在代码段的后面。在我们这个
例子中,我们选择ROBASE的默认地址。以后,编写在实验板的SDRAM中运行的程序时,
ROBASE将会指定一个SDRAM中的地址。关于连接器的详细设置,请参见
“ADS_LinkerGuide_A”文档。
6)编译生成目标代码:选择“Project”->“Make”或者按下快捷键“F7”,生成目标代码。
也可以单击工具栏或者工作区窗口中的相应按钮来完成,分别如图11、图12所示。
图11
图12
此时,到项目所在文件夹D:\my_project\asm\asm_Data\Debug目录下可以看到编译生成
的可执行目标文件asm(armexecutablefile)。
注意:此时生成的文件是ELF格式的映像文件,借助于ADS集成的AXD软件,我们可以
把此影响下在到软件模拟器或者正式系统中单步或全速运行。但若把此程序直接烧写到0
地址的FLASH中,启动上电从0地址开始执行程序时,我们烧写的程序是没办法正常运行
的。原因是,此文件是ELF格式的文件,包含了除去我们所编写指令外的其他很多用于调
试以及ELF格式本身所要求的信息。借助于AXD下载运行时,AXD会解释这些附加的信
息;而烧写到flash中去时,此程序没法正常运行。必须向Hash中烧写一个.bin格式的只包
含程序指令和数据的文件,才能正常运行。
下面利用软件仿真器(Armulator)的方式调试该程序。
解释:Armulaotr相当于用软件实现的一个arm处理器,可仿真多个系列的arm处理器,我
们可借助其仿真运行、调试arm可执行程序。
7)软件仿真器设置:运行AXD,选择“Option”->“ConfigureTarget",在弹出来的对话
框中选择开头字母为"ARMUL”的选项。如下图13所示:
图13
该界面用于选择程序运行的目标系统,当选择ARMUL时,即设定程序运行目标是
ARMULATOR仿真器,该仿真器是一个在程序,以dll文件的形式存在,可模拟多个系列的
ARM处理器。这种调试方式也即常说的“软件模拟器调试”的方式。其它方式以后再讲。
点击窗口右边的“Configure”按钮,在弹出的对话框中做如图14所示的设置。
ARBulatorConfiguration0E
图14
然后点击“OK”按钮,再在“choosetarget”窗口中点击“OK”按钮。这样我们就选
择了实现arm920t处理器内核的armulator作为我们的目标执行系统。
8)下载映象,准备用软件仿真器调试:在AXD中选择“File”->“LoadImage”,弹出文
件选择对话框,选择"myprotect\asm\asm_Data\Debug”目录下的asm.axf文件,然后点
击“打开”按钮,下载映象。常用方式是关掉AXD,在ADS的工具栏或者工作去窗口
中点击对应于Debug的按钮,或者选择Project->Debug,或者按下快捷键F5,都可以完
成映象文件的下裁。下载完毕后,AXD如图15所示。
r'AXD-[ARI920T-D:\ayproject\asa\asa.s]□0®
图15
在图15中,第八行处的蓝色箭头表示下一条要执行的指令。
9)调试环境的基本使用
(1)ProcessorViews菜单,如图16所示
八AXD(ARB920TDa、”project\nsM\ns*««]
tFree、nrV«i»w««mVi«w«Fu*mi«•0『aion・宣tedewHelp
・dCtrliR
照1喧Ia中0时].四曝]刖四向」|厄回旧画回副鬼」|
世3chCtrl+K
ARM9RTn«cisl<AREAINTT.CODE,READONLY;noiH”t:
1abl«aClrliF
・工
numEQUjOec.ntuabee
由Cucnentfii*cktr«c«CtrifT
M«moryCtrlIM
田UHMK/SyfffLMMENTRY;mtiEkthet
tfl-FIQl^owL«v«lSymbolsAll+Z
CDIRQQe»mm«ChannelCtrl+H
fff3VCCtvl+N
田AboutLDR£□t-ozajcO-point
QiCtrl+llLDRvl,-dac;cl-point:
05必r
Sourfl•CO1.+SMOVc2/"nun;t2"numbe
CPIS
田c*chnbrairdcopy
HITLDoperacicFLDRt3,[EO]/#4:awocdEco:
田DrbuaComing(...)isJJTRE3/[EI]/4t43storeawo
i,3UB9K2,H2,fl:dacrftmAnt:
178NEwocdoopy;«.(copya
IB三
ID
200tOp
Z1MOVE0<4(OxlD3anael_SUIr
T<r<0tjimnc«|File*|C1*BK)22LDRtri,-0x20026:ADP_9spM
S5WI0x129456;APM-seniho
9拚ARM92OT-23
24
25AREABlGQMDetut,DATA.RKADWRTTK
26
273ECDCD1,2/3/4/5,6,7,0,1,2,3,5,6,
2BDCD0,0,0,0,0,0t0,0,0,0,0,0,0,0,
END
4I
图16
在图16中,当选择“Register”菜单时,界面左侧出现浮动窗口“ARM920T-Registers”,
在此窗口内可察看ARM920T处理器内的所有寄存器。其中“Current”树状目录下反应了当
前模式下程序可以访问的寄存器。其中,PC寄存器存放即将执行指令的地址,CPSR寄存
器放映了当前程序运行的状态。根据CPSR的值可计算出当前处理器所处的工作模式。如图
所17示。
■'AXD-[ARJI920T-D:\ay_project\asM\asB.s
FileSearchProcessorViewsSystemViewsExecute
囹诩■周■HIH.I0
ARM920T-Registers1
RegisterValueA2
S
B-Current{…}4
FrO0x000080345
l-rl0x000080846
h-120x000000007
卜工30x000000008
9"工40x000000009
410
i-r50x00000000
11
I-r6
0x00000000工
;2
Ir70x0000000013
Fr80x0000000014
I-1:90x0000000015
|rrl00x0000000016
Hr110x0000000017
18
?-rl20x00000000
19
rr130x0000000020
”114
0x0000000021
iPC0x0000800422
cpsrnzcvqIFt_SVC23
spsrnzcvqift_Res24
©User/System{…}25
0-FIQ26
27
国IRQ
{…}28
0SVC{…}29
©Abort{…}
0TTnrtpfV
图17
在图16中,当选择“Memory”菜单时,弹出“ARM920T-Memory”的浮动窗口,从
此窗口内可察看系统任意地址处存储器内的内容。在本手册中,显示了从0地址开始的一段
存储器内的内容。每一行显示了16个字节的存储器内容。在该窗口上点击鼠标右键,可探
出浮动菜单栏,从“size”菜单内可选择以字节、半字或者字的方式显示存储器内容。从
“fbrmat”菜单内可选择具体的8进制、16进制、二进制、ASCH码等显示格式。其它菜单
的使用请参见CodeWarriorIDE使用手册。
Aimmr•««wy八6…g
T«M-J*«»-•«R«<««11♦乂~Aw〃|«*fu|T»t3-tka->•pi•£>•।T«Mr*“i*|
AWIff__0"□
ixODocoooamOQG
IMOOOOOOIDIOFkF00nnEjrm«»ry
hODOOOO^l10Wrr&,414b,
UOOOOOO>U10Mrrn
hrOCOOQ04a10FrMrr
FrTMCI»lr・,,》AN
irOGOOoaM10"MTTrr
_一TfC«l«fit
(>avy«aMttfr
皿51n»H<LM:
XafrM&b
L»<filt
T,pp»r・t・K
|A/W92DT|W,BIcKtetUlO-cacre(Fh/pcdffrnnayflUILitteenAnFl««(■ri»A*»
iSwithMtinQDstKACarnnCh«r»l4GliMwrtoTirmProiiHT&
£7c^d*tajnAutraWkCMti*c«.kllevdck»M
R(llC<>>irauw*4wia・8
IAFMRDI15IA,YNCRC*PwiccdCCEE心vl2IB&rwte9051匚QDHEk<AFMUT«VO2001
图18
在图16种,当选择"source"菜单时,可弹出"opensource”窗口,从中可以选择把项目中
的任一个选文件显示在当前窗口。如下图19所示:
图19
(2)"execute”菜单
g。-全速运行程序,直到结束或断点处。Stop-停止程序运行
StepIn-在子函数调用语句处,用“stepin”执行语句,可跟踪进入子函数
Step-单步执行一条指令,若是子函数调用语句,不尽如子函数。
Stepout-当子函数内执行时,点击此菜单,子函数剩余未执行语句全部执行完毕,并
返回到调用子函数指令的下一条指令处。
ToggleBreakpoint-设置断点/去处断点
♦.、AXDIAKVP2OT
£11«&・&ruhEr9tfMkMorVl«wv口「幺,Mtindow
但订臃f|a|cat]J
ARM92OT-―
VAIUSIn
OCurrent1・.・)
xooxoooaea34Qut
•rl0x00008064Cursor
EZoxooooaooo
gx«cutionCont«>:<■
-K3DxOClOOOOOO
E4OXOOOOOOOO.«R*«mlkpolnt
••KSoxooaooooo
IEQuxuauuuooo
卜.七7
Dxonnooooo«AllBr«alcpointM
I'r©oxaooooooo"r^V[EJ,*4
,—»:90x00000000STRU3・[ri]/,4
-E10OxODOOOUUO3UD5£2/r2r"JI
I£110X00000000DNEwordeopy
图20
10)根据上述调试工具的描述,单步运行程序,并观察处理器寄存器的变化。
实验2Arm处理器工作模式实验
2.1实验目的
1.掌握Arm处理器的几种不同的工作模式
2.掌握使用MSR/MRS指令实现Arm处理器工作模式的切换,观察不同模式下的寄存器,
加深对CPU结构的理解
3.理解状态寄存器的具体作用和使用
2.2实验设备
1.硬件:PC机
2.软件:ARMADS2集成开发环境,Windows98/2000/NT/XP
2.3实验内容
通过Arm汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握
ARM不同处理器模式的进入和退出
2.4预备知识
1.ArmAds2集成开发环境的启动和基本使用(请参见系统说明手册第四章)
2.Arm体系结构及汇编编程基本知识(请参见Arm体系结构及编程一书)
2.5实验原理
1.Arm处理器的运行模式
>ARM微处理器支持7种运行模式,分别为:
用户模式(usr):ARM处理器正常的程序执行状态
快速中断模式(fiq):用于高速数据传输或通道处理
外部中断模式(irq):用于通用的中断处理
管理模式(svc):操作系统使用的保护模式
数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储
及存储保护。
系统模式(sys):运行具有特权的操作系统任务。
未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件
协处理器的软件仿真。
>ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大
多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统
资源是不能被访问的。
>除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式
(PrivilegedModes);其中除去用户模式和系统模式以外的5种又称为异常模式
(ExceptionModes),常用于处理中断或异常,及需要访问受保护的系统资源等情况。
>ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器
(SPSRs)o备份的程序状态寄存器用来进行异常处理,其功能包括:
保存ALU中的当前操作信息
控制允许和禁止中断
设置处理器的运行模式
>程序状态寄存器的每一位的安排如图2.6所示:
枭件用标志保W抒制位
11II1
3130202s272635Xa76543Zf0
丁丁「1丁T夕…「「•一「丁「一|•
NZCV../Z.If1M4M3M2MlMO
Dita
CairyBarturtE»endStaletil
ZuioFtOifisaM
IRUdg汕Im
图2.6程序状态寄存器格式
(1)条件码标志(ConditionCodeFlags)
N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且
可以决定某条指令是否被执行。
在ARM状态下,绝大多数的指令都是有条件执行的。
在Thumb状态下,仅有分支指令是有条件执行的。
条件码标志各位的具体含义如表2-1所示:
表2-1条件码标志的具体含义
标志位含义
N当用两个补码表示的带符号数进行运算时.W表示运算的结果为负数:N=0表示运算的结
果为正数或零:
ZZ=1表示运算的结祟为零:z=o表示运算的洽奥为非零;
C可以有4种方法设置C的值:
—加法运算(包拈比较指令CMX):当运算结果产生了进位时(无符号数就出).C=l.否则
c=o.
-战法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1
—对于包含移位操作的非加/减运算指令,C为移出值的最后•位.
-对于其他的非加依运算指令,C的值通常不改变.
V可以有2种方法设置¥的值:
一支可」:」,性制的补码表示的带符号数时・丫=1」
符号位潜出.
一对手其他的非加/诚运算指令.C的值通常不改变。
Q4ARiIv5及以上版本的E系列处理器中.用Q标志位指小增强的DSP运算指令是否发生了溢
出.在其他版本的处理器中,Q标志位无定义.
(2)控制位
PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。
如果处理器运行特权模式,这些位也可以由程序修改。
(3)中断禁止位I、F:
1=1禁止IRQ中断;
F=1禁止FIQ中断。
(4)T标志位:该位反映处理器的运行状态。
对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb
状态,否则运行于ARM状态。
对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令
以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。
(5)运行模式位M[4:0]:MO,Ml、M2、M3、M4是模式位。这些位决定了处理器的运行
模式。具体含义如表2-2所示:
表2-2运行模式位0]的具体含义
M[4:0]处理器模式可访问的寄存器
Obi0000用户模式PC.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院4小时工作制度
- 医院交接班工作制度
- 医院备餐间工作制度
- 医院门急诊工作制度
- 单位伙委会工作制度
- 博物馆保洁工作制度
- 卫生局值班工作制度
- 压疮管理员工作制度
- 县医院门禁工作制度
- 六安市2026国家开放大学工商管理-期末考试提分复习题(含答案)
- 小学五年级英语下册 Unit6 Work quietly!Part A Let's try Let's talk 教学设计
- 一年级数学10以内加减法计算专项练习题(每日一练共32份)
- 通信隐蔽验收监理实施细则
- 【《F铁路公司数据治理体系构建案例分析》11000字】
- 乡卫生院医保奖惩制度
- 内部反馈流程制度
- 就业见习管理制度
- 《发热伴血小板减少综合征诊疗共识》解读2026
- 防雷安全方面考核制度
- 技术团队培养
- 2026年长江商学院金融-EMBA-面试题及答案
评论
0/150
提交评论