资源描述:
《ARM嵌入式原理和开发实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、南京邮电大学海外学院实验报告实验名称:实验一基于ADS开发环境的程序设计实验二嵌入式Linux交叉开发环境的建立实验三嵌入式Linux环境下的程序设计课程名称嵌入式系统与开发班级学号姓名开课时间2014/2015学年第1学期....实验一基于ADS开发环境的程序设计一、实验目的1、学习ADS开发环境的使用;2、学习和掌握ADS环境下的汇编语言及C语言程序设计;3、学习和掌握汇编语言及C语言的混合编程方法。二、实验内容1、编写和调试汇编语言程序;2、编写和调试C语言程序;3、编写和调试汇编语言及C语言的混合程序;4、编写程序测试多寄存器传送指令的用法。三、实
2、验原理ADS全称为ARMDeveloperSuite,是ARM公司推出的新一代ARM集成开发工具。现在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。ADS用于无操作系统的ARM系统开发,是对裸机(可理解成一个高级单片机)的开发。ADS具有极佳的测试环境和良好的侦错功能,它可使硬件开发工作者更深入地从底层去理解ARM处理器的工作原理和操作方法,为日后自行设计打基础,为BootLoader的编写和调试打基础。1.ADS软件的组成ADS由命令行开发工具、ARM运行时库、GUI开发环境(CodeWarrior和AXD)、实用程序、支持软
3、件等组成。2.GUI开发环境ADSGUI开发环境包含CodeWarrior和AXD两种,其中CodeWarrior是集成开发工具,而AXD是调试工具。使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。汇编语言具有一些相同的基本特征:1.一条指令一行。2.使用标号(label)给内存单元提供名称,从第一列开始书写。3.指令必须从第二列或能区分标号的地方开始书写。4.注释必须跟在指定的注释字符后面,一直书写到行尾。在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA作为该段的结束,段名必须唯一。程序的开始和结束需以ENTR
4、Y和END来标识。嵌入式C语言设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。....二、实验过程与关键代码分析1.创建项目工程在File菜单中选择New命令,打开一个新建工程对话框。在Project选项卡下,选择ARMExecutableImage,然后在Projectname文本框里输入项目名称,点击确定。弹出工程窗口。选择File菜单中的New命令,选择File标签页,在Filen
5、ame文本框中输入要创建的文件名。汇编程序以.s结尾,c程序以.c结尾。在Location文本框中指定文件的存放位置,选中AddtoProject,在Targets中选中DebugRel,单击确定关闭窗口。2.用汇编语言设计程序实现10的阶乘AREAEXAMPLE,CODE,READONLYENTRYstartMOVR0,#10MOVR1,#1LOOPMULR0,R0,R1SUBR0,R0,1CMPR0,#1BHILOOPEND在这个程序中,我们首先对R0和R1赋值,将R0作为一个变量,而R1作为一个存贮阶乘值的寄存器。在每进行一次乘法之后,将R0减1。同
6、时在做完减法后进行判断,如果此时R0大于1,则返回继续乘法,否则结束程序,输出结果。3.用调用子程序的方法实现1!+2!+3!+…+10!,代码如下:asmp.sAREAJC,CODE,READONLYEXPORTJCPENTRYJCPADDR3,R0,#1MOVR2,#1MOVR1,#1LOOPMULR0,R1,R2MOVR1,R0ADDR2,R2,#1CMPR2,R3BNELOOPNOP....NOPMOVPC,LRENDPROGC.c#includeExternintJCP(intN)intmain(){intres=0;intm=
7、10;inti;for(i=1;i<=m;i++)res=res+JCP(i);printf(“Theresult=%d”,res);return0;}在这个程序中,主程序由c语言完成作求和,子程序由汇编语言写成作阶乘。5.实现字符串的逆序复制TEXT1=“HELLO”=>TEXT2=“OLLEH”AREAinvstring,CODE,READONLYstartADRR1,TEXT1ADRR2,TEXT2MOVR3,#0LOOPLDRBR0,[R1],#1ADDR3,R3,#1CMPR0,#0BNELOOPSUBR1,R1,#2LOOP1LDRBR0,
8、[R1],#-1STRBR0,[R2],#1SUBR3,R3,#1