小组成员:20165223 ,20165218
实验名称:开发环境的熟悉
目录
一、实验准备
- 交叉编译
简单地说,就是在一个平台上生成另一个平台上的可执行代码。 有时,目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时候,目的平台上的资源贫乏,无法运行我们所需要编译器;有时,目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。所以除了主机编译,我们还需要交叉编译。但同时,由于交叉编译受到专利、版权、技术等的限制,并不总是能进行交叉编译。
- 宿主机与目标机
宿主机是执行编译、连接嵌入式软件的计算机(PC机),目标机是运行嵌入式软件的硬件平台(开发板)。
- NFS
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
- 超级终端
超级终端是一个通用的串行交互软件,很多嵌入式应用的系统有与之交换的相应程序,通过这些程序,可以通过超级终端与嵌入式系统交互,使超级终端成为嵌入式系统的“显示器”。
二、实验内容
(一)交叉编译环境
(1)实验要求
- 实验两人一组
- 可以使用自己的笔记本,也可以使用实验室台式机,使用实验室机器的不用做本题
- 安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe”
- 解压老师提供的software目录中的“Ubuntu1204.rar”
- 用VMWare打开Ubuntu,用户名:linux,口令:1
- 建立实验目录"mkdir linux_组员1学号_组员2学号"
- 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名
- 参考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
- 分别运行linuxhello,armhello,有什么结果?提交截图并用file命令分析原因。
(2)实验步骤与截图
- 使用自己的笔记本,成功安装好虚拟机Ubuntu并打开
- 进入目录 /bocsd 并运行 armc.sh :
cd bocsd
,./armc.sh
- 建立实验目录:
mkdir linux_20165223_20165218
- 编写实验代码:
helloworld.c
- 用 gcc 编译 helloworld.c ,命名为 linuxhello :
linuxhello:gcc hello.c -o linuxhello
- 用 arm-none-linux-gnuenbi-gcc 编译 helloworld.c ,命名为 armhello :
/usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello
- 分别运行
linuxhello
和armhello
,并用file命令分析原因
(3)实验代码
// helloworld.c 具体代码
#int main()
{
printf("Hello World!
");
printf("20165223
");
printf("20165218
");
return 0;
}
(二)目标机宿主机联通
(1)实验要求
- 使用实验室机器不用安装软件,桌面上有相应图标
- 使用自己笔记本电脑的,解压超级终端软件“windows7st(Windows).rar”,并在桌面上建立快捷方式(这个不用在实验室做)
- 使用自己笔记本电脑的,到实验室把“USB转串口线”的USB口插入自己的电脑,把串口连到实验箱的COM0
- 参考视频配置超级终端,用超级终端作为实验箱的显示终端
- 用ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu中(宿主机)中用ifconfig在命令行查看IP
- 用网线连接实验室台式机(或自己笔记本电脑)和ARM实验箱的网口NET1(最大屏旁边的)
- 用ping命令保证目标机和宿主机能互相ping通,提交ping通的截图
(2)实验步骤与截图
- 在自己的电脑上安装虚拟机win7
- 先安装好USB转串口的驱动
- 把USB转串口线的USB口插入自己的电脑,串口连到实验箱的COM0
- 用网线的一端连接自己的笔记本电脑,另一端连接ARM实验箱的网口NET1(最大屏旁边的接口)
-
按要求配置超级终端
-
用ifconfig在超级终端中查看实验箱IP(192.168.0.232)
- 用ipconfig在win7虚拟机命令行cmd中查看IP(192.168.0.231)
- 在Ubuntu中用ifconfig在终端中查看IP(192.168.0.230)
- 用ping命令观察实验箱、win7虚拟机、Ubuntu之间能否互相ping通
三、实验总结
(一)遇到的问题
(1)任务一(交叉编译环境)中,为何无法用交叉编译器编译helloworld.c?
- 出现问题:使用交叉编译器arm-none-linux-gnuenbi-gcc编译helloworld.c时出现如图错误提示
- 解决方法:进入
/usr/local/toolchain/toolchain-4.3.2/bin
文件夹中检查编译文件
-
发现是
arm-none-linux-gnueabi-gcc
,不是arm-none-linux-gnuenbi-gcc
-
更改后成功编译运行
(2)任务二(目标机宿主机联通)中为何无法ping通?
- 出现问题:如图,ping接时无法成功ping通
- 解决方法:将win7虚拟机的IP地址与实验箱和Ubuntu设为同一网段,再ping即可ping通
(3)如何将win7虚拟机的IP地址与实验箱和Ubuntu设为同一网段?
- IP不在需要的网段内
- 右键
网络
,点击属性
- 进入
网络和共享中心
,点击更改适配器设备
- 右键
本地连接
选择属性
- 双击IPv4
- 更改红框内IP,点击子网掩码(自动生成)
- 更改成功,显示IP为设置IP
(二)分析与总结
- 本实验是我们第一次使用ARM实验箱,让我进一步熟悉了Linux开发环境的配置和使用。
- 学习了构建交叉编译环境和交叉编译器arm-none-linux-gnuenbi-gcc的使用,先在Linux中编译生成可执行文件后再挂载到ARM开发板上,再在开发板上进一步运行。
- 实验中也遇到了许多问题,最终在与同伴的合作中顺利解决问题,希望在以后的实验中也能继续合作,合力完成实验,做得更好。