arm实验报告最终版.docx

上传人:时光煮雨 文档编号:12515706 上传时间:2021-12-04 格式:DOCX 页数:14 大小:284.97KB
返回 下载 相关 举报
arm实验报告最终版.docx_第1页
第1页 / 共14页
arm实验报告最终版.docx_第2页
第2页 / 共14页
arm实验报告最终版.docx_第3页
第3页 / 共14页
arm实验报告最终版.docx_第4页
第4页 / 共14页
arm实验报告最终版.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《arm实验报告最终版.docx》由会员分享,可在线阅读,更多相关《arm实验报告最终版.docx(14页珍藏版)》请在三一文库上搜索。

1、应举r科技大学品声学在B n HUA2HOKO UMVERS/TY OF SCIENCE AND TECHNOLOG ¥ WENHUA COLLEGEARM与嵌入式技术专业班级:10通信工程1班姓名:万洁学号:100103011125实验日期:2013年5月28日指导老师:郑汉麟1、通过实验掌握ARM指令的特点和寻址方式;2、掌握简单的ARM汇编语言的程序设计;3、了解集成开发环境 Embest IDE及其开发软件的应用;二、实验环境Embest IDE应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入式系统的开发和调试工具。其开发软件Embest IDE

2、for ARM 是集编辑器、编译器、调试器、工程管理器( projectmanager)于一体的高度集成的窗口环境,用户可以在 Embest IDE集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。三、实验步骤1)新建工程:运行Embest IDE集成开发环境,选择菜单项File New Workspace ,如图一,系统弹出一个对话框,键入文件名“ wj”,如图二,点击 OK按钮。将创建一个新工程,并同时创 建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程.。(老师提醒:不要放入Bin文件夹中) NetCtH + NHCtrf+OOpen Work

3、5P4s图b 5top2)建立源文件:点击菜单项 File - New,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。 编辑完后,保存文件“ wj.s”后缀,如图三,四。.qlabjl start.text图四nou rO.ttSnouadd rU.rtljlstart:3)添加源文件:选择菜单项 Project Add To Project Files ,在工程目录下选择刚才建立的源文件.s后缀文件,如图五,图六,图七。Project 肺H Debug Tools Mnd口时 HehSet Active ProjectM To ProjectPcldeSetting-Ah旧图五图六F

4、弱 Workspace 'wj*: 1 project闾 S wj files I Project Source Files_J Project Header Files一国 wj.s图七4)基本配置:选择菜单项Project - Settings ,弹出工程设置对话框。在工程设置对话框中。 选择Processor设置对话框,按照图八所示,进行配置:门口霉黠例事 Flrniolr Uebuu Dlrcclifiiv ComifiVer | A«aernl) .CPU; j ntm/Support lor AV1M/ fAiHllv V«-< I 1cinjf*

5、 |I nclfennFl 11| E ndlHinrliphrfal MeF.: C hip : I-Hulld T ;T»l* Bur AMM图八 选择Remot皱置对话框,按照下图九所示,进行配置:Mwcc or f-le rtiivli? Oe liugi Dire titnrvr E 口niilleir |4VLcrnDtc datrwiicc-:"CML vraitaw-l «4miFl»lor li>r AJ-4MFVrrr: 1 V7643&gp-E 业rCfkniiiiunlc*1il<ijiii type:I f

6、LiPAFiiillC-l-LJ*I ILJ*1K图九选择 骸 籥盘最右边一个进行编译,显示如图十,则编译成功。Building project: wj arn-elf-as -gdwarf2 F :ARMExarnpleswjwj ,s -o .rtebGgwj .arm-elf-Id -oAdebugSwj.elf .dgbug'aj.oConntand(s) successfully executed .图十选择 Project Settings 示,进行配置:Debug®置对话框,按图4Prcjeet SrttingsSettings For :Processor R

7、emoteDebug . Directory - Compiler Assemb . >h 49 Workspace Jwj': 1 projectfs向踊1售血3O Project Source Files _I Project Header Fites 国1 wj.s打开图十一rProject SettingsSettings Fuir :查找范围CI);Fi Workspace 1 pra|ect(swj file自-1- Bi Prajecl Soiurci: Files1- Bi Prajeict Header Files 庄|图十二Category: GeneralS

