2017-2018-1 学号20155329_5332_5302《信息安全系统设计基础》实验一 开发环境的熟悉
2017-2018-1 学号20155329《信息安全系统设计基础》实验一 开发环境的熟悉
队友博客链接
交叉编译
-
什么是交叉编译,为什么我们要用交叉编译?
-
交叉编译就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。我们主要是学习操作系统。
-
交叉编译的出现和发展:
交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。 -
什么是嵌入式系统:
第一,嵌入式系统是一个计算机系统
第二,嵌入式系统是针对某个应用的,也就是通常所说的“专用的”。
- 为什么要学习交叉编译:
嵌入式系统中的资源太少
交叉编译出来的程序,所要运行的目标环境中,各种资源,都相对有限,所以很难进行直接的本地编译,最常见的情况是:
因为编译,开发,都需要相对比较多的CPU,内存,硬盘等资源,而嵌入式开发上的那点资源,只够嵌入式(Linux)系统运行的,没太多剩余的资源,供你本地编译。所以需要在别的平台上进行跨平台编译,然后在其他的平台上运行
实验步骤
1. 交叉编译环境
- 用VMWare打开Ubuntu
- 建立实验目录"mkdir linux_20155329_20155302_20155332"
- 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名
#include<stdio.h>
int main()
{
printf(Hello,World!\n");
printf("Hello,5329胡佩伦\n");
printf("Hello,5332盛照宗\n");
printf("Hello,5302杨效宸\n");
return 0;
}
- 参考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
- 实验截图如下
2. 目标机(实验箱)宿主机(Ubuntu)联通
- 到实验室把“USB转串口线”的USB插入实验室电脑
- 用超级终端作为实验箱的显示终端
用ifconfig在超级终端中查看实验箱IP:192.168.0.232,在Ubuntu中用ifconfig在命令行中查看IP192.168.0.230 - 用网线连接实验室台式机和ARM实验箱的网口NET1
在超级终端中输入ping 192.168.0.230(ping UbuntuIP),在Ubuntu命令行中输入ping 192.168.0.232(ping 超级终端IP),用ping命令保证目标机和宿主机能互相ping通。 - 实验截图如下:
3. 目标机运行程序:
tftp和nfs
- TFTP
协议是简单文件传输协议,基于UDP 协议,没有文件管理、用户控制功能。TFTP 分为服务器端程序和客户端程序,在主机上通常同时配置有TFTP 服务端和客户端。 - NFS方式是开发板通过NFS挂载放在主机(PC )上的根文件系统。此时在主机在文件系统中进行的操作同步反映在开发板上;反之,在开发板上进行的操作同步反映在主机中的根文件系统上。实际工作中,我们经常使用NFS
方式挂载系统,这种方式对于系统的调试非常方便。
- 配置/etc/exports
- $ sudo vim /etc/exports
- NFS
允许挂载的目录及权限在文件
/etc/exports
中进行了定义。例如,我们要将
/source/rootfs
目录共享
出来,那么我们需要在
/etc/exports
文件末尾添加如下一行:
/source/rootfs*(rw,sync,no_root_squash,no_subt - $ sudo
/etc/init.d/nfs
kernel-server restart重启服务
实验步骤
- 在超级终端中用“mkdir /arm_20155329_20155332_20155302” 建立实验箱中程序运行目录“arm_20155329_20155302_20155332”
- 在超级终端中运行“mount -t nfs -o nolock 宿主机IP:/home/linux/linux_20155329_20155302_20155332 /arm_20155329_20155332_20155302”通过NFS把宿主机中的“linux_20155302_20155332_20155329组员2学号” 映射到目标机中的“/arm_20155332_5329_5302”
- 超级终端中运行"cd /arm_5332_5329_5302"
- 超级终端中运行"./armhello",
- 截图如下
清理工作
- 收拾好实验箱将从箱内取出物品一一放回
- 将拔下的网线插回实验室电脑主机。
- 收拾座位卫生并离开。
实验体会及遇见的问题
遇见的问题
- 我先是使用自己笔记本电脑做此次试验,在寝室已将电脑按照ARM实验箱指导书配置好,但是在实验室做实验时到了第二步骤时,目标机和宿主机ping不通。同学们用笔记本电脑做的也出现了此类问题,周围又无可用电脑,于是加入了和我共用实验箱的20155302_20155332同学的小组
- 第三步骤时,绝对路径错了
,导致没做出来
-第四步,由于时间原因并没有完成,下次实验时补上!
实验体会
此次实验结束后,给我的感觉就是时间紧张,早上发布的任务,中午才开始学习,做实验,对实验指导书进行学习,没检验。在实验过程中遇见问题,主要在自己笔记本电脑上耽误了很多时间,最后宿主机和目标机无法ping通。实验室电脑开机就用了半小时,装东西什么的弄下来快一小时了。给我们留下的实验的时间就不怎么足够了。
- 这次实验后,希望老师下次实验的发布时间能提前一些。
- 对于自己,在实验前将实验内容和老师的学习资料进行学习,将实验内容尽量做好拷入优盘,带入实验室直接用实验室电脑做。