当前位置:文档之家› 南邮嵌入式系统B实验报告2016年度-2017年度-2

南邮嵌入式系统B实验报告2016年度-2017年度-2

start
CMP r0, r1
SUBLT r1, r1, r0
SUBGT r0, r0, r1
BNE start
MOVr3, r0
stop
B stop
END
2、寄存器R0、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。
代码1:使用纯汇编语言
AREA examp,CODE,READONLY
//END
}
return gcdnum;
}
int main()
{
int a;
a=find_gcd(18,9);
printf("gcdnum:%d\n",a);
return 0;
}
代码2:使用纯汇编语言
AREA example1,CODE,readonly
ENTRY
MOV r0, #4
MOV r1, #9
MOV PC, LR
END
PROGC.c
#include <stdio.h>
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 =%d\n”,res);
3、学习和掌握汇编语言及C语言的混合编程方法。
二、实验内容
1、编写和调试汇编语言程序;
2、编写和调试C语言程序;
3、编写和调试汇编语言及C语言的混合程序;
三、实验过程与结果
1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。
代码1:使用C内嵌汇编
#include<stdio.h>
挂载命令:
执行目录下的hello程序,显示如图:
五、实验小结
实验四多线程程序设计
一、实验目的
1、了解多线程程序设计的基本原理
2、学习Linux多任务管理程序的开发
3、学习pthread常用库函数的使用
二、实验内容
1、编写多线程程序和Makefile文件
LDR R1, =DEST
MOV R2, #NUM
MOV SP, #0X400
BLKCOPY
MOV R3, R2, LSR #3
BEQ COPYWORDS
STMFD SP!, {R4-R11}
OCTCOPY
LDMIA R0!, {R4-R11}
STMIA R1!, {R4-R11}
SUBS R3, R3, #1
3. 开发工具软件的安装
(1)安装gcc
打开Linux后,打开终端窗口,在共享的目录下找到install.sh并运行,命令如下:
ls
. / install.sh
安装程序将自动建立/arm2410s目录,并将所有的开发软件包安装到/arm2410s 目录下,同时自动配置编译环境,建立合适的符号链接。安装完成后在目录/opt/host/armv4l/bin/下应该能看到主编译器。
for_r3(a);
printf("max:%d\r\n",a);
return 0;
}
3、编程实现将从地址source开始的30个字节数据复制到地址为dest的地方。
代码:
NUM EQU30
AREA Init, CODE, READONLY
CODE32
ENTRY
START
LDR R0, =SOURCE
BNE OCTCOPY
LDMFD SP!, {R4-R11}
COPYWORDS
ANDS R2,R2, #7
BEQ STOP
WORDCOPY
LDR R3, [R0], #4
STR R3, [R1], #4
SUBS R2, R2, #1
BNE WORDCOPY
STOP
B STOP
LTORG
SOURCE 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,6
二、实验内容
1、熟悉嵌入式教学实验箱的使用
2、编写C程序和Makefile文件
3、编译程序产生可执行程序
4、完成主机的挂载和程序的执行
三、实验原理
在嵌入式Linux环境下的程序设计方法有一下几个步骤:
1.编写源程序
2.编写Makefile文件
3.编译程序
4.运行和调试程序
5.将生产的可执行文件加入文件系统。
B lbl_b
lbl_a:
CMP r1,r2
MOVGT x,r1
MOVLE x,r2
//MOV r3,x
lbl_b:
}
return x;
}
int for_r3(int t)
{
//int t;
__asm
{
MOV r3,t
}
return 0;
}
int main()
{
int a;
a = find_maxnum(130,50,70);
1. 宿主机的环境搭建
下载并运行VMWare,根据向导创建一台新虚拟机并选择Linux作为客户操作系统,再根据向导安装RedHat Linux 9.0。
2. 虚拟机中启动Linux操作系统
使用root登陆,用户名为root,密码为123456。之后对共享文件设置进行调整:打开settings界面,打开shared folders功能,同时将路径设置到有课前下载的软件的目录下。
嵌入式系统是专用的计算机系统,它对系统的功能、可靠性、成本、体积、功耗等有严格的要求。大部分嵌入式系统没有大容量存储设备,一般不能安装大型开发软件,系统的开发需要采用交叉开发模式。
四、实验过程与结果
实验用的是UP-NetARM2410-S试验箱,里面配有三星的芯片S3c2410X。
打开电脑上VMWare软件,在Windows系统下启动虚拟机里的Linux系统。接着需要
代码:
asmp.s
AREA JC, CODE, READONLY
EXPORT JCP
ENTRY JCP
ADD R3, R0, #1
MOV R2, #1
MOV R1, #1
LOOP MUL R0, R1, R2
MOV R1, R0
ADD R2,Βιβλιοθήκη R2, #1CMP R2, R3
BNE LOOP
NOP
NOP
南京邮电大学通信学院
实验报告
实验名称:基于ADS开发环境的程序设计
嵌入式Linux交叉开发环境的建立
嵌入式Linux环境下的程序设计
多线程程序设计
课程名称嵌入式系统B
班级学号
姓名
开课学期2016/2017学年第2学期
实验一基于ADS开发环境的程序设计
一、实验目的
1、学习ADS开发环境的使用;
2、学习和掌握ADS环境下的汇编语言及C语言程序设计;
DEST 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,0
END
4、用汇编语言设计实现10!。
代码:使用纯汇编语言
AREA Fctrl,CODE,READONLY
ENTRY
CODE32
START
MOV R8 , #10
MOV R9 , #0
SUB R0,R8,#1
Loop
MOV R1 , R9
UMULL R8 , R9 , R0 , R8
MLA R9 , R1 , R0 , R9
SUBS R0 , R0 , #1
BNE Loop
Stop B Stop
END
5、实现字符串的逆序复制TEXT1=”HELLO”=>TEXT2=”OLLEH”。
(1)配置IP地址
(2)关闭防火墙
(3)配置NFS。
单击“Red”菜单→“系统设置”→“服务器设置”→“服务”,在“服务配置”窗口中勾选nfs,单击“开始”
(4)NFS设置
单击“Red”菜单→“系统设置”→“服务器设置”→“NFS服务器”,打开“NFS服务器配置”窗口,设置NFS共享。
然后在NFS服务器中增加主机IP地址的链接许可和目录。完成配置。
#include <stdio.h>
intfind_maxnum(int a,int b,int c)
{
int x;
__asm
{
MOV r0,a
MOV r1,b
MOV r2,c
CMP r0,r1
BLE lbl_a//相等跳转
CMP r0,r2
MOVGT x,r0
MOVLE x,r2
//MOV r3,x
ENTRY
MOV R0,#10
MOV R1,#30
MOV R2,#20
Start
CMP R0,R1
BLE lbl_a
CMP R0,R2
MOVGT R3,R0
MOVLE R3,R2
B lbl_b
lbl_a
CMP R1,R2
MOVGT R3,R1
MOVLE R3,R2
lbl_b
B.
END
代码2:使用C内嵌汇编语言
[/mnt/yaffs]
在超级终端上执行挂载命令:
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs
挂载成功后可执行程序。
五、实验小结
实验三嵌入式Linux环境下的程序设计
相关主题