8、ymbol file :修改日期2013/6/1 11:00Processor Remote Debug | Directory | Compiler | AseEb * I "CaCegory | GeneralSyinbul tile :|F:yiR MEx mp I eb iigwj.e IfAction atfier cionnected足 NoneAuto downloadLJCommand script图十三 选择图 篇矗最右边一个进行编译,显示如图十四,则编译成功。Building project: wj arm-elF-as -gdwarf2 F:ARMExample

9、swjwj.s -o .debugwj .otfrm-elf-ld -o Adebugvj, elf AdebugXwj .0Con)Rand(s) successFully executed.5)选择菜单项Debug Remote Connect进行连接软件仿真器,将存储器地址改为0x1000 ,如图十五,执行 Debug Download命令下载程序,并打开寄存器窗口。打开memory 窗口,按F10进行单步跟踪,观察寄存器的数据变化并分析。ooomooo O0BO10Q3 OOOD10O6 DOO01009 00001900 OaODIOSFER FF FFAddress:.R15: 0

10、x00061008f SP: 0x00000004 LR: OXO0OOOOOQ| J PC: OX06Q01098族 cpsr: OxQOoaoOda|0皿财。11口nou7% 83±iBxninniin nn4PIIFUf «i<nEyUtKUUUiU<1 UIIRnitdi应仙U。 UO匚b0x1 口配加 MUOdMOSUilfKI以啊用“1据照则M*sviiwOMBiDH-fffffsvi<n>uQwQiQffiFff FBxaniRIlrl H-IeSkiimuUK 口口+千干FFfi liKUUUUl U7Ushiinu购11时+

11、5;抻g I-fitfiirrrfrt* nat flw.MMMaM nil 时。哑口触的 A2i以口口口口的加5:5 Reqi&ler | A 3enphffrBl |按照老师所说的,将源程序的 add r0,r0,r1中的add改为 adds,并设置 R0, R1分别为BxQBOaii 0Q0novrOp tt3|RxQ80aii BOknour1B tt1BBkGO0。能addsr0p rO, id9x00QQ1 B0ch0n1 喇IBxOBOai 01QsuinufbcOBflAI 01*suinuOBFff=Fff|BcOB0tt1BIS£uinu驰日町"

12、FffRKOBfiQI IMcswinu眠。部听as白suinuaxoaoai B24suinuexoaoai li28suinu觎B肝"Fffex。聊用n2csuinuMumwn 暄口q”inu触图0xffffff88和0x000000aa再次观察,得到如下结果:R13: 0x00080000:理 RM二 0X06000000=% R15 : 0x0000100c;“ SP: 0x00000030| LK: 8x00008000“PC: 0X006Q1O0C:6 CPSR: 0x20000003“ SPSR: 0x00800000四、实验内容:1.(原题目第二题)编写程序将R2的高

13、8位传送到R3的低8位(不考虑 R3的其他位)源程序:.global _start .text/*把第一个立即数送进r2*/*把第二个立即数送进r3*/*取r2高8位到r0*/*r3低8位清零*/*r0逻辑右移24位后与r 3相或,结果送进 r3*/_start:mov r2,#0x66000000 mov r3,#0x88000000 and r0,r2,#0xff000000 and r3,r3,#0xffffff00 orr r3,r3,r0,lsr #24 stop: b stop .end调试结果:Download下载:Ann近HI方面凝丽0X00011 鼬movr3, »

14、-2fi132<>59209x0091008andr0f r2T #1677721601X0000100cbic13f r3T K25Sg &0001m 8orrtJ3f r3p rfl, Isr /24瞰 OU HUI 0r1UlbUX1U14晶帆附kI Bd SsuinuOxUBffffFf眠口 9 口1 01Csuinu以 an 序口 102 bsuinuflxOBffffFf加nn刖0 1哂StfinuflxflflffFfFFY pxftflflftlflfflRwl huSiKflfiFfFfFfAddress: SKlieoodHJI*B +1 +2 1-3

