湖南工业大学ARM实验报告

上传人:无*** 文档编号:85759604 上传时间:2022-05-06 格式:DOC 页数:10 大小:248.50KB
收藏 版权申诉 举报 下载
湖南工业大学ARM实验报告_第1页
第1页 / 共10页
湖南工业大学ARM实验报告_第2页
第2页 / 共10页
湖南工业大学ARM实验报告_第3页
第3页 / 共10页
资源描述:

《湖南工业大学ARM实验报告》由会员分享,可在线阅读,更多相关《湖南工业大学ARM实验报告(10页珍藏版)》请在装配图网上搜索。

1、-ARM嵌入式系统原理及应用开发实验报告学院:电气与信息工程学院班级:电子信息1204指导教师:谭会生 *:*:实验一:ARM汇编指令使用实验根本数学/逻辑运算一、实验目的1初步学会使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。2通过实验掌握数据传送和根本数学/逻辑运算的ARM汇编指令的使用方法。二、实验设备1硬件:PC机。2软件:ADS 1.2 / Embest IDE 200*集成开发环境。三、实验内容熟悉ADS 1.2 / Embest IDE 200*开发环境的使用,使用LDR/STR和MOV等指令访问存放器或存储单元,实现数据的加法运算。具

2、体实验参考程序如下:四实验操作步骤1新建工程。先建立一个实验文件夹,如EARMSYarmasm1;然后运行Embest IDE集成开发环境,选择FileNew Workspace菜单项,弹出一个对话框,输入工程名armasm1a/armasmlb等相关内容;最后单击OK按钮,将创立一个新工程,并同时创立一个与工程名一样的工作区。此时在工作区窗口将能翻开该工作区和工程。2建立源文件。选择FileNew菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件armasmla. s。1armasmla. s源程序:/* armas

3、m1a.s */.EQU *, 45 /*定义变量*,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU STACK_TOP, 0*1000 /*定义栈顶0*1000*/.GLOBAL _START.TE*T_START: /*程序代码开场标志*/MOVSP, *STACK_TOPMOV R0, * /*的值放入R0*/STR R0, SP/*R0的值保存到堆栈*/MOV R0, *Y /*Y的值放入R0*/LDR R1, SP/*取堆栈中的数到R1*/ADDR0, R0, R1STR R0, SPSTOP: B STOP /*程序完毕,进入死循环*/.END2使用

4、ADD/SUB/LSL/LSR/AND/ORR等指令,完成根本数学/逻辑运算。具体实验参考程序如下:/* armasm1b.s */.EQU*, 45/*定义变量*,并赋值为45*/.EQUY, 64/*定义变量Y,并赋值为64*/.EQU Z, 87/*定义变量Z,并赋值为87*/.EQUSTACK_TOP, 0*1000/*定义栈顶0*1000*/.GLOBAL _START.TE*T_START: /*程序代码开场标志*/MOV R0, * /*的值放入R0*/MOVR0, R0, LSL *8/*R0的值乘以2的8次方 */MOV R1, *Y /*Y的值放入R1*/ADDR2, R0

5、, R1, LSR *1 /*R1的值除以2再加上R0后的值放入R2*/MOVSP, *0*1000STRR2, SPMOV R0, *Z /*Z的值放入R0*/ANDR0, R0, *0*FF/*取R0的低八位*/MOV R1, *Y /*Y的值放入R1*/ADDR2, R0, R1, LSR *1/*R1的值除以2再加上R0后的值放入R2*/LDRR0, SP/*Y的值放入R1*/MOVR1, *0*01ORRR0, R0, R1MOV R1, R2 /*Y的值放入R1*/ADD R2, R0, R1, LSR *1/*R1的值除以2加上R0的值放入R2*/STOP: B STOP /*程

6、序完毕,进入死循环*/.END3添加源文件。选择ProjectAdd To ProjectFile项或单击工程管理窗口中的相应右键快捷菜单命令,翻开文件选择对话框,在工程目录下选择刚刚建立的源文件armasmla.s/armasmlb.s。4根本设置。选择ProjectSettings菜单项或按下快捷键Alt+F7,弹出工程设置对话框;在工程设置对话框中选择Processor属性页,按照使用要求对目标板所用处理器进展设置。5生成目标代码。选择BuildBuild armasmla菜单项或按下快捷键F7,生成目标代码。此步骤也可以通过单击工具栏上相应按钮来完成。6调试设置。选择选择Project

