1、windows系统:WinXP Xin7 其它: Linux 系统:RedHat 9 RHEL4 其它:VMware虚拟机: VMware Workstation 9 其它:串口调试工具:WinXP自带的超级终端Linux自带的minicom第三方串口工具:嵌入式Linux 3.项目预习(1)了解项目目标、项目任务要求、项目设计和项目实施步骤。(2)下载本次实验所需要的软件:USB转串口驱动程序和超级终端软件。(3)完成第5大项中步骤。(4)回答以下问题 gcc是什么?如何使用gcc? Make工具的作用是什么?如何编写makefile文件? 什么是交叉编译?如何使用交叉编译工具?4.项目设计
2、(1)宿主机与ARM目标机的通信示意图下图1描述宿主机(Windows系统、Linux虚拟机系统)以及ARM目标机的Linux系统三者之间的关系,以及文件传输和通信所使用的协议和线路。图1 交叉开发模式(2)项目开发流程项目开发的基本流程为:代码编写、交叉编译、通过NFS文件共享的方式mount到ARM目标机上运行。1)创建工程目录并编写源程序 方式一:在宿主机Linux虚拟机的项目开发目录中编写源代码。可以用任何编辑器编写源代码,如Vi、GEdit和Emacs等。 方式二:在宿主机Windows下编辑、保存源代码并将其转移到Linux虚拟机的指定目录中。提示:使用VMware文件共享、sam
3、ba服务或FTP等网络服务。2)编译工程利用Linux操作系统的宿主机进行交叉编译、汇编及连接,形成可在ARM目标机上执行的二进制代码(这种可执行代码并不能在宿主机上执行),可用两种方式编译: 直接用交叉编译器arm-linux-gcc进行 编写makefile文件,用make命令进行编译。3)通过NFS共享方式运行目标程序如图2所示,通过NFS共享来把可执行文件所在项目工作目录挂载到目标机上运行。调试时可以使用串口进行调试。通过Windows的超级终端,或者Linux虚拟机的minicom,控制目标机,对其进行操作。图2 NFS共享方式5.项目实施(0) 熟悉目标机硬件系统(1)检查Linu
4、x虚拟机网络设置虚拟机的网络连接方式为桥接并且设备是connected,如图3、图4所示。图3 虚拟机设置界面图4 桥接设置界面有些同学选择上面的选项网络不好用,若不好用,则可按下面界面操作:(2)Linux虚拟机上,检查交叉编译器是否安装用以下命令可以检查Linux虚拟机是否已经安装好了交叉编译环境。#arm-linux-gcc -v思考:如何设置交叉编译器的环境变量,并使其生效?(1)PATH环境变量;(2)source命令。(3)Linux虚拟机上,设置虚拟机IP地址查看虚拟机IP#ifconfigLinux虚拟机IP需要设置为和ARM目标机同一个网段,并且不能相同。例如可以设置为192
5、.168.0.10。#ifconfig eth0 192.168.0.10(4)Linux虚拟机上,设置NFS共享将/up-techpxa270cl设置为NFS共享目录,并确保NFS服务正在运行。NFS服务,可以实现两台Linux系统中文件的共享。在本书实验项目开发中,主要用于Linux虚拟机和ARM目标机之间文件共享,从而实现将实验项目软件mount到ARM目标机上运行。点击Linux虚拟机系统主菜单运行“系统”“管理”,选择“服务器设置”,选择“NFS服务器”,点击“增加”,弹出如图6所示界面。在“基本”选项卡中,目录中填入需要共享的路径,在“主机”中填入允许进行连接的主机IP地址。设置为
6、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/nfs restart”命令,重新启动NFS
7、服务,更改才会生效。#/etc/rc.d/init.d/nfs restart(5)开发系统物理连接a.连接电源(12V),将随机附带的一根电源线的一端插入到电源插座中,将另外一端插入目标机电源接口上;b.连接网线,将网线一端连接到目标机的网口上,另一端连接到PC机的网口上。c.连接串口线,一端连接PC机的串口,另一端连接到目标机的UART0上(即COM1);注意:目标机具有两个串口,分别为UART0和UART1,UART0为左侧靠近电源接口的串口。串口可使用相应的USB转接线来代替,如USB-RS232转接线,安装或更新相应的驱动程序后,将转接线的USB头插入宿主机的USB接口,会将其转化为
8、串口,具体串口的编号可查看宿主机Windows系统的“设备管理器”“端口”。如图10所示。图10 串口设置(6)Linux虚拟机上,设置串口通信工具Putty简介:Putty是一个免费的、Windows平台下的telnet、serial和ssh客户端。用它来远程管理目标板十分好用,其主要优点如下:完全免费;在Windows 9x/NT/2000下运行的都非常好;全面支持ssh1和ssh2;绿色软件,无需安装,下载后在桌面建个快捷方式即可使用;体积很小,仅364KB (0.54 beta版本);操作简单,所有的操作都在一个控制面板中实现。本书中使用它来代替超级终端使用。Putty操作指南:把Pu
9、tty下载到机器上,双击putty.exe,出现如图11的启动界面。图11 Putty启动界面点击“串口选项”,出现如图12所示界面。图12 串口界面在“连接到的串口”位置填写设备管理器中实际使用的串口号,选择为COM9,具体串口的编号可查看宿主机Windows系统的“设备管理器”“端口”。“波特率”设为115200,“数据位”设为8位,停止位设为1位,“奇偶校验位”设为无,“流量控制”设为无。设置界面如图13所示。图13 Putty设置界面点击会话选项“会话”,出现如图14所示界面。默认的连接类型为SSH。图14 连接类型选择界面选择“串口”,在“保存的会话”窗口输入想要保存的名字,我们输入
10、名字为“neusoft”,如图15所示,点击“保存”按钮即保存了用户的配置,如图16所示。图15 保存设置界面图16 保存界面接着双击“neusoft”,即打开工作界面,如图17所示。图17 Putty调试界面完成串口通讯工具的设置。此处Putty界面就是目标机的操作界面!(7)关闭无线网,启动ARM目标机,挂载NFS共享目录启动ARM目标机,Putty中将显示目标机的启动信息。按回车键,启动目标机Linux系统。正常启动后,会显示“rootIntel /#”,等待命令输入。然后,在终端程序中,用如下命令挂载共享目录,将Linux虚拟机的NFS共享目录/up-techpxa270cl挂载到AR
11、M目标机的/mnt/nfs空目录中。在目标机上(Putty)上输入如下命令:#mount t nfs o nolock 192.168.0. 10:/up-techpxa270cl /mnt/nfsmount:挂载命令-t nfs:挂载类型-o nolock:参数,不锁文件 192.168.0.10:/up-techpxa270cl:宿主机上的文件夹 /mnt/nfs:目标机文件夹命令中的IP地址(192.168.0.10)为宿主开发机IP(Linux虚拟机),挂载成功后如图18所示。图18 NFS挂载成功如果出现version older than kernel等信息就说明挂载成功,如果出现
12、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没有设置,
13、或者与宿主开发机设置的不在同一个网段,用ifconfig eth0 192.168.0.105修改为192.168.0.105。如果IP都对,则测试网络是否连能:ping 192.168.0.105ping 192.168.0.10如果ping不通,原因可能是:没有连接网线或者连接松动,宿主机Linux系统的IP(192.168.0.10)和目标机的IP(192.168.0.105)配置不正确,windows防火墙未关闭、无线网卡未关闭、VM不是桥接(bridged)或者没有connected等。 b) 查看NFS服务设置service nfs status如果不是正在运行,则service
14、nfs start或service nfs restart(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#mkdir test0#cd test0参考代码:/* -main.c- */#incl
15、ude int main(viod) printf(Hello is ok!n);printf(NFS is ok! return 0;(10)Linux虚拟机上交叉编译#arm-linux-gcc main.c o hello(11)在目标机上(Putty)运行示例程序NFS挂载成功之后,用cd命令切换到/mnt/nfs目录下,用ls命令可以看到Linux宿主机/up-techpxa270cl目录下的所有文件和目录,运行刚刚编译好的程序hello和helloworld,并查看程序在目标机上运行的结果。#cd /mnt/nfs#cd test0#./hello至此,我们的交叉开发环境就搭建好了
16、,可以实现在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%动手执行能力解决问题的能力项目完成程度实验总结(个人)实验报告检查提问
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2