http://blog.ednchina.com/tengjingshu/376105/message.aspx

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

512MU盘插到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 aptget 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不带xmodemzmodem之类的协议,所以需要安装lrzsz这个软件,否则就会遇到传输不了文件或者timeout之类的错误。

 sudo apt-get install lszsz

下载和解压lrzsz后,进入目录执行 ./configure --prefix=/usr/local/lrzsz ,然后makemake 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)minicomckermit两个超级终端

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