7、Settings菜单项或按下快捷键Alt+F7,弹出工程设置对话框;在工程设置对话框中,假设选择Remote页面则对调试设备模块进展设置;假设选择Debug页面则对调试模块进展设置。7选择DebugRemote Connect连接软件仿真器,执行Download命令下载程序,并翻开存放器窗口。8翻开存储器窗口,观察地址0*80000*801F的内容以及地址0*FF00*FFF的内容。9单步执行程序,并观察和记录存放器与存储器值的变化。五、实验报告执行-START前将45赋值给*,将64赋值给Y,并定义栈顶为0*00001000,执行MOVsp, *stack_top后sp:0*00001000

8、, 执行 MOV r0, *后r0:0*0000002d 执行MOV r0, *y 后r0:0*00000040 LDRr1, sp取堆栈中的数到R1 ADDr0, r0, r1 执行前r0:0*0000002d r1:0*00000040 执行后:r0:0*0000006d最终实现了两个数字的相加。六.实验总结本次实验主要是熟悉ARM汇编指令和学习使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。本次为验证试验,通过本次实验掌握了根本的汇编语句,实现了根本的加法运算和根本的数学/逻辑运算。在实验过程中记录了在但不运行时有关存放器和存储器的值,经过查询分

9、析,查看存放器和存储器的值,检查结果是否正确;通过这次实验熟练掌握了软件的操作和使用,学到了很多。实验二 ARM汇编指令使用实验存储区数据块的传送一、实验目的1熟悉ARM ADS 1.2 / Embest IDE for ARM 开发环境及ARM软件模拟器的使用。2通过实验掌握使用LDM/STM、B、BL等指令完成较为复杂的存储区访问和分支程序的方法,学习使用条件码,加强对CPSR的认识。二、实验设备1硬件:PC机。2软件:ADS 1.2 / Embest IDE 200*集成开发环境。三、实验内容设计并调试一个存储区数据块的传送程序,具体数据块的传送要求为:将数据从源数据区snum复制到目标

10、数据区dnum,数据的个数num假定为20,复制时以8个字为单位进展,对于最后缺乏8个字的数据,以字为单位进展复制。用ARM汇编语言设计该数据块复制程序的设计思想如下:先将源数据区的起始地址、目标数据区的起始地址以及数据个数赋给选定的存放器R0、R1、R2,再根据每次批量/单个复制数据的个数R3确定用于数据复制的中间存放器R4R11,之后先将源数据区的假设干个数据批量装载到中间存放器中,再将中间存放器的数据批量存储到目的数据存储区,随后进展数据是否复制完毕的判断,假设未复制完毕,则修改有关操作数据地址,并重复前面的数据复制操作,否则,终止操作,程序完毕。四、实验操作步骤1新建工程。先建立一个实

11、验文件夹,如EARMSYarmasm2;然后运行Embest IDE集成开发环境,选择FileNew Workspace菜单项,弹出一个对话框,输入工程名ARMcode等相关内容;最后单击OK按钮,将创立一个新工程,同时创立一个与工程名一样的工作区。此时在工作区窗口将翻开该工作区和工程。2建立源文件。选择FileNew菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件armasm2.s。.GLOBAL _START.TE*T.EQU NUM, 20 /*定义需要复制的字数据个数NUM为20*/_START:LDR R0

