zoukankan      html  css  js  c++  java
  • 2019-2020-1 20175234 20175205 20175217 实验一 开发环境的熟悉

    2019-2020-1 20175234 20175205 20175217 实验一 开发环境的熟悉


    本组成员: 20175205 20175217 20175234

    实验步骤

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

    • 实验要求
    1. 安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe”
    2. 解压老师提供的software目录中的“Ubuntu1204.rar”
    3. 用VMWare打开Ubuntu,用户名:linux,口令:1
    4. 建立实验目录"mkdir linux_组员1学号_组员2学号_组员3学号"
    5. 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名
    6. 参考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
    7. 分别运行linuxhello,armhello,有什么结果?提交截图并用file命令分析原因。

    我们很容易在运行后发现,在Linux中只能运行使用gcc编译的linuxhello,而无法运行使用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译的armhello。
    我们尝试用file分析文件,最后我们得出结论,linuxhello是在linux的x86-64系统下运行的,而armhello是在ARM系统下运行的 ,因为操作系统不同而无法运行。
    所以我们学习道路交叉编译环境的概念。

    交叉编译(cross-compilation)是指,在某个主机平台上(比如PC上)用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程。
    

    因而,我们想要在Linux上实现对arm文件的编译,我们需要在Linux中搭建嵌入式ARM的系统。


    2-目标机宿主机联通

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

      • 打开安装好的win7虚拟机、Ubuntu虚拟机

      • 打开设备管理器,查看实验箱的端口号

      • 将网络连接方式设为桥接模式,并建立主机与虚拟机间的网络连接

      • 打开超级终端,选择上一步查看的端口,并将“位/秒”处设为115200,其余地方用默认设置。

      • 在超级终端输入ifconfig,查看目标机ip地址为192.168.0.232。
      • 在Ubuntu终端处输入ifconfig,查看宿主机id地址为192.168.0.230。
      • 分别在超级终端、Ubuntu虚拟机互ping,都可ping通。


    3-目标机运行程序

    • 实验要求
    1. 学习资源中第五周的“ARM实验箱实验指导书”的第二章,理解tftp和nfs的作用
    2. 在超级终端中用“mkdir /arm_组员1学号_组员2学号_组员3学号” 建立实验箱中程序运行目录“arm_组员1学号_组员2学号_组员3学号”
    3. 在超级终端中运行“mount -t nfs -o nolock 宿主机IP:/home/linux/linux_组员1学号_组员2学号 /arm_组员1学号_组员2学号__组员3学号”通过NFS把宿主机中的“linux_组员1学号_组员2学号” 映射到目标机中的“/arm_组员1学号_组员2学号_组员3学号”
    4. 超级终端中运行"cd /arm_组员1学号_组员2学号_组员3学号"
    5. 超级终端中运行"./armhello", 提交运行截图,并深入理解交叉编译
    • 实验过程

      • 打开虚拟机,运行Ubuntu系统
      • 配置/etc/exports,即在终端输入sudo vim /etc/exports
      • 由于NFS允许挂载的目录及权限在文件/etc/exports中进行了定义,因而我们需要在/etc/exports文件末尾添加一行/home/linux/linux_20175205_20175217_20175234 *(rw,sync,no_root_squash,no_subtree_check)

      • 重启服务,即在终端输入sudo /etc/init.d/nfs-kernel-server restart

      • 在超级终端中用mkdir //arm_20175205_20175217_20175234 (由于实验匆忙,我们将该arm文件设置为“/arm_5)
      • 在超级终端中运行mount -t nfs -o nolock 192.168.0.230(宿主机IP):/home/linux/linux_20175205_20175217_20175234/arm_20175205_20175217_20175234通过NFS把宿主机中的“linux_20175205_20175217_20175234” 映射到目标机中的“/arm_5
      • 超级终端中运行cd /arm_5
      • 超级终端中运行./armhello 提交运行截图,并深入理解交叉编译


    实验中的问题和解决过程

    • 问题1:组员20175234在安装VMware时出现,如下问题,

    • 问题1解决方案:由于是第一次安装VMware Workatation Pro不知道是否是由于网上普遍存在的Windows补丁问题所导致的,尝试删除网传导致该原因的最新补丁包,但是仍未解决

    最后,安装了VMware Player


    • 问题2:刚开始win7虚拟机、linux虚拟机,以及目标机、宿主机之间ping不通

    • 问题2解决方案:将网络连接模式改为桥接模式,并建立虚拟机与主机间的连接


    • 问题3:使用mount指令显示指令无效

    • 问题3解决方案:发现是未配置/etc/exports,更改配置后成功

    • 待解决的问题:试验箱输出结果为乱码


    新学到的知识点

    • 交叉编译
    • 宿主机与目标机
    • NFS
    • 超级终端
    • file命令

    其他(感悟、思考等,可选)

    本次实验过程开始非常不顺利,目标机和宿主机始终无法ping过,后来发现虚拟机联网的方式是nat模式,然后在同学的帮助下,好不容易将nat模式改为桥接,最后在下课前一秒完成了本次试验。


    参考资料


    END

  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/ysz-123/p/11825018.html
Copyright © 2011-2022 走看看