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

转载 2015年07月08日 17:09:19

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



 


点击看大图

rz命令与sx等命令——串口终端下载文件到目标板

rz命令与sx等命令——串口终端下载文件到目标板 标签: 终端makefile编译器windowslinux测试 2011-08-18 15:28 1956人阅读 评论(0...
  • ASKLW
  • ASKLW
  • 2016年09月28日 16:01
  • 568

PC与开发板之间最简单快速的文件传输方式

通常PC与开发板之间文件传输有这样的几种方式: PC上架构NFS服务器,板子上通过nfs指令挂载PC目录至开发板目录,然后使用cp指令从PC拷贝文件至开发板FLASH PC上架构ftp或tft...
  • Findyo
  • Findyo
  • 2014年12月26日 20:11
  • 1178

如何将QT程序移植到开发板上运行

1.        首先,要将QT环境设置成在ARM下运行的环境,这样编译出来的可执行文件才能在开发板下运行。 要注意你的QT是不是ARM版本的,可用“qmake -v”命令来查看 2.环...
  • u013539952
  • u013539952
  • 2016年03月16日 10:27
  • 4226

开发板上查看U盘文件

1. 插入U盘,查看串口打印信息 2. 挂载U盘到本地虚拟文件系统在打印信息中告诉了我们设备的一些信息,比如说:设备名称 sda:sda1,设备是否可读写等一些状态 输入命令: mount /d...
  • u012365926
  • u012365926
  • 2016年03月08日 19:00
  • 876

可执行文件从装载到运行的全过程描述

我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,(关于源代码到可执行文件的介绍见我的另一篇博客:程序从代码到可执行文件的过程简述)那么当我们在cmd窗口敲出指令$test argv1 arg...
  • Virtual_Func
  • Virtual_Func
  • 2015年09月21日 21:53
  • 922

ARM开发板挂载 U盘 和 SD 卡

开发板挂载U盘 1. 使用读卡器,插入SD卡后,将读卡器插入开发板 2. 查看U盘信息 # fdisk -l 显示内容 Disk /dev/sda: 16.0 GB, 1600...
  • dearwind153
  • dearwind153
  • 2016年05月29日 14:23
  • 3273

在GT2440开发板上运行一个简单的c程序

概述: 刚进入嵌入式开发的学习,处于摸索阶段,故进行一些记录。本文实现在GT2440开发板上运行一个简单的hello程序,更重要的是加深了对嵌入式交叉编译过程的理解:以前弄不明白类似显示hello的...
  • ck2010lang
  • ck2010lang
  • 2015年03月09日 22:26
  • 1663

飞凌FL-2440开发板上实现模拟U盘

飞凌FL-2440开发板上实现模拟U盘 本专题主要讲解如何在飞凌嵌入式ARM开发板上如何实现模拟U盘的功能。通过修改内核配置和文件系统相关内容,我们在FL2440上实现了模拟U盘功能,通过模拟U盘,...
  • ztl0013
  • ztl0013
  • 2015年03月30日 08:33
  • 918

向U盘拷贝文件,总是提示对于目标系统,文件过大??

有时候,复制比较大的文件的时候会提示“对于目标文件系统,文件XXX过大”,普及下知识,FAT32的文件系统不支持复制大于4g的单个文件,而NTFS则是支持大文件!好,我们要做的就是转换格式,数据会不会...
  • a2459956664
  • a2459956664
  • 2016年01月06日 16:40
  • 15174

ubuntu挂载到开发板某个目录

由于嵌入式Linux开发大多数使用的是交叉编译环境,难免很频繁的将文件在开发板和PC环境( 如ubuntu )之间传递,最方便的方法为挂载NFS。 网络文件系统NFS( Networ...
  • lianghe_work
  • lianghe_work
  • 2015年08月07日 15:45
  • 1182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:执行文件下载到开发板运行
举报原因:
原因补充:

(最多只允许输入30个字)