12、, =SRC /*将R0指向源数据区的起始地址*/LDR R1, =DST /*将R1指向源数据区的起始地址*/MOV R2, *NUM /*将需要复制的字数据个数存放在R2中*/MOV SP, *0*400 /*将堆栈指针SP指向*0*400*/ BLKCOPY: MOVS R3, R2, LSR *3 /*R2的值除以8的结果存入R3*/BEQ COPYWORDS /*假设Z=1,则转COPYWORDS*/STMFD SP!, R4-R11 /*将R4R11的内容存入堆栈进展保护*/OCTCOPY:LDMIA R0!, R4-R11 /*从源数据区装载8个字数据到R4R11*/STMIA

13、R1!, R4-R11 /*将R4R11中的8个字数据存入目的数据区*/SUBS R3, R3, *1 /*每复制一次R3减1*/BNE OCTCOPY /*假设R3不等于0,则转移到OCTCOPY*/LDMFD SP!, R4-R11 /*将堆栈内容恢复到R4R11*/COPYWORDS:ANDS R2, R2, *7 /*计算需复制的奇数个字的个数*/BEQ STOP /*假设R2=0则停顿*/WORDCOPY:LDR R3, R0, *4 /*将源数据区的一个字装载至R3*/STR R3, R1, *4 /*将R3中的数据存到目的数据区*/SUBS R2, R2, *1 /*数据传输控制

14、计数器减1*/BNE WORDCOPY /*假设R2不等于0,则转移到WORDCOPY*/STOP:B STOP.LTORGSRC: /*源数据区起始地址标号*/.LONG 1, 2,3 ,4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4DST: /*目的数据区起始地址标号*/.LONG 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.END3添加源文件。选择ProjectAdd To ProjectFile项,或单击工程管理窗口中的相应右键快捷菜单命令,翻开文件选择对话框,

15、在工程目录下选择刚刚建立的源文件armasm2.s。4根本设置。选择ProjectSettings菜单项或按下快捷键Alt+F7,弹出工程设置对话框;然后在工程设置对话框中,选择Processor属性页,对目标板所用处理器进展设置。5生成目标代码。选择BuildBuild armasm2菜单项或按下快捷键F7,生成目标代码。也可以单击工具栏上的相应按钮来完成。6调试设置。选择ProjectSettings菜单项或按下快捷键Alt+F7,弹出工程设置对话框;在工程设置对话框中,假设选择Remote页面则对调试设备模块进展设置;假设选择Debug页面,则对调试模块进展设置。7选择DebugRemo

16、te Connect连接软件仿真器,执行Download命令下载程序,并翻开存放器窗口。8翻开存储器窗口,观察地址0*80540*80A0的内容以及地址0*80A40*80F0的内容。五、实验报告执行-START之后:R0:0*00008054 R1:0*000080a4 R2:0*00000014 SP:0*00004000执行STMIA R1!,R4R11后:R0:0*00008074 R1:0*000080a4 R4R11:0*000000010*00000008执行LDMFD之后:SP:0*000004000 R4R11:0*000000000*000000000实验最终完成了将数据从

17、源数据区snum复制到目标数据区dnum。六、实验总结 进一步熟悉了ARM ADS 1.2 / Embest IDE for ARM 开发环境及ARM软件模拟器的使用。通过本次实验掌握使用LDM/STM、B、BL等指令完成较为复杂的存储区访问和分支程序的方法,学习使用条件码,加强对CPSR的认识,掌握了存储数据块的传送,加强了对操作命令符的认识,以及选择wire型和reg型的区别,更加熟悉和编写程序,对程序的理解也进一步加深,同时也发现了许多缺乏,有很多指令需进一步弄懂和多向其他人请教学习。实验三 汇编语言与C语言的相互调用实验随机数发生器一、实验目的1阅读实验程序,观察处理器启动过程,学会使

18、用ADS1.2/Embest IDE辅助信息窗口来分析判断调试过程和结果。2学会在ADS1.2/Embest IDE中编写、编译与调试汇编语言和C语言相互调用的程序。二、实验设备1硬件:PC机。2软件:ADS 1.2 / Embest IDE 200*集成开发环境。三、实验内容使用汇编语言设计一个产生随机数的函数,然后通过C语言来调用该函数产生一系列随机数,并存放到数组中。四、实验步骤1创立新的工程,工程名为armcasm。2 按照参考程序编写源代码文件,并分别保存为 randtest.c、init. s、random. s和ldscript,然后把它们参加工程中。1randtest.c参考源

