1 / 13
文档名称:

arm实验报告最终版.pdf

格式:pdf   大小:2,166KB   页数:13页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

arm实验报告最终版.pdf

上传人:1781111**** 2024/5/11 文件大小:2.12 MB

下载得到文件列表

arm实验报告最终版.pdf

相关文档

文档介绍

文档介绍:该【arm实验报告最终版 】是由【1781111****】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【arm实验报告最终版 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..与嵌入式技术实验报告专业班级:10通信工程1班姓名:万洁学号:100103011125实验日期:2013年5月28日指导老师:郑汉麟:..、通过实验掌握ARM指令的特点和寻址方式;2、掌握简单的ARM汇编语言的程序设计;3、了解集成开发环境EmbestIDE及其开发软件的应用;、实验环境EmbestIDE应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备的面向嵌入式系统的开发和调试工具。其开发软件EmbestIDEforARM是集编辑器、编译器、调试器、工程管理器(projectmanager)于一体的高度集成的窗口环境,用户可以在EmbestIDE集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应用程序。三、实验步骤1)新建工程:运行EmbestIDE集成开发环境,选择菜单项File宀NewWorkspace,如图一,系统弹出一个对话框,键入文件名“wj”,如图二,点击0K按钮。将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程.。(老师提醒:不要放入Bin文件夹中)■Emb?tQEPre亠Educat「販]£dii_VwwBuidfrtbugDif**Qri+W诊Qrl*OHr*)建立源文件:点击菜单项FileTNew,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。编辑完后,保存文件“”后缀,如图三,四。tutvUrl:■■rflJOIUUrljilrdrfl,rlfClop:hHo..end:..)添加源文件:选择菜单项ProjectTAddToProjectFiles,,如图五,图六,图七。ProjectBuildDebugTookWindowHelpActiveProjed图五图六:-43Workspace'w]I:1projectfs)^******@wjfiles口ProjectSourceFiles■-LJPrajectHeaderFiles-“禺VI].s图七4)基本配置:选择菜单项ProjectTSettings,弹出工程设置对话框。在工程设置对话框中。①选择Processor设置对话框,按照图八所示,进行配置:岸切F<eiTb4jifcUebumLSil-rE4:l?piler|emb*图八*Ii*ilc1ndllS-upiflniirVtorArif■■■■Ml#Hife-gt?n②选择Remote设置对话框,按照下图九所示,进行配置:SI-Surl-!4I^IrviAfvii?Lvriibewl.¥-4miFl?lurfurAUMfV1TF:&>ipiEE<t:JC<*rraiiiunlEJkiliomtype:Ifi.<Rsr?ileiFM?rl!*LJ^IIu>ia图九:..选择:::一L-J最右边一个进行编译,显示如图十,则编译成功。Cominandf?)^uccessftilltjexecuted图十④选择Debug设置对话框,按图^一,十二,十三所ProjectTSettings示,进行配置:图十图十二图十三:..二:一A最右边一个进行编译,显示如图十四,则编译成功。-----------------Auiltlznqproject:j--------------------刖□rn:切arn-elF-ld-(5)essfullyexecuted5)选择菜单项DebugTRemoteConnect进行连接软件仿真器,将存储器地址改为0x1000,如图十五,执行DebugTDownload命令下载程序,并打开寄存器窗口。打开memory窗口,按F10进行单步跟踪,观察寄存器的数据变化并分析。Address:R15;0x09001608H?Ur?*J上<:add产?;尸0“ifH;■ftE1■?:i^atMiBin%-HikIWfFfFF_15*law4kV?fffffF3--:4KD^ID1CiHinua-:<jw-n*fi=i*i<w0転啊SP:QxnOOOOHBQLR:00馭卿朋凹PC:axUOOOl0d8£PSR:9K0SS38Bd3dE13:noH0■宅noyDhUdUUl0^4nduljri!mv#m:c^Mtotkoe^—fHZ:rfi』叽rd'*R15:iKiMiinDiHiaRofliictiir|asxjoeelescb0x180cAPferipherHl|tH00001818nvCxMFfrFFF第SP:9XUOOQ1Blft^uinvQxDOFf^FFf0LR:9xonn0nooofiMaoDQiais^.llKRtJflxDQFfFFFf按照老师所说的,将源程序的SMBOBQI01CSUlllilUflxBaFfffff中的改为dPC并设置!0000199c分别为addr0,r0,r1addadds,R0,R1suinuBxtVFfFFFF0EPSR:0x2DUa0ad3d0xffffff88SXUU&U1和昨i0x000000aasuilnui再次观察,得到如下结果:U5{口叶AxnDQOIQ7SnvGxfiftffFFffSPS?:OXOOHO0O0O0^89001B2tsyimvQxOOffffFf—I■尸科u—inu収朋4“卜44图十五:..:原题目第二题)编写程序将的高位传送到的低位(不考虑的其他位)源程序:1.(/*把第一个立即数送进r2*/movr2,#0x66000000/*把第二个立即数送进r3*/movr3,#0x88000000and/*取r2高8位到rO*/r0,r2,#0xff000000and低位清零r3,r3,#0xffflff00orrr3,r3,r0,lsr/*r38*/#24stop:bstop逻辑右移位后与相或,结果送进/*r024r3r3*/.end调试结果:①Download下载:nuur2,**********HHNUMMIANilnnwrOspdlldr叭池、11-1*777216foafiacifflaibitr3,r3,弓写khcHUHMtHMiierr,r:[,rB,斗”ftKOOOOlOl^13OK1014OKlMDIOIflbujinuDxQBfFfFffHKMUHHiriC强inuUMHUIIfFFFOK?0BO1(^Sswin^ONOOFfFFFFflsaeantfli?&^uiinuD>:iOftFfFFf1=ihcuaatHH&'A<?;winuffFFFM-------------------—Builrtingproj?tTwj?--------------------------Jflddress:2arnrciF-as-gtluarfaF:.s-□.*a*1+2+3+^i*?0fl1BM647tiAH£3??F1?_s:tfi-Earning!endflFfilenot白tmdlanouuioK時AHL3PF0^-叭dirii-HJlF-ldFifj?u>nnaniRnrE32)09CB9Fl,uu^uimi4FEFFFF1ERFF.....Ciomanid(s)『FFF____r②取r2高8位到r0:900010?0nonr2,1**********鞅卿斛mov281326^979网sxflnflRinftRAnnrnr?i-ifi777?ifi#tBXUUUC1QOcdier3,*25SCurrent罰9K00GG191Qorrr3r3r3Jsr42■?HP:HH4U14in^HmIH:trf』鼻OOCdflmb0x19149xfl6?0d9OeaxnnntiisissmlnuexntiFffffF0K2:UH66UU0UUUBxLJHbUlEhrinuajcULM-1-+4;f:P?RS:9xB8?OS9O0890SBitzasuinuKHUIF:UMUUUUttUUUooeciS24suiFiusorrrfFF*R5:9KCQ?g^900n舶帕PMZRsmluuftxSOffffff③r3低8位清零:txaoasiiBDnaj|趴#1711276832■xifreaiBB4nunr3ll-2(l1320592fP丸rmF?p?>ihT772i丽oxsnoiaiaDRBxOHeDlHttcbiur9r2,it咖EWCurrentP8x9060181Barrr3,r3,Lsrt244KU:?x66mW<l48x90801614b0x191UiR1;?xaoaaifiiabwinu^eaFFFfffdR?ZAxbimunn-tcswlnulIXflrtl-FHtfdR9;VXUUUU1U2Usuinuuxnui-FH^f:..r0逻辑右移24位后与r3相或,结果送进r3:0X00001flOOmout2,#1711276092r3,0x00001SS4norfl,rz,1-1677Z216仪J9]UXtfUttUIUUHand8x00001eocbicr3,r3,N2S5口劉8x00&01010orrCurrent——exooaototubext01u0RQ:0x66009000QicflnnillDIRnuDKDQFFFfFF0RI:axaeofioooo0X0000101C£t>inuSxBOfFfffFftxOOFffff0R2:0x6^0000000x00901620sv>ir>uf0KOOOQ11100moi>r2,#**********K0000100^noi>r9,#-2013265?200x00001008andi-9,r2,tt-16777216r3,0^0000160cbicr3,W25S撐--Current--------JZIUKUHHO1tHM□rr■RO:Ox6?SOO?8nO<fi0D01014fix!S140R1:0X00600000UKU?UU1(H8svdnu||増R2:Ox66C0O0flODKSBOOI&ICsudnuBxBSFFFFfF|]0R3:0x??Q00U&6DKDQQ01620suinuOXOftfFfFfFswinuBxBSFFFFff4R4:0080162^1nr-—rn--nnnnnnc2.(原题目第三题)编程实现64位的加法运算,要求【R1:R0】+【R3:R2】结果放回【R1:R0】。.,#24/*R0=24*/movR1,#12/*R1=12*/movR2,#16/*R2=16*/movR3,#18/*R3=18*/ADDSR0,R0,R2/*R0等于低32位相加,并影响标志位*/ADCR1,R1,R3/*R1等于咼32位相加,并加上低位进位*/stop::■xUHh91mur?.WMHtKlHH町的rw?urlB1?r£h(******@Q9imrwvr2.******@S9190£IHfVr3,?mifluvimi41d!c1-1*rlraFMxniiMHiminWM1IT1KQ^OC01191c首Bn甲Q^OQHFfF^Ff€^06091920$uinvON06FfFfFfswinvBHflBFfFFFfttxOHM9lE7MnuMxBOKFlffsulnvU>i4IUi1f乌単--BuiIdingproject:u]3-drPi-Elf-ji!i-ydwdirf2Fams:BxiflfinTXdeb&-b:ftirseuljlyrriuu*注』唱aoiMrionai?nnnnr5:Q:UrfFning:nn<luffilfnor^niiIIBHMfllHfiBSIBE3nuunukiAAil12…-elf-l?dMMiaOFE30200ssMim?310mDumiidiiilKs)i>ucc^sbfullyux^uuled?:..::^00001600IIIUUF0,B21JIHDUr1,1112awoOflsiooBnour2,1116GwOOfleiflOcITJOUr9,tfISOOOSMC1Baddsrd,rfl,r2KkOQO0lO1ifddcr11r1,r3-Rx?oonoisb0X1018fix??001H1£suinvOxOOfFffffII-?Hmi②存储器的结果显示:+0+1+2+3+Uoomsee18OUA0E3OC■■■■oesoieo510noE31020■■丽■0600100AE31239AU…B00Q01eor曰02as90EO■■■■OQ0U&1JI0310EOFE■■■■006(1-1019FFFFEAFFFF■■?■Q004101EFFFfFFFFFFn■■■③寄存器的结果显示:R0—RO+R2;R1—R1+R3:RegCurrent------曰副----------WRO:0X60000028j|:dR1:OxOGOflOQIe00090990M:dwui::OxDUOHflMO?ms:nxnnnniB3;血卿胛凹霍*sp;BoeoaaoadLK;:nxnnnnims异*PC:oxesaaaada:彳CPSRSP^R:B00000803神K-A3.(原题目第七题)编写一段程序计算10!.,10比_stamovrO,#nummovr1,r0s1:把放入/*r1-1r1*/subsr1,r1,#1/*r0*r1放入r0*/mulr0,r1,r0/*比较R1与1的大小*/cmpr1,#1beqstopbnes1stop::..①第一次执行S1,r1=10-仁9,10*9=90,换成16进制是5a。hooooiomovmo0x06091004rwurosubsRD:0x0090095a0XQ0OO1QO9r1It1tulr1,rflcnpR1:0x00000009OK00O0101Ott10X00001014beq0x191cR2:******@001O1Sbneox1m0X0600101Cb0X101CR3:oxflooeoaae6XOB0O1O20swinuOK00FFFFFF②第二次执行S1,r仁9-仁8,10*9*8=720,换成16进制是2d0。三働—Current—0x00801004ro,#10r1,rfl0X0O0Q13Q8ROMniour1r1,U1rO,r「“R0:OxS9O0O2dO1OxO0601OBcsubsnul1,rO)R1:0x000000088x00001010cmpr1#1t1X88081014beq0x1Q1c0R2:0x900000090x00601014bne0x10030X00001Q1Cb0x101c0R3:0x00000090axemiEi2oswinu0xO0fFFfff③依次执行S1,至Ur1=1,停止,10*9*8……*仁3628800,换成16进制是375f00。-密—Current0x06001000nourd,tlfiBxOQOOl004nour1r0t0x00001008subsr1,—0RO:0x00375(000(ulr0,r1,rftr1S1(0R1:0X00000001pt0X00001014beq0x101c“R2:0x900000000x00001Oltbne0x18080X0000101Cb0x1QICLgR3:0x000000000X09001920swinu0X00fffFff4.(原题目第八串拷贝(R0指向源数据的首地址,指向目的数据串的首地址)R1题).?EQUNUM,8_staLDRR0,=srcstrLDRR1,=dststrmovR3,#NUMmov/*指向源数据串R0*/LR,PC指向目标数据串/*R1*/Bstrcopystop:b/*R3=8*/stop返回/**//*调用串拷贝子程序*/:..字符串的复制*/strcopy:/*装载字节同时更新地址*/LDRBR2,[R0],#1STRBR2,[R1],#1/*存储字节同时更新地址*/SUBSR3,R3,#1/*判断是否结束*/CMPR3,#0BNEstrcopyMOVPC,LR/*不是,则继续*//*返回*/.datasrcstr:」ong1,2,3,4,5,6,7,8/*定义源数据串*/dststr:.long8,7,6,5,4,3,2,1/*定义目的字符串*/分析调试:ConipilingFileiFarn-elF-as①单步跟踪后的结果及存储器的结果显示:ldrrfl,[pc,#28]:0X103BUXUQSC1UC14Iflr【,it28j;0x163^1&x0Qg(iioo?HIDUr2ttBrOKfJH9G10Hrnoulr,pc0^00661010b0X10180x06061(Hhb0x1014ldrbr2[rU|,#1(0000101cstrb[rt],#12?存储器结果显示0*1*3*3十090010012S009FE528(…衣*00919051S9FE5GS90…-羽A0E90F匚阳AOaoosiOOFE1OOBQ60EA&9001014FEFFFFEI白flibofliaiv20DOE4G1■■■moiaiEG1EA0130S3__ASE000053£3..-S-迟nnnnira■iPFFF寄存器的结果显示:R:nxnnnniSP:axonnunoDnLM:UMU(JUU-|U~l>1PC:U^ltJCPSR:OMoecooods五、实验体会心得:E霁----CunrentR0:9x00008138这是第一次接触ARM与嵌入式实验,在此次H1:909Q819S实验过程里,我发现实验课比理论学****课有趣得:..件,一边询问我们相关知识点,不仅使我们记得模糊的理论知识变更加清晰确切了,而且也在对软件的学****实践中,增加了浓厚的兴趣,真正实现了手把手教的详细教学。认真听老师讲,积极主动去思考,我发现学****起来,并没有想象中的那么难。不懂的问题,不断去尝试调试,并请教老师,可以有很多收获。以下是本次试验中的学****收获:,而不是从0x0000开始(这是老师问到我的问题),分为四个空间内部程序存储器地址范围0000H-0FFFH共4KB,外部程序存储器0FFFH-0FFFFH共64KB;内部数据存储器00H-FFH共256个字节(其中包括低128字节和特殊功能寄存器SFR128个字节),外部数据存储器可扩展至64KB。由于异常向量放在0~64字节中,系统要用到,所以为了避免冲突,选用从0x1000开始的地址,即从4K开始的地址。,高位字节排放在内存的高端。而BigEndain正好相反。,即操作结果不更新CPSR中的相应条件标识位;而Adds是影响标志位加法算数运算指令,即操作结果会更新CPSR中的相应条件标识位。,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。,而不是相连的。,所以要注意先连续按键F10三次,再去修改Rigester中的数据。:..不仅可以用F10,也可以用F11进行单步调试8调试过程中遇到的问题如:***@1:HWcrkspacr1pFDjcd(s]为-頤lilcsiSourceFlle?:--:-***@w^:PrnlFrlHparilprFilet:JiFunc-lec|.global_St<3rt*:鬲AROVR1hl2mokiR2,1i16Ed*:|tThstep_end------------CiiiflpllliiyfllH:F:-----------------------■rit-eLFasgdwarfZ□.Dr:mtolcrnt^s^qr□:F苫XQPDiiqmjH-E:u:聊*rnlnq:QFnotatendOFalin电;ngtillueinfectedF:,*;til:Frrnr:Ir^rrnrtifinilb^tup'wErrore?:bstop即写为一行,然后保存,结果如下:HUCHI,?T,R3stop:b5tOp^.endJ4*CompilingFile:Fl?>-uB卜:flMW tti:丄QF:F0:U^rning:<endcffilenotattndof罷line;neullnrinsertedConnind<5)essfullyCMCout^d?***@:.anfcembl^r(n^££agpst砒endof<)Line;nculincinsertedi??■.xupniiffkuij?.;F;B±nXvjvj2?s;,分类安放文件夹的位置,就慢慢改正完成好了:..xample-5uspilethisfiebecauseitisnotpartoftheactiveproject!口这是由于没有将文件添加到项目文件中引起的***@4biobuildconfigurationFarproj:uj而这往往是由于配置过程中过快,不细心,最后一行的Builttools忘了进行配置为GNUTOOLSFORARM引起的。改正后结果:------------Compilingfile:Farn-elf-as-gdwarfZF-oComnand(5)******@5_________________________________________________________________Darning:loadsymbolFilefailed?Error:dounlo^^downloadatldresg-这是由于没有将symbol和download文件加入导致的,一方面是由于自己的粗心,一方面也是由于对软件使用的熟练程度不够,以致于不能清晰的去做每一步,总是看着错误提示,才知道哪里错了,再去加以改正。当然此次实验中的程序源文件,是在同学们的帮助下,书上,以及网络资源的查阅中慢慢写出的,历时长久,但还是很欣慰,因为感觉自己对一向生涩难懂的ARM有了些许的收获和进一步的提高。