实验室实验1交叉开发环境搭建.docx
- 文档编号:12722869
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:22
- 大小:976.09KB
实验室实验1交叉开发环境搭建.docx
《实验室实验1交叉开发环境搭建.docx》由会员分享,可在线阅读,更多相关《实验室实验1交叉开发环境搭建.docx(22页珍藏版)》请在冰豆网上搜索。
实验室实验1交叉开发环境搭建
项目一交叉开发环境搭建
1.能力培养目标
●熟悉项目开发的硬件系统
●掌握Linux宿主机的NFS共享的设置
●掌握串口调试工具的使用
●掌握宿主机与目标机的线路连接
●通过NFS共享,在目标机上运行程序
2.项目任务要求
(1)项目任务
熟悉项目开发的硬件系统。
搭建嵌入式软件项目开发环境,熟悉开发过程。
(2)项目来源及应用
不论开发任何软件项目,也不论项目大小,都需要事先搭建软件开发环境。
掌握软件开发环境搭建和使用的方法,是所有项目的第一步,非常重要。
熟悉软件项目编译、运行和调试的各种操作,减少以后重复该工作时所用的时间,能大大提高工作效率。
(3)功能需求
搭建项目开发环境,以个人电脑作为宿主PC机,配置交叉编译环境,并与ARM目标机连接,通过NFS共享,在ARM目标机上运行交叉编译后的应用程序。
熟悉交叉编译及程序运行方法,为以后的其他项目做准备。
(4)开发环境需求
硬件
宿主机
PC机、USB转串口线、网线
目标机
ARM目标机
软件
宿主机
windows系统:
□WinXP□Xin7其它:
Linux系统:
□RedHat9□RHEL4其它:
VMware虚拟机:
□VMwareWorkstation9其它:
串口调试工具:
□WinXP自带的超级终端
□Linux自带的minicom
□第三方串口工具:
目标机
嵌入式Linux
3.项目预习
(1)了解项目目标、项目任务要求、项目设计和项目实施步骤。
(2)下载本次实验所需要的软件:
USB转串口驱动程序和超级终端软件。
(3)完成第5大项中步骤。
(4)回答以下问题
●gcc是什么?
如何使用gcc?
●Make工具的作用是什么?
如何编写makefile文件?
●什么是交叉编译?
如何使用交叉编译工具?
4.项目设计
(1)宿主机与ARM目标机的通信示意图
下图1描述宿主机(Windows系统、Linux虚拟机系统)以及ARM目标机的Linux系统三者之间的关系,以及文件传输和通信所使用的协议和线路。
图1交叉开发模式
(2)项目开发流程
项目开发的基本流程为:
代码编写、交叉编译、通过NFS文件共享的方式mount到ARM目标机上运行。
1)创建工程目录并编写源程序
●方式一:
在宿主机Linux虚拟机的项目开发目录中编写源代码。
可以用任何编辑器编写源代码,如Vi、GEdit和Emacs等。
●方式二:
在宿主机Windows下编辑、保存源代码并将其转移到Linux虚拟机的指定目录中。
提示:
使用VMware文件共享、samba服务或FTP等网络服务。
2)编译工程
利用Linux操作系统的宿主机进行交叉编译、汇编及连接,形成可在ARM目标机上执行的二进制代码(这种可执行代码并不能在宿主机上执行),可用两种方式编译:
●直接用交叉编译器arm-linux-gcc进行
●编写makefile文件,用make命令进行编译。
3)通过NFS共享方式运行目标程序
如图2所示,通过NFS共享来把可执行文件所在项目工作目录挂载到目标机上运行。
调试时可以使用串口进行调试。
通过Windows的超级终端,或者Linux虚拟机的minicom,控制目标机,对其进行操作。
图2NFS共享方式
5.项目实施
(0)熟悉目标机硬件系统
(1)检查Linux虚拟机网络设置
虚拟机的网络连接方式为桥接并且设备是connected,如图3、图4所示。
图3虚拟机设置界面
图4桥接设置界面
有些同学选择上面的选项网络不好用,若不好用,则可按下面界面操作:
(2)Linux虚拟机上,检查交叉编译器是否安装
用以下命令可以检查Linux虚拟机是否已经安装好了交叉编译环境。
#arm-linux-gcc-v
思考:
如何设置交叉编译器的环境变量,并使其生效?
提示:
(1)PATH环境变量;
(2)source命令。
(3)Linux虚拟机上,设置虚拟机IP地址
查看虚拟机IP
#ifconfig
Linux虚拟机IP需要设置为和ARM目标机同一个网段,并且不能相同。
例如可以设置为192.168.0.10。
#ifconfigeth0192.168.0.10
(4)Linux虚拟机上,设置NFS共享
将/up-techpxa270cl设置为NFS共享目录,并确保NFS服务正在运行。
NFS服务,可以实现两台Linux系统中文件的共享。
在本书实验项目开发中,主要用于Linux虚拟机和ARM目标机之间文件共享,从而实现将实验项目软件mount到ARM目标机上运行。
点击Linux虚拟机系统主菜单运行“系统”——“管理”,选择“服务器设置”,选择“NFS服务器”,点击“增加”,弹出如图6所示界面。
在“基本”选项卡中,目录中填入需要共享的路径,在“主机”中填入允许进行连接的主机IP地址。
设置为192.168.0.*或*,代表允许这个C类网段的所有机器都可以访问该共享。
并选择允许客户对共享目录的操作为“读写”(Read/write)。
如图5-图9所示:
图5设置NFS共享a
图6设置NFS共享b
“一般选项”选项卡设置,可以保留默认值。
图7设置NFS共享c
“用户访问”选项卡设置,可以保留默认值;为了编程、操作方便,请将“远程根用户当作本地根用户”,这样安全性虽然较差一些,但方便了开发。
图8设置NFS共享d
最后退出时则完成NFS配置。
配置好后,界面显示应如下图所示:
图9设置NFS共享e
配置好后,需要在终端中输入“/etc/rc.d/init.d/nfsrestart”命令,重新启动NFS服务,更改才会生效。
#/etc/rc.d/init.d/nfsrestart
(5)开发系统物理连接
a.连接电源(12V),将随机附带的一根电源线的一端插入到电源插座中,将另外一端插入目标机电源接口上;
b.连接网线,将网线一端连接到目标机的网口上,另一端连接到PC机的网口上。
c.连接串口线,一端连接PC机的串口,另一端连接到目标机的UART0上(即COM1);
注意:
目标机具有两个串口,分别为UART0和UART1,UART0为左侧靠近电源接口的串口。
串口可使用相应的USB转接线来代替,如USB-RS232转接线,安装或更新相应的驱动程序后,将转接线的USB头插入宿主机的USB接口,会将其转化为串口,具体串口的编号可查看宿主机Windows系统的“设备管理器”“端口”。
如图10所示。
图10串口设置
(6)Linux虚拟机上,设置串口通信工具
Putty简介:
Putty是一个免费的、Windows平台下的telnet、serial和ssh客户端。
用它来远程管理目标板十分好用,其主要优点如下:
完全免费;在Windows9x/NT/2000下运行的都非常好;全面支持ssh1和ssh2;绿色软件,无需安装,下载后在桌面建个快捷方式即可使用;体积很小,仅364KB(0.54beta版本);操作简单,所有的操作都在一个控制面板中实现。
本书中使用它来代替超级终端使用。
Putty操作指南:
把Putty下载到机器上,双击putty.exe,出现如图11的启动界面。
图11Putty启动界面
点击“串口选项”,出现如图12所示界面。
图12串口界面
在“连接到的串口”位置填写设备管理器中实际使用的串口号,选择为COM9,具体串口的编号可查看宿主机Windows系统的“设备管理器”“端口”。
“波特率”设为115200,“数据位”设为8位,停止位设为1位,“奇偶校验位”设为无,“流量控制”设为无。
设置界面如图13所示。
图13Putty设置界面
点击会话选项“会话”,出现如图14所示界面。
默认的连接类型为SSH。
图14连接类型选择界面
选择“串口”,在“保存的会话”窗口输入想要保存的名字,我们输入名字为“neusoft”,如图15所示,点击“保存”按钮即保存了用户的配置,如图16所示。
图15保存设置界面
图16保存界面
接着双击“neusoft”,即打开工作界面,如图17所示。
图17Putty调试界面
完成串口通讯工具的设置。
此处Putty界面就是目标机的操作界面!
(7)关闭无线网,启动ARM目标机,挂载NFS共享目录
启动ARM目标机,Putty中将显示目标机的启动信息。
按回车键,启动目标机Linux系统。
正常启动后,会显示“[root@Intel/]#”,等待命令输入。
然后,在终端程序中,用如下命令挂载共享目录,将Linux虚拟机的NFS共享目录/up-techpxa270cl挂载到ARM目标机的/mnt/nfs空目录中。
在目标机上(Putty)上输入如下命令:
#mount–tnfs–onolock192.168.0.10:
/up-techpxa270cl/mnt/nfs
注意:
mount:
挂载命令
-tnfs:
挂载类型
-onolock:
参数,不锁文件
192.168.0.10:
/up-techpxa270cl:
宿主机上的文件夹
/mnt/nfs:
目标机文件夹
命令中的IP地址(192.168.0.10)为宿主开发机IP(Linux虚拟机),挂载成功后如图18所示。
图18NFS挂载成功
如果出现versionolderthankernel等信息就说明挂载成功,如果出现Bad或failed信息,则说明挂载没成功,要根据实际情况操作。
如果挂载不成功,解决办法如下:
思考:
如果在目标机上,mount宿主机的NFS共享目录不成功怎么办?
提示:
a)测试网络连通性;b)NFS服务设置;c)查看无线网是否关闭
a)测试网络连通性
先查看IP是否正确:
命令如下:
在虚拟机上:
ifconfig查看IP是否为192.168.0.10
在目标机上:
ifconfig查看IP是否为192.168.0.105
思考:
目标机没有IP怎么办?
提示:
通过超级终端执行命令ifconfig
检查ARM目标机的IP设置,可以用ifconfig命令查看,默认IP设置为192.168.0.105。
如果IP没有设置,或者与宿主开发机设置的不在同一个网段,用ifconfigeth0192.168.0.105修改为192.168.0.105。
如果IP都对,则测试网络是否连能:
命令如下:
在目标机上:
ping192.168.0.105
在目标机上:
ping192.168.0.10
如果ping不通,原因可能是:
没有连接网线或者连接松动,宿主机Linux系统的IP(192.168.0.10)和目标机的IP(192.168.0.105)配置不正确,windows防火墙未关闭、无线网卡未关闭、VM不是桥接(bridged)或者没有connected等。
b)查看NFS服务设置
servicenfsstatus
如果不是正在运行,则
servicenfsstart或servicenfsrestart
c)查看无线网是否关闭
(8)在目标机(Putty)上操作
NFS挂载成功之后,用cd命令切换到/mnt/nfs目录下,用ls命令可以看到Linux宿主机/up-techpxa270cl目录下的所有文件和目录。
如图19所示。
#cd/mnt/nfs
#ls
图19查看共享目录
(9)Linux虚拟机上编写示例程序源代码
在Linux虚拟机中的/up-techpxa270cl目录下创建目录test0,并在此目录下编写如下文件:
main.c
#cd/up-techpxa270cl
#mkdirtest0
#cdtest0
参考代码:
/*-------main.c------*/
#include
intmain(viod)
{
printf("Helloisok!
\n");
printf("NFSisok!
\n");
return0;
}
(10)Linux虚拟机上交叉编译
#arm-linux-gccmain.c–ohello
(11)在目标机上(Putty)运行示例程序
NFS挂载成功之后,用cd命令切换到/mnt/nfs目录下,用ls命令可以看到Linux宿主机/up-techpxa270cl目录下的所有文件和目录,运行刚刚编译好的程序hello和helloworld,并查看程序在目标机上运行的结果。
#cd/mnt/nfs
#ls
#cdtest0
#ls
#./hello
至此,我们的交叉开发环境就搭建好了,可以实现在Linux虚拟机上编写程序、编译程序,之后在目标机上运行程序的目的了,这样可以不用每次都把程序下载到目标机上,会大大方便开发过程和延长目标机的寿命!
6.项目问题
(1)根据项目参考文档,说明本次实验中的硬件系统。
(2)说明本次实验中宿主机和目标机之间的通信连接。
(3)超级终端的作用是什么?
(4)NFS文件系统挂载的作用、目的是什么?
如果目标机重新启动,是否需要重新挂载NFS文件系统?
(5)写出将宿主机192.168.0.1中的/home/share目录挂载到目标机/mnt/nfs下的mount命令。
(6)说明执行mount命令不成功主要的原因是哪两大类?
(7)说明ping命令不通可能的原因是什么?
如何解决?
(8)写出本实验中从在宿主机上编写程序到在目标机上运行程序的简要步骤?
7.项目考核
项目考核标准:
考核项目
权重
主要考核点
实验预习(个人)
20%
实验要求的预习项
实验过程及结果(个人)
40%
动手执行能力
解决问题的能力
项目完成程度
实验总结(个人)
40%
实验报告检查
提问
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验室实验1 交叉开发环境搭建 实验室 实验 交叉 开发 环境 搭建