ARM嵌入式原理和开发实验报告_第1页
ARM嵌入式原理和开发实验报告_第2页
ARM嵌入式原理和开发实验报告_第3页
ARM嵌入式原理和开发实验报告_第4页
ARM嵌入式原理和开发实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.邮电大学海外学院实验报告实验名称:实验一基于ADS开发环境的程序设计 实验二嵌入式Linu*交叉开发环境的建立实验三嵌入式Linu*环境下的程序设计课程名称嵌入式系统与开发班级**姓名开课时间2014/2015学年第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和A*D)、实用程序、支持软件等组成。2.GUI开发环境ADSGUI开发环境包含CodeWarrior和A*D两种,其中CodeWarrior是集成开发工具,而A*D是调试工具。使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。汇编语言具有一些相同的基本特征:一条指令一行。使用标号(label)给存单元提供名称,从第一列开始书写。指令必须从第二列或能区分标号的地方开始书写。注释必须跟在指定的注释字符后面,一直书写到行尾。在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA作为该段的结束,段名必须唯一。程序的开始和结束需以ENTRY和END来标识。嵌入式C语言设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。实验过程与关键代码分析创建项目工程在File菜单中选择New命令,打开一个新建工程对话框。在Project选项卡下,选择ARME*ecutableImage,然后在Projectname文本框里输入项目名称,点击确定。弹出工程窗口。选择File菜单中的New命令,选择File标签页,在Filename文本框中输入要创建的文件名。汇编程序以.s结尾,c程序以.c结尾。在Location文本框中指定文件的存放位置,选中AddtoProject,在Targets中选中DebugRel,单击确定关闭窗口。2.用汇编语言设计程序实现10的阶乘AREAE*AMPLE,CODE,READONLYENTRYstart MOVR0,*10 MOVR1,*1LOOP 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 E*PORTJCP ENTRYJCP ADD R3, R0, *1 MOV R2, *1 MOV R1, *1LOOP MUL R0, R1, R2 MOV R1, R0 ADD R2, R2, *1 CMP R2, R3 BNE LOOP NOP NOP MOV PC, LR ENDPROGC.c*include<stdio.h>E*ternintJCP(intN)intmain(){ intres=0; intm=10; inti; for(i=1;i<=m;i++) res=res+JCP(i); printf(“Theresult=%d\n”,res); return0;}在这个程序中,主程序由c语言完成作求和,子程序由汇编语言写成作阶乘。5.实现字符串的逆序复制TE*T1=“HELLO”=>TE*T2=“OLLEH” AREAinvstring,CODE,READONLYstart ADR R1,TE*T1 ADR R2, TE*T2 MOV R3, *0LOOP LDRB R0, [R1], *1 ADD R3, R3, *1 CMP R0, *0 BNE LOOP SUB R1, R1, *2LOOP1 LDRB R0, [R1], *-1 STRB R0, [R2], *1 SUB R3,R3, *1 CMP R3, *1 BNE LOOP1 MOV R5, *&55 NOPTE*T1 =“HELLO”,0 ALIGNTE*T2 =“OELLH” END实验小结 在这次实验中,学会了如何使用汇编程序进行编程。对汇编程序编程一些基本的要求有了一定的了解,学习了C语言的语法和在其中调用汇编程序的方法。学会了利用CodeWarriorIDE开发C和ARM汇编代码。学会了在A*D中进行代码调试的方法和过程,对A*D的调试有初步的了解。实验二嵌入式Linu*交叉开发环境的建立一、实验目的1、掌握嵌入式Linu*交叉开发环境的建立方法学习和掌握Linu*常用命令学习和掌握vi编辑器的使用二、实验容1、搭建嵌入式Linu*交叉开发环境2、熟悉Linu*的常用命令3、熟悉vi编辑器的常用命令三、实验原理Linu*系统是UNI*系统的分支,是UNI*的微机版。Linu*具有异常丰富的驱动程序资源,支持各种主流的硬件设备与技术。Linu*包含了现代的UNI*操作系统的所有功能特性,这些功能包括多任务、虚拟存、虚拟文件系统、进程间通信、对称所处理器、多用户支持等。Vi编辑器是所有UNI*和Linu*下的标准编辑器。它包含3种工作模式。嵌入式系统是专用的计算机系统,它对系统的功能、可靠性、成本、体积、功耗等有严格的要求。大部分嵌入式系统没有大容量存储设备,一般不能安装大型开发软件,系统的开发需要采用交叉开发模式。四、实验过程与关键代码分析实验用的是UP-NetARM2410-S试验箱,里面配有三星的芯片S3c2410*。打开电脑上VMWare软件,在Windows系统下启动虚拟机里的Linu*系统。接着需要1.宿主机的环境搭建下载并运行VMWare,根据向导创建一台新虚拟机并选择Linu*作为客户操作系统,再根据向导安装RedHatLinu*9.0。2.虚拟机中启动Linu*操作系统使用root登陆,用户名为root,密码为123456。之后对共享文件设置进行调整:打开settings界面,打开sharedfolders功能,同时将路径设置到有课前下载的软件的目录下。3.开发工具软件的安装(1)安装gcc打开Linu*后,打开终端窗口,在共享的目录下找到install.sh并运行,命令如下:ls./install.sh 安装程序将自动建立/arm2410s目录,并将所有的开发软件包安装到/arm2410s目录下,同时自动配置编译环境,建立合适的符号。安装完成后在目录/opt/host/armv4l/bin/下应该能看到主编译器。(2)配置PATH路径vi.file 将里面PATH变量改为PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/; 存盘后执行source.bash_profile以后armv4l-unknown-linu*-gcc将被自动搜索到4.宿主机上的开发环境配置(1)配置IP地址 命令配置了宿主机的IP地址。然后打开网络配置窗口,重新探测MAC地址。重新激活。(2)关闭防火墙 单击“Red”菜单→“系统设置”→“安全级别”→打开“安全级别配置”窗口,选择“无防火墙选项。”(3)配置NFS。 单击“Red”菜单→“系统设置”→“服务器设置”→“服务”,在“服务配置”窗口中勾选nfs,单击“开始”(4)NFS设置单击“Red”菜单→“系统设置”→“服务器设置”→“NFS服务器”,打开“NFS服务器配置”窗口,设置NFS共享。然后在NFS服务器中增加主机IP地址的许可和目录。完成配置。5.目标机的信息输出Windows系统下,“开始”→“所有程序”→“”→“通讯”→“超级终端”,新建一个通信终端。区号、随意输入。设置每秒位数为“115200”,数据位为“8”,无奇偶校验,停止位为“1”,无数据流控制。单击“确定”。6.程序的运行 打开超级终端,启动Linu*,屏幕显示:[/mnt/yaffs] 在超级终端上执行挂载命令:[/mnt]mount–tnfs21:/arm2410s/mnt/nfs挂载成功后可执行程序。五、实验小结 在这次实验中,学会建立Linu*交叉开发环境,学会了ls和vi,cd等常用的Linu*命令,并掌握了Vi编辑器的使用方法。同时知道了如何在搭建失败时寻找错误进行排错。实验三嵌入式Linu*环境下的程序设计一、实验目的1、掌握嵌入式Linu*环境下的程序设计方法2、学会编写Makefile文件二、实验容1、熟悉嵌入式教学实验箱的使用2、编写C程序和Makefile文件3、编译程序产生可执行程序4、完成主机的挂载和程序的执行三、实验原理在嵌入式Linu*环境下的程序设计方法有一下几个步骤:编写源程序编写Makefile文件编译程序运行和调试程序将生产的可执行文件加入文件系统。前三个步骤在宿主机上完成,后面的步骤在目标机上完成。四、实验过程与关键代码分析1.建立工作目录mkdirhello cdhello编写源程序用vi编辑器编辑Hello.c文件viHello.c在Vi中输入源程序如下: *include<stdio.h> main() {printf(“helloworld\n”); }3.编写Makefile文件viMakefile在vi中编辑Makefile文件如下: CC=armv4l-unknown-linu*-gcc E*EC=hello OBJS=hello.o CFLAGS+= LDFLAGS+=-static all:$(E*EC) $(E*EC):(OBJS) $(CC)$(LDFLAGS)–o$$(OBJS)clean:-rm–f$(E*EC)*.elf*.gdb*.o4.编译程序在hello目录下运行“make”来编译程序。makeclean make编译成功后,生成可执行文件Hello.o。5.下载调试在宿主机上启动nfs服务,并将/arms2410s设置为共享目录。接下来启动超级终端,建立通讯,挂载。[/mnt]mount–tnfs21:/arm2410s/mnt/nfs挂载成功后,进入/mnt/nfs,再进入/mnt/nfs/hello,直接运行刚刚编译生成的可执行文件Hello.o,查看运行结果cdhello ./hell

温馨提示

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

评论

0/150

提交评论