实验室实验1交叉开发环境搭建Word文档下载推荐.docx
《实验室实验1交叉开发环境搭建Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验室实验1交叉开发环境搭建Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
宿主机
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
(8)在目标机(Putty)上操作
NFS挂载成功之后,用cd命令切换到/mnt/nfs目录下,用ls命令可以看到Linux宿主机/up-techpxa270cl目录下的所有文件和目录。
如图19所示。
#cd/mnt/nfs
#ls
图19查看共享目录
(9)Linux虚拟机上编写示例程序源代码
在Linux虚拟机中的/up-techpxa