您的位置:首页 > 其它

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

2016-11-05 23:56 501 查看

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设在同一个网段,才能正常的进行后续步骤,所以设置完毕后,需分别在
cmd
Teminal
超级终端
尝试连接(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
文件夹下,找到症结

解决办法:

途径一:
cd
host
目录下,再执行命令:
./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蔡馨熤:

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

参考资料

百度百科-交叉编译环

linux mount (挂载命令)详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