19、代码/*随机数产生测试例子,程序通过调用random.s中的函数randomnumber来生成随机数*/*include e*tern unsigned int randomnumber( void );int main( ) int i; int nTemp; unsigned int random10; for( i = 0; i 10; i+ ) nTemp = randomnumber( ); randomi = nTemp; return( 0 );2)init.s参考源代码/*系统初始化程序,用于硬件初始化设置,并转入外部的随机数产生主函数main( )*/*程序入口,ARM汇编*

20、.ARM.GLOBAL _START.TE*T_START: B RESET_HANDLERUNDEFINED_HANDLER: B UNDEFINED_HANDLERSWI_HANDLER: B SWI_HANDLERPREFETCH_HANDLER: B PREFETCH_HANDLERABORT_HANDLER: B ABORT_HANDLER NOP/* RESERVED VECTOR */IRQ_HANDLER: B IRQ_HANDLERFIQ_HANDLER: B FIQ_HANDLERRESET_HANDLER: LDRSP, =0*00002000.E*TERN MAIN L

21、DR R0, = MAINMOV LR, PCB* R0*- LOOP FOR EVEREND:B END.GLOBAL _GCCMAIN_GCCMAIN:MOV PC, LR .END 3)random.s参考源代码* 这是一个使用33位反响移位存放器产生伪随机数的函数产生器RANDOMNUMBER* AREA |Random$code|, CODE, READONLY.GLOBAL RANDOMNUMBERRANDOMNUMBER:* ON E*IT:* A1 = 32伪随机数的低位数据* A2 = 32伪随机数的高位数据LDR IP, SEEDPOINTERLDMIA IP, A1, A

22、2 TST A2, A2, LSR*1 MOVS A3, A1, RR* ADC A2, A2, A2 EOR A3, A3, A1, LSL*12 EOR A1, A3, A3, LSR*20 STMIA IP, A1, A2MOV PC, LRSEEDPOINTER:.LONG SEED.DATA.GLOBAL SEEDSEED:.LONG 0*55555555.LONG 0*55555555* END4)脚本文件ldscript参考源代码SECTIONS. = 0*0;.te*t : *(.te*t) .data : *(.data) .rodata : *(.rodata) .bss

23、: *(.bss) 3编译汇编器设置器设置调试器,并编译、工程。五 、实验报告第一个randtest.c程序主要是实现生成随机数,第二个init.s程序主要实现硬件的初始化,第三个random.s程序是主程序,主要实现使用一个33位反响移位存放器产生伪随机数的函数产生器。最后一个为连接脚本文件参考代码。脚本程序主要是描述编写的文件中的各个局部如何摆放在输出文件中,并控制这些文件如何定位这些输出文件。脚本文件必须以关键词SECTIONS开场,紧接着式大括号,后面是所有需要输出地描述局部,最后是闭括号收尾,并且全部使用半角符号。本ldscript文件中各语句的含义是:.=0*0为将当前地址计数器指

24、向0*0,.te*t : *(.te*t) 为程序代码必须放在当前的地址计数器指向的0*0处,.data : *(.data) 为已经初始化的数据必须放在当前的地址计数器指向的地方(紧接te*t区域后),.rodata : *(.rodata) 为只读数据必须放在当前的地址计数器指向的地方(紧接data区域后),.bss : *(.bss) 为未初始化的数据必须放在当前的地址计数器指向的地方(紧接rodata区域后)。六、实验总结通过本次实验,观察处理器启动过程,学会了使用ADS1.2/Embest IDE辅助信息窗口来分析判断调试过程和结果。学会了在ADS1.2/Embest IDE中编写、编译与调试汇编语言和C语言相互调用的程序,通过这次实验发现了很多的缺乏,还需要更加的努力。. z.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!