15、+H*BUB01 DQQ 66 2U AU E3 22aaommas 33 aq es ff qiiWCI喇 im 02 EZ FF 3fi C3 0.R口咖舶F E3 29 3C 93 E1 .一皿咖 0114 FE FF FF Eft FF BEh? IFF FF FF IFF FF .,.,9G0&1»1 FFF FF FF TF Building project: 叼2arn-elf-as -gdwarf 2 Fas -u ±nEhu9,uj2 工口F :fiRMXBinXwj2<wj2ASnbler mes弓自日电与:F:XflRMXBinXvj2&

16、lt;wj2,s:6: Warning: end of file not at end ularm-elf"Id -0.debuguj2,elF .debugXwj2,oCioinnijnd(s) successfully executed»取r2高8位到r0:DkOOGS-1 60QHDUr2, #1711276032上!dX皿则眄4rmw附0-2 胪! 326592 U割依加眄1 G眈andM.1九 tt-1677了如6i9x0901 00cbicQ#255DX0BOO1011urr3. r3, ra, isr M24必皿眄1 014b0X10140x00001 018

17、写 hiinn0X00FFFFFF9X0OQ01 01cuinyBxBBfFFf FF8x88001020swinu0X00ffFfFFd9x0000102写 MzinuaxOaffFFFF0x08001028uino0xB0f FFf FF即9|l3- Currentf Rd: 0x90090080。R1: 0x00000000.R2: 0«66080000。R3: QxSSOBSOOQf Rif: 8x00000000f,R5: QxDOODQOOOr3低8位清零:9x00001000mour2, 817112768329x00001 004mo。r3 r #-201326592

