




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京邮电大学通信学院实验报告实验名称:基于ADS开发环境的程序设计嵌入式Linux交叉开发环境的建立嵌入式Linux环境下的程序设计多线程程序设计课程名称嵌入式系统B班级学号 姓 名 开课学期2016/2017学年 第2学期实验一 基于 ADS 开发环境的程序设计一、实验目的1、学习 ADS 开发环境的使用;2、学习和掌握 ADS 环境下的汇编语言及 C 语言程序设计;3、学习和掌握汇编语言及 C 语言的混合编程方法。二、实验内容1、编写和调试汇编语言程序;2、编写和调试 C 语言程序;3、编写和调试汇编语言及 C 语言的混合程序; 三、实验过程与结果1、寄存器RO和R1中有两个正整数,求这两
2、个数的最大公约数,结果保存 在R3中。代码1:使用C内嵌汇编#includeint find_gcd(int x,int y)int gcdnum;_asmMOVrO, xMOVr1, yLOOP:CMP rO, r1SUBLT r1, r1, rOSUBGT rO, rO, r1BNE LOOPMOV r3, rOMOV gcdnum,r3/stop/ B stop/ ENDreturn gcdnum;int main()int a;find_gcd(18,9);printf(gcdnum:%dn,a);return 0;代码 2:使用纯汇编语言AREA example1,CODE,read
3、onlyENTRYMOVr0, #4MOVr1, #9startCMP r0, r1SUBLT r1, r1, r0SUBGT r0, r0, r1BNE startMOV r3, r0stopB stopEND2、寄存器RO、R1和R2中有三个正整数,求出其中最大的数,并将其保存 在R3中。代码 1 :使用纯汇编语言AREA examp,CODE,READONL YENTRYMOV RO,#1OMOV R1,#3OMOV R2,#2OStartCMP RO,R1BLE lbl_aCMP RO,R2MOVGT R3,ROMOVLE R3,R2B lbl_blbl_aCMP R1,R2MOVGT
4、 R3,R1MOVLE R3,R2lbl_bB .END代码 2:使用 C 内嵌汇编语言#include int find_maxnum(int a,int b,int c)int x;_asmMOV r0,aMOV r1,bMOV r2,cCMP r0,r1BLE lbl_a/相等跳转CMP r0,r2MOVGT x,r0MOVLE x,r2/MOV r3,xB lbl_blbl_a:CMP r1,r2MOVGT x,r1MOVLE x,r2/MOV r3,xlbl_b:return x;int for_r3(int t)/int t;_asmMOV r3,treturn 0;int mai
5、n()int a;a = find_maxnum(130,50,70); for_r3(a);printf(max:%drn,a);return 0;3、编程实现将从地址 source 开始的 30 个字节数据复制到地址为 dest 的地 方。代码:NUM EQU 30AREAInit, CODE, READONL YCODE32ENTRYSTARTLDRR0,=SOURCELDRR1,=DESTMOV R2, #NUMMOV SP, #0X400BLKCOPYMOV R3, R2, LSR #3BEQ COPYWORDSSTMFDSP!,R4-R11OCTCOPYLDMIAR0!,R4-R1
6、1STMIAR1!,R4-R11SUBS R3, R3, #1BNE OCTCOPYLDMFD SP!, R4-R11COPYWORDSANDS R2,R2, #7BEQ STOPWORDCOPYLDRR3,R0,#4STRR3,R1,#4SUBSR2,R2,#1BNEWORDCOPYSTOPB STOPLTORGSOURCE DCD 1,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,6DEST DCD 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,0END4
7、、用汇编语言设计实现 10!。代码:使用纯汇编语言AREA Fctrl,CODE,READONL YENTRYCODE32STARTMOV R8 , #10MOV R9 , #0SUB R0,R8,#1LoopMOV R1 , R9UMULL R8 , R9 , R0 , R8MLA R9 , R1 , R0 , R9SUBS R0 , R0 , #1BNE LoopStop B StopEND5、实现字符串的逆序复制 TEXT1=”HELLO” = TEXT2=”OLLEH” 代码:使用纯汇编语言AREA invstring, CODE, READONL YENTRYATARTADR R1,
8、 TEXT1ADR R2, TEXT2MOV R3, #0LOOPLDRB R0, R1, #1ADD R3, R3,#1CMP R0, #0BNE LOOPSUB R1, R1, #2LOOP1LDRB R0, R1, #-1STRB R0, R2, #1SUB R3, R3, #1CMP R3, #1BNE LOOP1MOV R5, #&55NOPTEXT1 = HELLO,0ALIGNTEXT2 = OELLHEND6用调用子程序的方法实现1! +2! +3! +.+10 !代码:asmp.sAREA JC, CODE, READONL YEXPORT JCPENTRY JCPADD R
9、3, R0, #1MOV R2, #1MOV R1, #1LOOP MUL R0, R1, R2MOV R1, R0ADD R2, R2, #1CMP R2, R3BNE LOOPNOPNOP MOV 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
10、、掌握嵌入式 Linux 交叉开发环境的建立方法2、学习和掌握 Linux 常用命令3、学习和掌握 vi 编辑器的使用 二、实验内容1、搭建嵌入式 Linux 交叉开发环境2、熟悉 Linux 的常用命令3、熟悉 vi 编辑器的常用命令 三、实验原理Linux系统是UNIX系统的分支,是UNIX的微机版。Linux具有异常丰富的 驱动程序资源,支持各种主流的硬件设备与技术。Linux包含了现代的UNIX操作系统的所有功能特性,这些功能包括多任务、虚拟内存、虚拟文件系统、进程 间通信、对称所处理器、多用户支持等。Vi编辑器是所有UNIX和 Linux下的标准编辑器。它包含 3种工作模式。 嵌入式
11、系统是专用的计算机系统,它对系统的功能、可靠性、成本、体积、 功耗等有严格的要求。 大部分嵌入式系统没有大容量存储设备, 一般不能安装大 型开发软件,系统的开发需要采用交叉开发模式。四、实验过程与结果实验用的是UP-NetARM2410-S试验箱,里面配有三星的芯片 S3c2410X 打开电脑上VMWar软件,在 Windows系统下启动虚拟机里的 Linux系统。接着需要1. 宿主机的环境搭建下载并运行 VMWar,e 根据向导创建一台新虚拟机并选择 Linux 作为客户操 作系统,再根据向导安装 RedHat Linux 9.0 。2. 虚拟机中启动 Linux 操作系统使用 root 登
12、陆,用户名为 root ,密码为 123456。之后对共享文件设置进 行调整:打开 settings 界面,打开 shared folders 功能,同时将路径设置 到有课前下载的软件的目录下。3. 开发工具软件的安装(1)安装 gcc打开 Linux 后,打开终端窗口,在共享的目录下找到 install.sh 并运行, 命令如下:ls. / install.sh安装程序将自动建立 /arm2410s 目录,并将所有的开发软件包安装到 /arm2410s 目录下, 同时自动配置编译环境, 建立合适的符号链接。 安装完 成后在目录 /opt/host/armv4l/bin/ 下应该能看到主编译器
13、。(2) 配置PATH路径vi .file将里面 PATH变量改为 PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盘后执行source .bash_profile以后armv4l-unknown-linux-gcc 将被自动搜索到4. 宿主机上的开发环境配置(1)配置IP地址以衣网设备常规(G)路由(B)硬件设备(旦)静态网络賂由柑标网绍*前嫩子网掩码网兴IA .255255255.0192.168X1254编用(E)“.192.168.0J55255255255255192.160254工!LF序 LL .FI址
14、 But(2)关闭防火墙(3) 配置NFS单击“ Red菜单一“系统设置”-“服务器设置”-“服务”,在“服务配 置”窗口中勾选nfs,单击“开始”(4) NFS设置单击“ Red菜单一“系统设置服务器设置NFS服务器”,打开 “ NFS服务器配置”窗口,设置 NFS共享。然后在NFS服务器中增加主机IP地址的链接许可和目录。完成配置。5. 目标机的信息输出Windows系统下,“开始所有程序附件通讯超级 终端”,新建一个通信终端。区号、电话号码随意输入。设置每秒位数为“ 115200”,数据位为“ 8”,无奇偶校验,停止位为“ 1”,无数据流控制。 单击“确定”。6. 程序的运行打开超级终端
15、,启动Linux,屏幕显示:/mn t/yaffs在超级终端上执行挂载命令:/mnt mount - t nfs 21:/arm2410s /mnt/nfs挂载成功后可执行程序。五、实验小结实验三 嵌入式 Linux 环境下的程序设计一、实验目的1、掌握嵌入式 Linux 环境下的程序设计方法2、学会编写 Makefile 文件 二、实验内容1、熟悉嵌入式教学实验箱的使用2、编写 C 程序和 Makefile 文件3、编译程序产生可执行程序4、完成主机的挂载和程序的执行三、实验原理在嵌入式 Linux 环境下的程序设计方法有一下几个步骤:1. 编写源程序2. 编写 Mak
16、efile 文件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 E
17、XEC = hello OBJS = hello.o CFLAGS += LDFLAGS+= -static all: $(EXEC)$(EXEC): (OBJS)$(CC) $(LDFLAGS) - o $ $(OBJS) clean :-rm f $(EXEC) *.elf *gdb *.o4.编译程序在hello目录下运行“ make来编译程序make clea nmake编译成功后,生成可执行文件 Hello.o。5.下载调试在宿主机上启动nfs服务,并将/arms2410s设置为共享目录。接下来启动超级终端,建立通讯,挂载。 挂载命令:/mnt Ifiount -tT_ H tnfs
18、 -o nolock -otcp 192.168*0 121:/arM2410s /nnt/nfs1 制ISHWEI厦ts执行目录下的hello程序,显示如图:/mnt/nfsllsMakefilehellohello,龜版构潇? LVERSION-?.2hello.chello.oI/mni/nfsl./hellohello B14011221/imnt/nfsJ五、实验小结实验四多线程程序设计一、实验目的1、了解多线程程序设计的基本原理2、学习Linux多任务管理程序的开发3、学习pthread常用库函数的使用 二、实验内容1、编写多线程程序和Makefile文件2、编译程序产生可执行程序
19、3、完成主机的挂载和程序的执行三、实验原理pthread_create创建线程函数 头文件:#include 函 数原型:int pthread_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 thr
20、ead1,pthread_t thread2);(2)pthread_join:使一个线程等待另一个线程结束头文件:#include 函数定义: int pthreadoi n(pthread_t thread, void *retval);描述:pthreadoin()函数,以阻塞的方式等待thread指定的线程结束。当 函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立即 返回。并且thread指定的线程必须是joinable的。参数:thread:线程标识符,即线程ID,标识唯一线程。retval:用户定义 的指针,用来存储被等待线程的返回值。返回值:0代表成功。 失败
21、,返回的则是错误号。(3)线程创建函数:pthread_t:线程句柄类型定义:typedef un sig ned long int pthread_t;用途:pthread_t用于声明线程ID。sizeof(pthread_t) =8pthread_t,在使用printf打印时,应转换为u类型。四、实验过程与关键代码分析实验代码:#include #include #include #include pthread.h/*-Thread1*/void thread1()int i=0;while(1) printf(thread1 :%dn,i);if (i3) pthread_exit(0
22、);i+; sleep(1);/*-Thread2*/void thread2() int i=0;while(1) printf(thread2 :%dn,i);if (i5) pthread_exit(0);i+;sleep(1);int main(void)pthread_t t1, t2;pthread_create(&t1, NULL, (void*)thread1, NULL);pthread_create(&t2, NULL, (void*)thread2, NULL);pthread_join(t1, NULL);pthread_join(t2, NULL);return 0;
23、实验结果:rool (!?1 oca Ihcit fl cd I et;tp iti readrou l (jtloca Ihui 1 1 es ip lh eaili* cr 1 esli th reaclx c -g 4ip itir ead/ rnp/cccOVHi qf r 号帝 t*4ixb2;1 n funci ion min;:unde Fined referenre t a pthread _crea Je/ trip/ccfOVQirOf. lev c7): n funci ion nni n r:unde fined i rierencc to pihruad_crcu t
24、e/ inp/tJccOMij. gi I n I tuiei icn imi h ::und rir)E?d reference t u pih read n/ I np/cccCktKi. o( .text+0ve7: I ii lune l ion inii n rund e l i ned reference to p T h t ea d joinea I leciSi Id relurned I evit sia itjsrooi(?1oca Ihost tes ipihrtaJlit 芒口: ies t|ith read* c o tesipihr ead - lpthreadr
25、uoiPlocu Ihai les iphrtad?f *fi ztp 厲“血Ih read I :0l Iit UIh rtfad I : 11h Tead5 ;)thread I i2ihread2 :2ihread I :合thread : 1IIi read I i4Ih rtfad2 :*1h read5 :Sthread :5rooifora I bo st les ipihread# |实验问题:一开始编译的时候出错,提示pthread_create未定义。网上查询原因以后得知:pthread库不是linux系统默认的库,连接时需要使用静态libpthread.a,因此在编译时要加Tpthread参数,问题解决五、实验小结办公室卫生管理制度一、主要内容与适用范围1 本制度规定了办公室卫生管理的工作内容和要求及检查与考核。2 此管理制度适用于本公司所有办公室卫生的管理二、定义1 公共区域:包括办公室走道、会议室、卫生间,每天由行政文员进行清扫;2个人区域:包括个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油气泄漏海水净化技术
- 油库管理制度
- 代养赡养入住协议(含个性化服务)
- 研发中心厂房及研发设备整体转让合同范本
- 健康食品销售代理及品牌授权承包合同
- 高端餐饮企业人才引进与劳动合同规范
- 管道桁架维修方案
- 小区水箱维修方案
- 寄卖回收运营方案
- 大水管废物改造方案
- 儒家视角下的文明交流与互鉴探讨
- 2025-2030机器人操作系统行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030中国多动症治疗行业市场发展趋势与前景展望战略研究报告
- 企业安全文化建设中急救培训的重要性及策略探讨
- 2024年辽宁沈阳水务集团有限公司招聘笔试真题
- 潍坊交通发展集团有限公司招聘笔试题库2025
- 胸痛中心质控管理
- 2025时政试题及答案(100题)
- 第七章城市轨道交通屏蔽门设备接口68课件
- 国家开放大学汉语言文学本科《中国现代文学专题》期末纸质考试第三大题分析题库2025春期版
- 成都大学附属中学英语新初一分班试卷含答案
评论
0/150
提交评论