• 2017-2018-1 20155208 20155212 20155239 实验一 开发环境的熟悉


    2017-2018-1 20155208 20155212 20155239 实验一 开发环境的熟悉

    一、实验内容

    1、交叉编译环境

    2、目标机宿主机联通

    3、目标机运行程序

    4、目标机模块分解

    5、清理工作

    二、实验步骤

    1、交叉环境编译

    • 如附图,开机时按F12,进入系统BIOS中,开启虚拟化功能

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

    • 建立实验目录,mkdir linux_20155208_20155212_20155239

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

    #include <stdio.h>
    
    int main()
    {
    	printf("Hello world!");
    	printf("
    20155212江振思
    20155239吕宇轩
    20155208徐子涵
    ");
    	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,armhello,有什么结果?提交截图并用file命令分析原因。
      • linuxhello是基于x86-64架构生成的指令集,armhello是基于ARM架构生成的指令集
    • 结果截图:

    2、目标机宿主机联通

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

    连接成功截图:

    3、目标机运行程序

    • 理解tftp和nfs的作用
    • 在超级终端中用mkdir /arm_20155208_20155212_20155239 建立实验箱中程序运行目录arm_20155208_20155212_20155239
    • 在超级终端中运行mount -t nfs -o nolock 192.168.0.230:/home/linux/linux_20155208_20155212_20155239 /arm_20155208_20155212_20155239通过NFS把宿主机中的linux_20155208_20155212_20155239映射到目标机中的/arm_20155208_20155212_20155239
    • 运行:超级终端中运行cd /arm_20155208_20155212_20155239 然后在超级终端中运行./armhello
    • 运行成功截图:

    5、清理工作

    • 实验结束后,把实验室原来的网线插回,否则以后做实验的同学无法开机,提交插好网线的照片。
    • 结果

    实验中遇到的问题

    问题: 在实验的第二个小实验中,刚开始使用自己的笔记本尝试ping通,发现无论如何都连接不上。

    解决过程: 开始尝试解决问题,是首先考虑是不是自己ping的IP出错了,仔细检查后发现并没有错,然后考虑到了虚拟机的网络连接方式,尝试使用了桥接网络和NET网,都还是无法连接,后来又想到了是不是防火墙导致无法连接主机,但是把防火墙彻底关闭之后也无济于事,最后只能是使用实验室的电脑进行实验才解决了这个问题。

    实验体会及总结

    • 首先为了完成实验学习了几个知识点:
      1、交叉编译:

      • 交叉编译,就是在一个平台上生成另一个平台上的可执行代码。这个概念的出现和流行是和嵌入式系统的广泛发展同步的。

      • 简单来说,就是在一个平台上生成另一个平台上的可执行代码。

      • 宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。

      • 目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。

    • NFS:

        NFS是`Network File system`的缩写,即网络文件系统。
        使我们能够达到文件在不同系统间的共享。当用户想使用远程文件时只要用“mount”命令就可把远程文件系统挂接在自己的文件系统之下,使远程的文件与使用本地计算机上的文件一样。
        
        在计算机A上,想要把计算机B上的/home/linux/exp挂接到A上的/exp,执行命令`mount B的IP地址:/home/linux/exp /exp`
        
        当客户机挂接一个目录或文件时,并不是说复制服务器上的这一个目录或文件到本地的计算机上,而是在使用时从服务器上读取文件到本地的内存中,因此可以用cd进入这一个挂接到的目录,就如同进入本地的目录一样.
      
    • file命令
      file用来探测指定文件的类型

    参考资料

    蓝墨云班课实验指导

    交差编译

  • 相关阅读:
    Ant Design Pro:Layout 组件——嵌套布局
    React实战之将数据库返回的时间转换为几分钟前、几小时前、几天前的形式。
    React实战之Ant Design—Upload上传_附件上传
    React实战之60s倒计时按钮(发送短信验证按钮)
    map方法到底会不会改变原始数组?
    【React】react开发vscode插件推荐
    【React】React 工程的 VS Code 插件及配置
    【React】react新特性实例详解(memo、lazy、suspense、hooks)
    数组常用slice和splice的区别
    【React】react-beautiful-dnd 实现组件拖拽
  • 原文地址:https://www.cnblogs.com/dky20155212/p/7712586.html
Copyright © 2020-2023  润新知