18、0andrd.0一167772169x09001 QOcbitr3, r3, W255(JMUU0U1 01 Horrr3, 13, rfl, Lsr tf24QX013QQ1h0x00001 Q16syjinu0xG0ffF<fF昵皿G01 U1CsJiny船眄HFFfF0x09001 02SswinvOxOOfFFfFF-I型 gII日._ Currentj y rb: axAfioeaoaQ;0 ri二 uxouoguoso、* R2; 8x66000000;0 R3: DX880gUO9Or0逻辑右移24位后与r3相或,结果送进r3 :0x00001000mour2, tt171

19、127fi032zl0X00001&94nour3, #-2013265920ftXflOBOIfiflRandr% 16777216曲口君道仙。chier3, r3, 0255囱&K毗岫1(91。orrr3t r3, r0, Isr tt249xoaaoi 014b以1目1U0X00001 016swinyAxOOfffFfFOxOOS01O1csuinu0x00fFFfFf0x00081020swiny0K00fFFFFF-i空g日.Current力 m: oxnaoennoB;& R2: SX66Q00008f R3: 0x8a0000000x00001600HD

20、Ur2, #1711276032OX0BOO1OMnour3, tt-2013245920,0x00001008andP0, r2, tt-1677721fiDxOOaQIflOcbicr3, r3. #2S5oxDoarittioorrr3T ra, rBT Isr9x00901 014b0x1914OX0OOO1O1BswinuBxOOfFfffF0x0030101cswinuOxOflfFFFFfOK00001020stnnuOxBBffFfffOxBOOM G24swinuflxOBfffFffBegI日蠡 f- Current0 RD: 0(x66000000:)R1 : 0x000

21、00080 R2: 0x66000000-> R3; 880000663 R4: OkUU0»UU0O 公 EL. n. nnnffmnnn2.(原题目第三题)R1 : R0o编程实现64位的加法运算,要求【R1 :R0+【R3: R2结果放回.global _start .textstart:mov mov mov movR0,#24R1,#12R2,#16R3,#18ADDS R0,R0,R2 ADC R1,R1,R3 stop: b stop .end/*R0=24*/*R1=12*/*R2=16*/*R3=18*/*R0 等于低32位相加,并影响标志位/*R1等于高32

22、位相加,并加上低位进位*/*/凶Jl*0 +1 +2 +3: +4*iib n© nn E3 nc .0D901D0510 AO E3 10 20.一U40U1熊RA« E3 12 U0 n。 .d.""I00061QflFE3 Q2 QD 90 EQ 里仲00001014g3 m1 ED FE jA dldrz |Qk1O0O:1.Download下载:阻DXgUWETI QgQnouf 124SKoeemao4Figyrl. #1?10x010001008nuv2 ItfiaHBUGlUUcnowr3. tIBftxnn»n ni»

23、;rd, rfl, r?RMOBOO1014a deri j ri # tj3UXU0UU1U1HbBxIfrlSBxQflQQi nicswinvBxflQfFFfFF%皿0口192。弓 tdnu0x00fFFffF1124swinuSKSfrFFFffFftxQ0QQ1S28swinu0x00fFFfFF0X09001 02Csinu0X00fFFffFLJ- -Ouilding project: wj3 -arm-elf-aS -yduarF? F:RHlBinuj2debugwj 3 .s -n1aAtlebuq'MjW -uF:n!RMBinXwj2elet)ugwj3.s:

24、 Assiehbler resfjges:F:ARMXBinuij2XidebugXuuj3,5:Q: Warning: end of File not at end carm-elf-ld -o.debuigwj.lF .Xdebugywj.oC<unirkdn(l(&)executed. 单步跟踪后的结果:|»X0OO01C0Omovr0t 井240x00081 oaunoutT* t(12QXBO0Q1DO8novr2T tt16OX0QO01OOCnour3r tt189XQ0001D1Daddsr0, rO,r2QXOOOQ101Uadcri, r1fr3lE

25、aaxBaoeitjigb6x1018OX0OO31O1CswinuOxOOFFFFFfHw nona-i oacic iiii n nflv序。工工工工"存储器的结果显示:+ 0 +1+2+ 3+4OBOOIOOO18 00ABE30C 0690100510 ABE31020.00001 BOAA8 E31239AO06001QOFE3 02CO9。E0 0SOO1 叫 403 1001E0FE 00001019FF FFEiAFFFF 00001 01EFF FFFFFFFF Address: 3x1000寄存器的结果显示:R0-RO+R2 ; R1 -R1+R3:日-,P Cu

26、rrent> R0: 0X00000028R1: OxOSOOOOIe 中 H2: 0x00300010 v R3: 0x00000012处!J- R13: Ok 0 0OB0B9Q/ R1JI : UxllUUttUDOItms : nxoniini 01sw SF ; Ox O0009BOO. LK ; Ox BOeiJttBBOpc : non mi ni 8J CPSR; Oxeoaaoadaq SPSR: BKOOaSOBBO3.(原题目第七题)编写一段程序计算 10!.global _start.text.equ num,10_start:mov r0,#nummov r1,

27、r0s1:subs r1,r1,#1 把 r1-1 放入 r1*/ mul r0,r1,r0/*r0*r1 放入 r0*/cmp r1,#1/*比较 R1与1的大小*/beq stopbne si stop:b stop.endoxomiooo 0x00001004 0x00001003 oxoeomeocox oom 0100x06001 0x000010180x0000101c 0x08801020beq0x101ctone0x1008b0x1 Q1cswinvOxOOFfFffFcmpri, It1s u V bl o o u u oos n-分析调试:0x000810000x00001

28、004nounourO, tt10rr1, rG- Current 0x00801008subsr1t r1f fl1 :j RO: OxOOOOOOSanul皿 r1, rGF30x00001010cnpr1( #1i R1: DxOOOOOOD?0x00001014beq0x101cEVDX0Q001O1Sbne0x1008:。R2: 0x000000000x0000101cb0X101CV0x00091020swinuBxOOFFFfff :$ R3: 9x00000000 =9-1=8,10*9*8=720,换成 16 进制是 2d0。第二次执行S1, 第一次执行 S1, r1=10-

29、1=9,10*9=90,换成16进制是5a。-Current -RO: 0x000SQ2d0R1: 0x00000008R2: 9x00000000R3: 0x00000800依次执行 S1 ,到r1=1,停止,10*9*8*1=3628800,换成16进制是375f00。0x00001000 0X00001004 0x00001008 GxOGGGI 口耻nou ROU subs RUlr0, mo r1, r0 r1,11, rG, r1,rOmy一 Current .一.RO:GxO0375f刖00x00001010C叩r1,R1:0x000000010X00001014 0x00001

30、018 0x0000101C 0X00001020beq bne b suinu01c 0x1008 0x101C OxflOFFfFfFIL«2:R3:0X000000000x080000004.(原题目第八题)串拷贝(R0指向源数据的首地址,R1指向目的数据串的首地址) .global _start .text/*指向源数据串R0*/*指向目标数据串R1*/*R3=8*/*返回*/*调用串拷贝子程序*/.EQU NUM,8 _start:LDR R0,=srcstrLDR R1,=dststr mov R3,#NUM mov LR,PCB strcopy stop: b stop

31、/*字符串的复制*/*装载字节同时更新地址 */*存储字节同时更新地址*/*判断是否结束*/*不是,则继续*/*返回*/strcopy:LDRB R2,R0,#1 STRB R2,R1,#1 SUBS R3,R3,#1CMP R3,#0 BNE strcopy MOV PC,LR.datasrcstr: .long 1,2,3,4,5,6,7,8 /* 定义源数据串 */dststr: .long 8,7,6,5,4,3,2,1 /* 定义目的字符串 */分析调试:Compiling File: F:ARHExamplesujvj5Xdebugujdebuguj4.sarR-elf-as -g

32、dwarF? F:ARMExampleswjwjSdebugwjdebugwj4_s -o,debugwj4.oCommand(s) successfully executed, 单步跟踪后的结果及存储器的结果显示:慨腼财皿回Idr他pc,tt28;9x103 00X00001004IdrtT. pc,#28;9x10340X00001008nou3. tt8mt)ulr, pcOKOOOai EMOhoxi si abIOM0OQO1Q18Idrbr2. r0,#1OX00QO1 01Cstrbr2. Ir1* «12.存储器结果显示Address: exiebflF2KKwogo

33、noog28009FE528(00001085109FES0830690&10BAAHE30FE。A目 00001 OOFE1000000EC-*09001014FEFFFFEA01OB0Q1O1920DflE4012aQ0OO101EC1E40130S3BS00001023E20000S3E33.naecvift9QJ . li匚0L匚匚iacc¥寄存器的结果显示:R15: 0x80081018 sr: ox du nue i) LR ; Oh 00 0(11 01 u PC :QS0G1 Bd SCPSRi Ox S0O0OSd3旦钟gI日,CuKrpnt巾 R耻 000

34、008138/ R1: Dx00008158五、实验体会心得:这是第一次接触 ARM与嵌入式实验,在此次实验过程里,我 发现实验课比理论学习课有趣得多,因为老师一边讲解怎么使用软 件,一边询问我们相关知识点,不仅使我们记得模糊的理论知识变 更加清晰确切了,而且也在对软件的学习实践中,增加了浓厚的兴 趣,真正实现了手把手教的详细教学。认真听老师讲,积极主动去 思考,我发现学习起来,并没有想象中的那么难。不懂的问题,不 断去尝试调试,并请教老师,可以有很多收获。以下是本次试验中的学习收获:1.为何要将存储器地址改为 0x1000,而不是从0x0000开始(这是 老师问到我的问题)2.00系列可以存

35、放程序的范围,分为四个空间 内部程序存储器 地址范围 0000H-0FFFH 共4KB ,外部程序存储器 0FFFH-0FFFFH 共64KB ;内部数据存 储器00H-FFH共256个字节(其中包括低128字节和特殊功能寄存器 SFR 128 个字节),外部数据存储器可扩展至64KB。由于异常向量放在064字节中,系 统要用到,所以为了避免冲突,选用从 0x1000开始的地址,即从4K开始的地 址。2 . little Endian / Big Endainlittle Endian就是低位字节排放在内存的低端,高位字节排放在内存的高 端。而Big Endain正好相反。3 . Add /

36、Adds 的区别Add是不影响标志位的加法算数运算指令,即操作结果不更新CPSR中的相应条件标识位;而Adds是影响标志位加法算数运算指令,即操作结果会更新 CPSR中的相应条件标识位。4 .进位和溢出是两个不同的概念溢出标志OF和进位标志CF是两个意义不同的标志.进位标志表示无符号 数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结 果是否超出范围,运算结果已经不正确。5 .程序书写中注意.global _start中间是有空格的,而不是相连的。6 .因为是单步调试的,所以要注意先连续按键F10三次,再去修改Rigester中的数据。7 .不仅可以用F10,也可以用F11进

37、行单步调试8 .调试过程中遇到的问题如:1:B 购 Workspace Wp1: 1 project|s)B 群 wjZ filesB 口 Project Source Files由 wj2.s省wj3港I 1 PtnisH He拇FiIrs y Fu吗fl Ei * I.qlobal start >textmou R1M12mou R2.K16 mou R9 tit1SADDS R%R%R2 ADC R1PR1,R3 stop: | b stop -endLdConpiling filo: F:flRMBinnj2d&tJugwj3-sarm-elf-as -gdwarF2 F

38、:ftRM0inuj2detiugwj3.s -a Aclphugiuj.qf:AKHBinwj2deDugwj3,s: Assem&Ler nessages::F :ftRllBin八加匕叩。2算.:5t 0二 Uartiing; t?n(J uF file unt: at encl 。干 a, linu; nEwliriE fn&ertEdF:AMHB:inMj2dEbijgHj3 在:11 : Errur:由己d in与tructi口n ' b EEupError executing anave curwnd.于是我把程序代码改写为stop: b stop即写为一

39、行,然后保存,结果如下:ADC R1SR1rR3 stop: b stop| .endCompiling file: F :ftRHBinXwj2debU'gwji3 .s-3rm-plF-as gdw<arF2 F:fiRMBiifiwj2dPbijgi.iij3,s 一口 ,KdbugXwja BoF:AiRI4Blnnj2debugMj3.s: Assembler messages:F :ftRHDinuj2debugwj3.s: 8: Warning: end off File not at end of a linu; nifline insertedComnjnd(s

40、) suocpssFui11iiii executed.2.程序中偶尔还会遇到问题如下:F:XARriBinuj2debiiigXwji3.s: Assembler oessages:F :ARMBinXuj2debugwj3.5 :B: Warding: end nF File niot at end oF a line; newline insertedcrmEiel+ld 二口 dEbiigi2j 2,El F . ciEtiugwj2 口 dEhijgMj3:口.(jpbug“j3.q;F:ARI4、6in3j2(lPtiugwj3.s:multiplp definition 。干 “

41、_5tart.dbugXujS.ozF:fiRMBinwj2uj2,5:U: First deFined hereError executing above cominand.于是我重新建立项目文件,分类安放文件夹的位置,就慢慢改正完成好了3Embe&t IDEI士F:AR MExampl esvyjwj 5d eb u gW4 占, Cannot compile this file because it is not part of the active project!这是由于没有将文件添加到项目文件中引起的。4jpMo build configuration for projec

42、t: wj而这往往是由于配置过程中过快,不细心,最后一行的Built tools忘了进行配置为GNU TOOLS FOR ARM 引起的。改正后结果:Conpiiing File: F:ARI1ExanpLe5Xwjwj5Xdebug<jj<i*sarm-elf-as -gdwarf2 F:ARIAExanplesXwjrij?debugwjh-o.debuguj44Contmand(s) successfully &xecut9d.5.Warning: Load symbol file failed -Error: download address illegalr please modify download address.这是由于没有将symbol和download文件加入导致的,一方面是由于自己的粗 心,一方面也是由于对软件使用的熟练程度不够,以致于不能清晰的去做每一 步,总是看着错误提示,才知道哪里错了,再去加以改正。当然此次实验中的程序源文件,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1