关闭

执行文件下载到开发板运行

1725人阅读 评论(0) 收藏 举报

Hello,World源代码


按上一篇博文搭建嵌入式开发环境的步骤安装了开发环境,在Ubuntux新建一个文件hello.c,把这个文件将放到


/home/lin/mini2440/examples/hello/目录,其源代码如下:



 


点击看大图


 


首先进入测试程序源代码目录


#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盘。


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连接就成功了。



 


点击看大图

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:109126次
    • 积分:1515
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:235篇
    • 译文:0篇
    • 评论:8条
    最新评论