20135203齐岳信息安全系统设计基础——实验一实验报告
一、实验原理
交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
二、实验内容与步骤
1.连接arm开发板
首先连接电源线,使开发板的开关处于闭合状态,再分别将串口线、并口线、网线和USB线与PC机连好。连接串口线时接左端的串口。
2.建立超级终端
新建一个通信终端,取名为arm。在属性对话框中,将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制
。
3.启动实验平台
先打开超级终端,再打开arm机电源开关。等arm机的信息显示在超级终端的窗口中。输入 ifconfig 命令,记录下arm机的ip为:192.168.0.121。
4.修改xp系统与redhat虚拟机的ip,使它们均与arm机的ip在同一网段。
xp系统的ip地址在本地连接的属性选项卡,Internet协议 (TCP/IP)选项中;Rad Hat的IP地址在"系统设置-网络-编辑-静态的IP地址"中设置,设置完成后重启虚拟机,IP才会生效。
5.安装arm编译器
通过PC机访问共享文件夹,将编译器拷贝到共享文件夹中,从而虚拟机也可以访问。安装解压后的文件。
6.配置环境变量
在虚拟机中使用 vi 修改/root/.bash_profile 文件中的 PATH 变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/,存盘后执行: source /root/.bash_profile,则以后 armv4l-unknown-linux-gcc 会自动搜索到,可以在终端上输入。
7.建立.c文件并编译
在虚拟机中进入文件夹/root/bc,在此目录下编写 hello.c 文件。利用命令armv4l-unknown-linux-gcc 对 hello.c 进行编译,生成 hello 可执行文件。
8.下载调试
在超级终端中将共享文件夹挂载好,建立开发板与虚拟机之间的通讯。输入命令“ mount -t nfs -o nolock 192.168.0.234:/home/bc /host” (注意 bc后面要有空格,目的是将bc文件挂载到/host目录下,如果没有空格则表示一个子目录。)
三、实验过程及知识点理解
1、如何安装交叉编译环境?
在linux平台上安装好的基础上,开始配置arm-linux-gcc,使其正常工作
1)下载并安装arm-linux-gcc;
2)对arm-linux-gcc-进行解压;
3)修改配置文件,将arm-linux-gcc添加到环境变量中,因为arm-linux-gcc的命令是在/usr/local/arm/4.4.3/bin下,其目的通过对全局变量绑定使之能够在任意一个目录下能够执行该命令。
4)立即使新的环境变量生效
[root@localhost opt]# source /etc/profile
[root@localhost opt]#
5)测试是否安装成功
2、实验箱、虚拟机Redhat、WinXP之间的IP需要满足什么关系?为什么?
三者的IP必须在同一网段,只有当IP地址在同一个网段的时候三者之间才能ping通,从而进行数据传输。
3、在属性对话框中,“将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制”。的原因是什么?
单片机的波特率必须和PC的波特率一致才能接收正确,100000不是PC的标准波特率。数据位设为8也是同样的道理,都是为了正确传输数据,若单片机设置和PC机不匹配,则会导致乱码及数据丢失。
4、实验中mount命令中每个选项代表什么?
挂载-mount 命令的一般格式是:mount -t 文件类型 文件名 加载的目录,nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能,所以要mount -o nolock。
参考资料:
《信息安全系统设计基础实验图文教程》
《如何建立Linux下的ARM交叉编译环境》http://www.cnblogs.com/joeblackzqq/archive/2011/05/17/2048696.html
《关于mount nfs时-o nolock的问题》http://blog.sina.com.cn/s/blog_4ce992f40102v6jo.html