预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

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