• 20145221 《信息安全系统设计基础》实验一 开发环境的熟悉


    20145221 《信息安全系统设计基础》实验一 开发环境的熟悉

    实验报告封面

    实验内容

    • 熟悉 linux 开发环境,学会基于 S3C2410 的 linux 开发环境的配置和使用。使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。
    • 本次实验使用 Redhat Linux 9.0 操作系统环境,安装 ARM-Linux 的开发库及编译器。 创建一个新目录,并在其中编写 hello.c 和 Makefile 文件。学习在 Linux 下的编程和编译 过程,以及 ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。

    实验步骤

    Step1:连接 arm 开发板

    • 将 arm 开发板电源线接好,保持开发板开关处于闭合状态。再分别将串口线、并口线和网线与 pc 机连接好。

    Step2:建立超级终端

    • 运行 windows XP 系统下“开始”、“所有程序”、“附件”、“通讯”、“超级终端”。
    • 新建一个通信终端,取名为 arm。在属性对话框中,将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制。另存为在桌面。

    Step3:启动实验平台

    • 打开超级终端,打开 arm 机电源开关。等待一分钟,arm 机的信息会显示在超级终端的窗口中。
    • 继续等待,直至出现如图 6 所示界面。输入 ifconfig 命令,记录下 arm 机的 ip 为:192.168.0.121

    Step4:保证XP和redhat虚拟机与arm试验箱在同一个网段

    • 分别修改PC机中XP系统与redhat系统的IP
    • 本次实验中将pc机的ip设为192.168.0.55,redhat虚拟机ip为192.168.0.234
    • 注意:
      • redhat虚拟机IP更改后须重启虚拟机才能达到预期;
      • 该步骤是后续步骤能否实现的关键所在,只有将三者的IP设在同一个网段,才能正常的进行后续步骤,所以设置完毕后,需分别在cmdTeminal超级终端尝试连接(ping)其余两者的IP,只有互相连通,才能进行后续步骤。

    Step5:安装 arm 编译器

    • 在 pc 机中“开始”、“运行”,输入虚拟机的 ip\192.168.0.234,输入用户名 bc,密码 123456 然后确定,就可以访问虚拟机的文件了。然后把所需文件解压缩拷贝到共享文件夹 bc 中。
    • 文件夹bc在此处的作用就是起到将主机与虚拟机共享连接的作用(前提是二者能互相ping通)
    • 进入虚拟机,在命令行中输入./install.sh,安装脚本程序将会自动建立目录,配置编译环境。

    Step6:配置环境变量

    • 类似于windows中的cmd,要想虚拟机终端能直接识别编译指令armv4l-unknown-linux-gcc必须先为虚拟机配置好环境变量。
    • 配置步骤如下:
      • 在虚拟机中使用 vi 修改/root/.bash_profile 文件中的 PATH 变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ (因为该文件为隐藏系统文件,所以使用 ls 命令不可见)
      • 存盘后执行: source /root/.bash_profile,则以后armv4l-unknown-linux-gcc会自动搜索到,可以在终端上输入。

    Step7:建立 hello.c 文件并编译

    • 在虚拟机中进入文件夹/root/bc,在此目录下编写 hello.c 文件。利用命令armv4l-unknown-linux-gcc 对 hello.c 进行编译,生成 hello 可执行文件。
    • 编译命令:armv4l-unknown-linux-gcc hello.c -o hello

    Step8:下载调试

    • 在超级终端中将共享文件夹挂载好,建立开发板与虚拟机之间的通讯。
    • 输入命令mount -t nfs -o nolock 192.168.0.234:/home/bc /host
    • 在超级终端中运行编译通过的 hello 可执行文件。

    Step9:编译运行结果如下图所示:

    实验过程中遇到的问题及解决过程

    编译hello.c文件后无法在超级终端中执行

    • 错误界面:

    • 解决过程:

      • 通过阅读错误提示:bash: ./hello: can not execute binary file,可知无法执行hello这个二进制可执行文件
      • 通过前几行代码可知,编译过程应无问题,不然会报错,排除编译错误
      • 那是不是可能便宜成功了,但挂载失败了,所以又再次在虚拟机与arm实验箱之间ping,结果显示连接正常,能顺利读取返回包,排除连接错误
      • 那最后就要考虑这个二进制文件是否存在当前目录下,打开redhat的资源管理器,果然没有在bc文件夹下发现hello文件,再看编译指令,明显是将编译后的文件挂载到bc目录下的host文件夹下,找到症结
    • 解决办法:

      • 途径一:cdhost目录下,再执行命令:./hello
      • 途径二:直接执行命令:./host/hello即可。

    实验过程的理解

    为什么需要交叉编译?如何安装交叉编译环境?

    • 概念:指编译器在某一个平台下能够编译出另外一个平台下运行的程序,主要是为了多平台应用程序使用的
    • 为什么:
      • 有时目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;
      • 有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;
      • 有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
    • 如何安装:
      • 先通过共享文件夹将编译工具拷贝到虚拟机中
      • 在虚拟机中通过./install.sh命令安装好arm编译器
      • 在为其配置好环境,就可以在虚拟机的终端中直接执行arm的编译指令了

    实验箱、虚拟机Redhat、WinXP之间的IP需要满足什么关系?如何配置?为什么?

    • 在前文已经提到,三者IP之间必须满足在同一网段,只有这样才能在没有路由的前提下实现网络通信,无线连接,做到Redhat与WinXP之间文件共享,Redhat与ARM实验箱之间交叉编译。
    • 配置方式:
      • 通过ifconfig获取ARM实验箱的IP
      • 将Redhat与WinXP的IP配置与实验箱在同一个网段
      • 注意:这里,需要参考子网掩码才好确定网络号和主机号,才能正确配置同一网段下的IP地址。

    实验中mount命令中每个选项什么意思?

    • mount命令:mount -t nfs -o nolock 192.168.0.234:/root/bc /host
    • 挂接命令(mount)
      • mount [-t vfstype] [-o options] device dir
    • -t vfstype指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用的参数有:
      • 光盘或光盘镜像:iso9660
      • DOS fat16文件系统:msdos
      • Windows 9x fat32文件系统:vfat
      • Windows NT ntfs文件系统:ntfs
      • Mount Windows文件网络共享:smbfs
      • UNIX(LINUX) 文件网络共享:nfs
    • -o options主要用来描述设备或档案的挂接方式。 常用的参数有:
      • loop:用来把一个文件当成硬盘分区挂接上系统
      • ro:采用只读方式挂接设备
      • rw:采用读写方式挂接设备
      • iocharset:指定访问文件系统所用字符集
    • device要挂接(mount)的设备。
    • dir设备在系统上的挂接点(mount point)。

    实验体会

    20145221高其

    • 在完成本次实验之前对ARM实验箱、虚拟机Redhat、WinXP的理解不够直观,甚至还很模糊,但完成了实验之后,加上实验的思考题对本次实验三者的关系有了大致的了解。
    • 主机的作用主要是提供虚拟机运行的环境,并把arm编译工具共享给linux虚拟机,在linux虚拟机下用arm编译工具编译hello.c文件,将生成的可执行文件挂接到arm实验箱上,即可在实验箱的终端上进行操作,最终达到了虽然没有在arm实验箱中编译,但可以在arm上运行的效果。
    • 这次实验是小组完成,与小组同伴一起完成了本次实验,并尝试了一种新的不同的编译体验。

    20145326蔡馨熤:

    • 实验一其实不难,照着娄老师给的教程走就好了。在此次实验中,我们学习了如何搭建开发环境以运行可执行文件,第一次配置环境难免会有不熟练,相信以后几次实验中我们会做的更快更好。搭建好环境之后,接下来的任务就变得简单了,我们此次已经完成了实验一、实验二和实验四,还是比较高效的。我和高其同学也是经常组队实验,现在已经很默契了。我们会继续努力,争取在第二次实验课上把剩下的实验题目都做完!

    参考资料

  • 相关阅读:
    面向对象的三个基本元素(封装是指封装数据),五个基本原则
    Qt HTTP请求同步调用
    Linux内核源代码
    浅谈程序员创业(要有一个自己的网站,最好的方式还是自己定位一个产品,用心把这个产品做好。或者满足不同需求的用户,要有特色)good
    创业泡沫的「军功章」,高薪低能的程序员要分走一半(做的工作都没啥技术含量,老是重复劳动,所以才管自己叫码农)
    x64系统的判断和x64下文件和注册表访问的重定向——补记
    在职业规划方面,左玥主要给了同学们以下几个忠告(4条建议全部同意)
    独角兽TOP300
    [置顶] C语言中各种数据类型的长度 sizeof char, short, int, long, long long
    FastDFS是纯C语言实现,只支持Linux,适合以中小文件为载体的在线服务,还可以冗余备份和负载均衡
  • 原文地址:https://www.cnblogs.com/20145221GQ/p/6034436.html
Copyright © 2020-2023  润新知