执行文件下载到开发板运行<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
本文主要参考mini2440的说明文档。
Hello,World源代码
按上一篇博文搭建嵌入式开发环境的步骤安装了开发环境,在Ubuntux新建一个文件hello.c,把这个文件将放到
/home/lin/mini2440/examples/hello/目录,其源代码如下:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
首先进入测试程序源代码目录
#cd /home/lin/mini2440/examples/hello/
然后,使用命令行手工编译示例程序
#arm-linux-gcc –o hello main.c
或者借助编译脚本进行编译
#make
最后将生成 hello可执行文件
将编译好的可执行文件下载到目标板目前主要四种方式:
第一种:复制到介质(如优盘)
第二种:通过网络传送文件到开发板
第三种:通过串口传送文件到开发板
第四种:通过NFS(网络文件系统)直接运行
下面分别进行介绍:
一、 使用U盘
(1)由于使用的Linux系统是Ubuntu(8.10),对U盘是自动挂载的,所以不用像很多书上写的那样用mount命令挂载U盘。
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />512M的U盘插到PC机后,就直接自动挂载到/media/disk-1。
#sudo cp /home/lin/mini2440/examples/hello /media/disk-1
#umount /media/disk-1;卸载U盘
umount 时出现 "Device is busy" 解决办法可以参考下面网址
http://www.lirui.name/post/151.html
最简单的办法当然是直接把U盘拔了。
(2)把程序从U盘拷贝到目标板并执行
把优盘插入到开发半的USB Host接口,优盘会自动挂载/udisk目录,命令如下:
二、使用FTP传送文件
方法:使用ftp登录目标版,把编译好的程序上传;然后修改上传后目标板上的程序的可执行属性,并执行。
(1)PC机网口和目标板(友善之臂)的网口连接。
(2)在Ubuntu的终端执行
#ifconfig ;确认目标开发板的IP地址是多少 (192.168.1.230)
(3)hello文件在/home/lin/mini2440/examples/hello
文件夹里,所以先进入这个文件夹
#cd /home/lin/mini2440/examples/hello
(4) 然后,在目标板终端(2440开发板所对应的Windows下面的超级终端或Linux下面的minicom串口接收)执行命令如下图所示:
三、通过串口传送文件到开发板
linux下的minicom相当于windows下面的超级终端,minicom没有自己单独的界面,而是在Linux的“终端”显示。
在PC机的Ubuntu终端安装mincom
(1) minicom安装
#sudo apt-get install minicom
(2)minicom设置
#minicom -s
(3) 选择“串口设置”
在键盘按下A,选择修改“串口设备”,这项默认为/dev/ttyS8,修改为/dev/ttyS0 表示是串口1,如果使用串口2,修改为/dev/ttyS1。将选项E的值设置为115200,将选项F设置为NO(请根据实际情况配置)
(4)“选择文件名和路径”,设置上传下载的文件夹路径。
按回车退出 “选择文件名和路径“设置,要记住要保存mini的设置“设置保存为dfl”,不然的话,下次使用minicom的时候就要重新设置。“退出”,就能退出minicom的设置,进入minicom的主界面。“退出minicom”,就是退出Minicom,回到终端。
(5) PC机上传文件到开发板
在开发板终端上先进入/tmp 目录,然后输入 rz。
按Ctrl-A,再按s,会出现一个选择传输协议的菜单选项(zmodem/ymodem/xmodem/lermit/ascii),
(6)选择zmodem,会出现下面要选择上传文件的列表,选择要上传的的文件hello
按下回车后没有反应,ctrl+c退出,发现tmp文件夹里面没有hello,也就是没有上传,这是因为mincom不带xmodem和zmodem之类的协议,所以需要安装lrzsz这个软件,否则就会遇到传输不了文件或者timeout之类的错误。
#sudo apt-get install lszsz
下载和解压lrzsz后,进入目录执行 ./configure --prefix=/usr/local/lrzsz ,然后make,make install 最后建立软链接
#cd /usr/bin
#ln -s /usr/local/lrzsz/bin/lrz rz
#ln -s /usr/local/lrzsz/bin/lsz sz
(7) 重复上面的minicom的操作,这次会传输成功
(8)传输完成后便可以在开发板的/tmp目录下找到这个文件了。
(9)在开发板终端进入/tmp目录
[root@FriendlyARM/]# cd /tmp
(9)修改文件的属性
记得传送完毕把文件的属性改为可执行才能正常运行。(好像不用也行)
[root@FriendlyARM/tmp]#chmod +x hello
(10)执行程序
[root@FriendlyARM/tmp]# ./hello
Hello,FriendlyARM!
参考资料:
1)嵌入式linux系统与主机通过串口传输文件
http://hi.baidu.com/path_of_growth/blog/item/23ecd1fd6a80bbf4fd037f33.html
2)minicom,ckermit两个超级终端
http://hi.baidu.com/path_of_growth/blog/item/23ecd1fd6a80bbf4fd037f33.html
四、通过网络文件系统NFS执行
nfs原理:通过网络,将远程主机共享的文件系统,挂载到本机。这种模式的好处是减少映像文件的下载次数和对flash的烧写次数。对于缩短开发周期,提高开发效率很有好处。虽然下载hello程序用不了多久,但一旦应用程序变得越来越大,NFS运行的方便就能显现。
(1)在电脑服务器端下载并安装nfs
$ sudo apt-get install nfs-kernel-server portmap
(2)配置共享文件
设置服务器端(电脑)上一个文件夹作为共享文件夹,以后客户端(开发板)将通过网络文件系统NFS访问这个文件夹。我这里把/home/lin/NFSshare作为共享目录。
打开配置文件
$ sudo gedit /etc/exports
将下面这句话添加在这个文件最后。
/home/lin/NFSshare *(rw,sync,no_root_squash)
/home/lin/NFSshare是服务器端(电脑)共享的文件夹,需要把执行文件hello复制到此文件夹里。
注意NFSshare与*之间一定要有空格。而*号与后面就没有空格。*号代表ip地址。*代表允许所有的网络段访问,括号中rw代表可读写,sync未知,no_root_suqash意思是以root权限访问该共享文件夹。
(3)重启NFS服务
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-kernel-server restart
(4)服务器安装完之后可以这样测试。
本地测试:$sudo mount 192.168.1.160:/home/lin/NFSshare /tmp
执行后,可以在mnt目录下发现我的共享目录下的文件。
这样nfs应该就搭建成功了。其中192.168.1.160为服务端(电脑)的IP。这个服务端(电脑)的IP地址可以通过在电脑的“终端”输入命令#ifconfig 得到。
/home/lin/NFSshare文件夹里的内容挂载到/tmp文件夹里,/tmp文件夹里的原来的东西都不见了。 显示的是/home/lin/NFSshare文件夹的内容
$sudo umount 192.168.1.160:/home/lin/NFSshare /tmp
卸载后,/tmp原来的东西又回来了。
(5)客户端(开发板)连接服务端
将客户端(开发板)插上网线接入网络,设置好IP。
在客户端(2440开发板)终端输入:
#mount -t nfs -o nolock 192.168.1.160:/home/lin/NFSshare /tmp
如果无任何输出说明连接成功了。
#cd /tmp
#ls
可以看到这个目录下有我主机的共享目录的中的内容了。这样NFS连接就成功了。
参考资料:
1)Ubuntu下搭建嵌入式nfsv
http://hi.baidu.com/pnalson/blog/item/a8c013fa446b1d17a9d311bb.html
2)ubuntu搭建嵌入式nfs
http://blog.chinaunix.net/u3/93598/showart_1897102.html
文章评论(0条评论)
登录后参与讨论