南邮嵌入式系统B实验报告_第1页
南邮嵌入式系统B实验报告_第2页
南邮嵌入式系统B实验报告_第3页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

.南京邮电大学通信学院实 验 报 告实验名称: 基于ads 开发环境的程序设计嵌入式 linux交叉开发环境的建立嵌入式 linux环境下的程序设计 多线程程序设计课程名称嵌入式系统b班级学号姓名开课学期2016/2017 学年第 2 学期;.实验一基于 ads 开发环境的程序设计一、实验目的1、学习 ads 开发环境的使用;2、学习和掌握 ads 环境下的汇编语言及c 语言程序设计;3、学习和掌握汇编语言及c 语言的混合编程方法。二、实验内容1、编写和调试汇编语言程序;2、编写和调试 c 语言程序;3、编写和调试汇编语言及c 语言的混合程序;三、实验过程与结果1、寄存器 r0 和 r1中有两个正整数,求这两个数的最大公约数,结果保存在 r3 中。代码 1:使用 c内嵌汇编#includeint find_gcd(int x,int y)intgcdnum; asmmovr0, xmovr1, y loop:cmpr0, r1 sublt r1, r1, r0 subgt r0, r0, r1bneloopmovr3, r0mov gcdnum,r3/stop/bstop/endreturn gcdnum;int main()int a;a=find_gcd(18,9);printf(gcdnum:%dn,a); return 0;代码 2:使用纯汇编语言areaexample1,code,readonly entrymovr0, #4movr1, #9startstopcmpr0, r1 sublt r1, r1, r0 subgt r0, r0, r1bnestartmovr3, r0bstopend2、寄存器 r0 、r1 和 r2 中有三个正整数,求出其中最大的数,并将其保存在 r3 中。代码 1:使用纯汇编语言area examp,code,readonly entrystartlbl_albl_bmov r0,#10 mov r1,#30 mov r2,#20cmp r0,r1ble lbl_a cmp r0,r2 movgt r3,r0 movle r3,r2b lbl_bcmp r1,r2 movgt r3,r1 movle r3,r2b.end代码 2:使用 c 内嵌汇编语言#include intfind_maxnum(int a,int b,int c)int x; asmmov r0,a mov r1,b mov r2,ccmp r0,r1ble lbl_a/相等跳转cmp r0,r2movgt x,r0 movle x,r2/mov r3,x b lbl_blbl_a:cmp r1,r2 movgt x,r1 movle x,r2/mov r3,xlbl_b:return x;int for_r3(int t)/int t; asmmov r3,treturn 0;int main()int a;a = find_maxnum(130,50,70); for_r3(a);printf(max:%drn,a); return 0;3、编程实现将从地址source 开始的 30 个字节数据复制到地址为dest 的地方。代码:numequ30areainit, code, readonly code32entry startldrr0,=sourceldrr1,=destmovr2,#nummovsp, #0x400 blkcopymovr3,r2,lsr#3 beqcopywordsstmfdsp!,r4-r11 octcopyldmiar0!,r4-r11 stmiar1!,r4-r11 subsr3,r3,#1 bneoctcopyldmfdsp!,r4-r11 copywordsandsr2,r2,#7 beqstopwordcopyldr r3, r0, #4str r3, r1, #4 subs r2, r2, #1 bne wordcopystopbstop ltorgsourcedcd1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6destdcd0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 end4、用汇编语言设计实现10!。代码:使用纯汇编语言area fctrl,code,readonly entrycode32 startmov r8 , #10 mov r9 , #0loopsub r0,r8,#1mov r1 , r9umull r8 , r9 , r0 , r8 mla r9 , r1 , r0 , r9 subs r0 , r0 , #1bne loopstop b stopend5、实现字符串的逆序复制text1=”hello” = text2=”olleh”。代码:使用纯汇编语言area invstring, code, readonly entryatartadr r1, text1 adr r2, text2 mov r3, #0loopldrb r0, r1, #1 add r3, r3,#1 cmp r0, #0bne loop sub r1, r1, #2loop1ldrb r0, r1, #-1 strb r0, r2, #1 sub r3, r3,#1 cmp r3, #1bne loop1mov r5, #&55 noptext1 = hello,0 aligntext2 = oellh end6、用调用子程序的方法实现1! +2!+3!+.+10 ! 代码:asmp.sarea jc, code, readonly export jcpentry jcp add r3, r0, #1 mov r2, #1mov r1, #1loop mul r0, r1, r2 mov r1, r0add r2, r2, #1cmp r2, r3 bne loop nopnopmov pc, lr endprogc.c#include extern int jcp(int n) int main() int res=0; int m=10; int i;for (i=1;i=m;i+) res=res+jcp(i);printf(“ the result =n%”d ,res);return 0; 四、实验小结实验二嵌入式 linux 交叉开发环境的建立一、实验目的1、掌握嵌入式 linux 交叉开发环境的建立方法2、学习和掌握 linux 常用命令3、学习和掌握 vi 编辑器的使用二、实验内容1、搭建嵌入式 linux 交叉开发环境2、熟悉 linux 的常用命令3、熟悉 vi 编辑器的常用命令三、实验原理linux 系统是 unix系统的分支,是unix的微机版。 linux具有异常丰富的驱动程序资源,支持各种主流的硬件设备与技术。linux包含了现代的unix 操作系统的所有功能特性,这些功能包括多任务、虚拟内存、虚拟文件系统、进程间通信、对称所处理器、多用户支持等。vi 编辑器是所有 unix和 linux 下的标准编辑器。它包含3 种工作模式。嵌入式系统是专用的计算机系统,它对系统的功能、可靠性、成本、体积、功耗等有严格的要求。 大部分嵌入式系统没有大容量存储设备,一般不能安装大型开发软件,系统的开发需要采用交叉开发模式。四、实验过程与结果实验用的是 up-netarm2410-s试验箱,里面配有三星的芯片s3c2410x。 打开电脑上 vmware软件,在 windows系统下启动虚拟机里的linux系统。接着需要1. 宿主机的环境搭建下载并运行 vmwar,e 根据向导创建一台新虚拟机并选择linux作为客户操作系统,再根据向导安装redhat linux 9.0。2. 虚拟机中启动 linux 操作系统使用 root 登陆,用户名为 root ,密码为 123456。之后对共享文件设置进行调整:打开 settings 界面,打开 shared folders 功能,同时将路径设置到有课前下载的软件的目录下。3. 开发工具软件的安装(1) )安装 gcc打开 linux后,打开终端窗口,在共享的目录下找到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-linux-gcc将被自动搜索到4. 宿主机上的开发环境配置(1) )配置 ip 地址(2) )关闭防火墙(3) )配置 nfs。单击“ red”菜单“系统设置”“服务器设置”“服务”,在“服务配置”窗口中勾选nfs ,单击“开始”(4) ) nfs设置单击“ red”菜单“系统设置”“服务器设置”“nfs服务器”,打开“nfs服务器配置”窗口,设置nfs共享。然后在 nfs服务器中增加主机ip 地址的链接许可和目录。完成配置。5. 目标机的信息输出windows系统下,“开始”“所有程序”“附件”“通讯”“超级终端”,新建一个通信终端。区号、电话号码随意输入。设置每秒位数为“115200”,数据位为“ 8”,无奇偶校验,停止位为“1”,无数据流控制。单击“确定”。6. 程序的运行打开超级终端,启动linux ,屏幕显示:/mnt/yaffs在超级终端上执行挂载命令:/mnt mount t nfs 21:/arm2410s /mnt/nfs挂载成功后可执行程序。五、实验小结实验三嵌入式 linux 环境下的程序设计一、实验目的1、掌握嵌入式 linux 环境下的程序设计方法2、学会编写 makefile 文件二、实验内容1、熟悉嵌入式教学实验箱的使用2、编写 c 程序和 makefile 文件3、编译程序产生可执行程序4、完成主机的挂载和程序的执行三、实验原理在嵌入式 linux环境下的程序设计方法有一下几个步骤:1. 编写源程序2. 编写 makefile文件3. 编译程序4. 运行和调试程序5. 将生产的可执行文件加入文件系统。前三个步骤在宿主机上完成,后面的步骤在目标机上完成。四、实验过程与关键代码分析1. 建立工作目录mkdir hello cd hello2. 编写源程序用 vi编辑器编辑 hello.c文件vi hello.c在 vi 中输入源程序如下: #include main()printf(“hello b14011221 n”);/学号3. 编写 makefile 文件vi makefile在 vi 中编辑 makefile 文件如下: cc= armv4l-unknown-linux-gcc exec = helloobjs = hello.o cflags +=ldflags+= -static all: $(exec)$(exec): (objs)$(cc) $(ldflags) o $ $(objs)clean :-rmf $(exec) *.elf *.gdb *.o4. 编译程序在 hello目录下运行“ make”来编译程序。make cleanmake编译成功后,生成可执行文件hello.o。5. 下载调试在宿主机上启动nfs服务,并将 /arms2410s 设置为共享目录。接下来启动超级终端,建立通讯,挂载。挂载命令:执行目录下的hello 程序,显示如图:五、实验小结实验四多线程程序设计一、实验目的1、了解多线程程序设计的基本原理2、学习 linux 多任务管理程序的开发3、学习 pthread 常用库函数的使用二、实验内容1、编写多线程程序和makefile 文件2、编译程序产生可执行程序3、完成主机的挂载和程序的执行三、实验原理(1) pthread_create创:建线程函数头文件:#include 函 数 原 型 :intpthread_create(pthread_t *thread,pthread_attr_t*attr,void*(*start_routine)(void *),void *arg);获得父进程id:pthread_self头文件:#include函数原型 :pthread_t pthread_self(void);测试两个线程号是否相同:pthread_equal头文件:#include函数原型 :int pthread_equal(pthread_t thread1,pthread_t thread2);(2)pthread_join:使一个线程等待另一个线程结束头文件 : #include 函数定义:int pthread_join(pthread_t thread, void *retval);描述 :pthread_join() 函数,以阻塞的方式等待 thread 指定的线程结束。当函数返回时, 被等待线程的资源被收回。 如果线程已经结束, 那么该函数会立即返回。并且 thread 指定的线程必须是 joinable 的。参数 :thread: 线程标识符,即线程 id,标识唯一线程。 retval: 用户定义的指针,用来存储被等待线程的返回值。返回值 : 0 代表成功。 失败,返回的则是错误号。(3)线程创建函数: pthread_t:线程句柄类型定义:typedef unsigned long int pthread_t;用途: pthread_t 用于声

温馨提示

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

评论

0/150

提交评论