2019-2020-1 20175209 20175213 20175214 实验一 开发环境的熟悉

我只是一个虾纸丫 提交于 2019-12-23 22:38:26

实验一 开发环境的熟悉

本小组成员:

  • 20175209 王梓鸿
  • 20175213 吕正宏
  • 20175214 林郅聪

实验一 -1- 交叉编译环境-(使用自己笔记本电脑)

实验内容:

    1. 可以使用自己的笔记本,也可以使用实验室台式机,使用实验室机器的不用做本题
    1. 安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe”
    1. 解压老师提供的software目录中的“Ubuntu1204.rar”
    1. VMWare打开Ubuntu,用户名:linux,口令:1
    1. 建立实验目录"mkdir linux_组员1学号_组员2学号_组员3学号"
    1. 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名
    1. 参考bocsd目录中的脚本armc.sh, 分别用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c,用gcc编译的可执行文件命名linuxhello:gcc hello.c -o linuxhello; 用arm-none-linux-gnuenbi-gcc编译的命名为armhello: /usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello
    1. 分别运行linuxhello,armhello,有什么结果?提交截图并用file命令分析原因。

实验步骤:

  • 进入虚拟机,用VMWare打开Ubuntu,用户名:linux,口令:1

  • 建立实验目录,mkdir linux_20155209_20155213_20155214

  • 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名,实验代码为:

#include <stdio.h>

int main()
{
    printf("Hello world!");
    printf("\n20155209王梓鸿\n20155213吕正宏\n20155214林郅聪\n");
    return 0;
}
  • 然后先用gcc进行编译:gcc -o linuxhello hello.c

然后用交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c

/usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello

  • 结果如图:

  • 结果分析:linuxhello是基于x86-64架构生成的指令集,armhello是基于ARM架构生成的指令集。

实验一 -2- 开发环境的熟悉目标机宿主机联通

实验内容:

    1. 使用自己笔记本电脑的,解压超级终端软件“windows7st(Windows).rar”,并在桌面上建立快捷方式(这个不用在实验室做)
    1. 使用自己笔记本电脑的,到实验室把“USB转串口线”USB口插入自己的电脑,把串口连到实验箱的COM0
    1. 参考视频配置超级终端,用超级终端作为实验箱的显示终端
    1. ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu(宿主机)中用ifconfig在命令行查看IP
    1. 用网线连接实验室台式机(或自己笔记本电脑)和ARM实验箱的网口NET1(最大屏旁边的)
    1. ping命令保证目标机和宿主机能互相ping通,提交ping通的截图

实验步骤:

  • 准备工作:检查pc的以太网连接,检查两个虚拟机是否均已调为桥接模式,连接pc和实验箱;

  • 打开虚拟机win7,在设备管理器查看usb连接哪个端口;
  • 开启超级终端,新建一个终端并进行配置(端口与之前查看的端口一致):
    • 在属性中,将波特率设置为115200,其他值均为默认。
  • login处输入root,然后输入ifconfig查看实验箱的ip

  • Ubuntuwin7设置为与实验箱属于同一ip和网关;

  • 尝试虚拟机和实验箱互ping,截图如下:

实验一 -3- 开发环境的熟悉目标机运行程序

实验内容:

    1. 在超级终端中用“mkdir /arm_组员1学号_组员2学号_组员3学号”建立实验箱中程序运行目录“arm_组员1学号_组员2学号_组员3学号”;
    1. 在超级终端中运行“mount -t nfs -o nolock 宿主机IP:/home/linux/linux_组员1学号_组员2学号 /arm_组员1学号_组员2学号__组员3学号”通过NFS把宿主机中的“linux_组员1学号_组员2学号” 映射到目标机中的“/arm_组员1学号_组员2学号_组员3学号”
    1. 超级终端中运行"cd /arm_组员1学号_组员2学号_组员3学号"
    1. 超级终端中运行"./armhello", 提交运行截图,并深入理解交叉编译

实验步骤:

  • 首先需挂载文件

  • 打开Ubuntu命令行终端,配置/etc/exports
sudo vim /etc/exports
  • NFS允许挂载的目录及权限在文件/etc/exports中进行了定义。根据题目我们要将ubuntu下建立的目录共享出来,在/etc/exports文件末添加如下一行:
/home/linux_20175209_20175213_20175214 *(rw,sync,no_root_squash,no_subtree_check)
  • 保存并退出后重启一下服务
sudo /etc/init.d/nfs-kernel-server restart
  • 在超级终端中用mkdir /arm_20175209_20175213_201752114建立实验箱中程序运行目录arm_20175209_20175213_20175214

  • 在超级终端中运行mount -t nfs -o nolock 192.168.0.230:/home/linux/linux_20175209_20175213_20175214 /arm_20175209_20175213_20175214通过NFS把宿主机中的linux_2015209_20175213_20175214映射到目标机中的/arm_20175209_20175213_20175214

  • 运行:超级终端中运行cd /arm_20175209_20175213_20175214,然后在超级终端中运行./armhello

  • 挂载成功截图:
    两张图片

  • 运行成功后截图:

实验中的知识点:

  • NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

  • tftp --TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

  • 交叉编译:简单地说,就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。

实验中遇到的问题

  • 问题一:Ubuntu中修改ip时,对/etc/network/interfaces的修改无法保存
  • 解决方法:未进入管理员模式,输入su,并输入密码即可。

  • 问题二:Ubuntu中修改ip后,使用指令/etc/init.d/networking restart重启网卡失败
  • 解决过程:文档中iface eth0 inet static后面存在空格,删除空格后重启成功

  • 问题三:超级终端无法输入
  • 解决过程:连接问题,重启实验箱并重新连接,打开设备管理器,查看usb连接的是哪个端口,并在超级端口新建连接时设置对应端口,待系统启动成功后,在login处输入root即可

  • 问题四:挂载成功后在超级终端内提示权限被拒绝
  • 解决过程:在挂载文件/etc/exports中添加的权限路径跨越了一个文件夹,因此在超级终端中会提示权限被拒绝,将挂载文件中添加的哪一行的文件目录更改正确即可。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!