实验一 开发环境的熟悉
一、实验步骤
1:交叉编译环境
- 安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe”
- 解压老师提供的software目录中的“Ubuntu1204.rar”
- 用VMWare打开Ubuntu,用户名:linux,口令:1
- 建立实验目录"mkdir linux_20165318_20165322_20165326"
- 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名
#include <stdio.h>
int main()
{
printf("hello word
");
printf("20165218孙晓暄
");
printf("20165322王瑶佳
");
printf("20165326陈卓
");
}
6.参考bocsd目录中的脚本armc.sh
,分别用gcc和交叉编译器编译hello.c,用gcc编译的可执行文件命名linuxhello
:
gcc hello.c -o linuxhello
用arm-none-linux-gnuenbi-gcc
编译的命名为armhello
:
/usr/local/toolchain/toolchain-4.3.2/bin/arm-none-linux-gnueabi-gcc hello.c -o armhello
7.运行armhello
和linuxhello
,结果如下
2:目标机宿主机联通
-
解压超级终端软件“windows7st(Windows).rar”,并在win7桌面上建立快捷方式
-
打开试验箱,把“USB转串口线”的USB口插入自己的电脑,把串口连到实验箱的COM0,用网线连接笔记本电脑和ARM实验箱的网口NET1
-
新建一个终端并进行配置,在属性中,将波特率设置为115200,其他值均为默认。
-
用ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu中(宿主机)中用ifconfig在命令行查看IP,如图,记录arm机的ip为
192.168.0.232
,ubuntu的ip为192.168.0.230
-
用ping命令保证目标机(试验箱)和宿主机(Ubuntu)能互相ping通,提交ping通的截图
超级终端arm
ubuntu
3:目标机运行程序
1.学习资源中第五周的“ARM实验箱实验指导书”的第二章,理解tftp和nfs的作用
tftp
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。
nfs
NFS(Network FileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS 有很多实际应用。下面是比较常见的一些:
1.多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
2.在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
3.不同客户端可在NFS上观看影视文件,节省本地空间。
4.客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下。
NFS是运行在应用层的协议。随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。
2.打开Ubuntu命令行终端,配置/etc/exports
sudo vim /etc/exports
NFS允许挂载的目录及权限在文件/etc/exports
中进行了定义。根据题目我们要将ubuntu下建立的目录共享出来,在/etc/exports
文件末添加如下一行:
/home/linux_20165318_20165322_20165326 *(rw,sync,no_root_squash,no_subtree_check)
如图
保存并退出后重启一下服务
sudo /etc/init.d/nfs-kernel-server restart
3.在超级终端中建立实验箱中程序运行目录
mkdir /arm_20165318_20165322_20165326
4.通过NFS把宿主机中的程序运行目录映射到目标机中,在超级终端中运行
mount -t nfs -o nolock 192.168.0.230:/home/linux/linux_20165318_20165322_20165326 /arm_20165318_20165322_20165326
5.进入超级终端运行目录
6.超级终端中运行"./armhello", 如图
二、实验中遇到的问题及解决方法
1 arm开发板、主机与虚拟机三者互ping无法连通
小组成员在之前配置时尝试用虚拟机与其它网站ping联通,未将网络适配改为适宜于此次饰演的桥接模式,操作如下:
- 打开VM虚拟机下的设置,将网络适配器从NAT修改为桥接模式,点击确定
- 打开VM编辑下的虚拟网络编辑器,将VMnet改为桥接模式(将虚拟机直接连接到外部网络),
桥接到
选择为本地连接Realtek PCIe FE Family Controller
,因为是将开发板与主机用网线直连,所以不要选Automatic,可能会桥接到无线网上
三、参考资料
NFS文件服务器的配置和作用
tftp作用和Ubuntu12.04搭建tftp服务器
Linux下tftp和nfs配置
关于虚拟机联网配置的模式
解决arm 开发板、主机与虚拟机三者互ping的问题
NFS常见问题解决方法