找回密码
 立即注册
收起左侧

第6篇 下载文件到开发板

3
回复
15256
查看
[复制链接]
累计签到:181 天
连续签到:1 天
来源: Qt教程 2015-4-28 22:44:52 显示全部楼层 |阅读模式
第6篇 下载文件到开发板



版权声明

该文章原创于Qter开源社区www.qter.org),作者hzzhou,转载请注明出处!

导语


        上一篇我们编译出了适用于天嵌的E9开发板的Qt程序,但是应该用什么办法把编译好的库放到开发板上呢?具体应该怎么操作呢?本章就重点介绍一下这方面的知识,在讲解的同时,我们会把上一节编译好的库文件和可执行程序拷贝到开发板上。(这里默认读者已经使用终端打开了minicom,并且连接好并启动了开发板)
一、常用方法简介
       把文件下载到开发板常用的方法有三种:
1、  通过U盘拷贝
2、  通过TFTP服务网络传输
3、  通过串口传输
       下面先把这三种方法的优缺点介绍一下,以便于读者可以在不同的情况下选择不同的方法来操作。
       第一种方法:通过U盘拷贝,优点是速度快,可以拷贝较大的文件,缺点是操作繁琐。
       第二种方法:通过TFTP服务网络传输,优点是速度较快,可以传输较大的文件,配置好以后,操作起来比较简单。缺点是需要网络支持,特别是E9开发板上没有WiFi功能,需要使用网线,而且PC上需要开启TFTP服务器。
       第三种方法:通过串口传输,优点是操作方便,只要连接了调试串口就可以进行下载,缺点是速度太慢,只有10K左右。一般用来传输小文件,当文件比较大的时候,需要的时间会很长。
       介绍完优缺点,读者可以跟据实际情况选择不同的方法,而笔者经常使用的第二和第三种方法。下面就详细的介绍一下每种方法的操作过程。因为我们使用了方法一和方法二来拷贝上一节生成的文件,所以这两种方法读者一定要按照教程做一遍,这样才能继续后面的教程。
      
二、通过U盘拷贝(方法一)
       要将Qt部署到开发板,就是要把编译生成的库和opengl的库放到开发板上为Qt应用程序的运行提供支持。需要把/usr/local/qte-arm/目录下的libpluginsqml这三个目录的内容放到开发板的对应目录,把/opt/tqexlib/usr/lib/目录下的文件放到开发板的/usr/lib目录下。因为这些库文件较大,所以使用U盘拷贝的方式来实现。
      
       需要准备一个U盘,首先把需要拷贝到开发板上的文件拷贝到U盘上,这一点相信大家都会,如果熟悉命令行操作可以使用命令完成,因为这个不是重点,这里拷贝压缩等工作直接在图形界面来完成。
      
1、创建压缩文件
       首先在桌面上新建一个文件夹qte-arm,然后把/usr/local/qte-arm/目录下的libpluginsqml这三个目录复制到该文件夹中,如下图所示。
       然后在该文件上右击,选择“压缩”菜单,将该文件夹压缩为qte-arm.tar.gz。同理,新建一个lib文件夹,然后将/opt/tqexlib/usr/lib/目录下的所有文件复制到该文件夹里面,并创建lib.tar.gz压缩包,完成后如下图所示。
2、使用U盘拷贝文件
       下面需要将这两个压缩包放到U盘上,插入并打开U盘,然后在里面创建一个qt文件夹,将lib.tar.gzqte-arm.tar.gz两个压缩包复制到qt文件夹中。如下图所示。
       接下来,把U盘从电脑上卸载,然后插到E9开发板的USB口上,这时minicom会输出如下信息:
       可以看到,系统为它分配了sda这个设备。接下来要使用mount命令对U盘进行挂载:
       ls命令就可以看到我们需要的qte-arm.tar.gz文件了。接下来就简单了,无论你想对它做什么,使用相应的命令去操作就可以了。这里我们把它解压到/usr/local/目录下,这是前面移植Qt的时候指定的它的存放目录。使用命令进行解压缩:
       然后使用ls命令查看是否解压缩成功。这里可以看到在local目录中已经有qte-arm文件夹了,表明已经解压缩成功。如下图所示。
       同样的,下面使用命令将lib.tar.gz中的文件解压缩到/usr/lib目录中:
       然后使用ls命令查看结果:
然后使用命令:
umount /mnt
       卸载U盘。
       然后再使用命令:
ls /mnt
       查看/mnt目录下已经没有内容了,说明U盘卸载成功了。如下图所示。
       这时候就可以把U盘从开发板上拔下来了。整个拷贝过程就完成了。
三、使用TFTP通过网络传输(方法二)
      
1、设置网络环境
       这里需要使用网线连接E9开发板,插入网线后在minicom中使用ifconfig命令查看一下开发板的网络状态,如下图所示。
      
       可以看到开发板的IP地址为192.168.1.6。使用Ctrl+Alt+T快捷键重启一个终端,在PC端同样使用ifconfig命令查看一下PC机的IP地址,如下图所示。
      
       现在没有可用的IP地址,我们使用ifconfig命令设置IP地址为192.168.1.100,注意,要和开发板的IP地址在一个网段内。如下图所示。
       现在再次查看IP地址:
       然后从开发板ping一下192.168.1.100
       可以看到网络是通的,按下Ctrl+C键结束ping命令。
2、安装TFTP服务器
       接下来需要给PC机安装和配置TFTP服务器,使用命令:
sudo atp-getinstall tftpd-hpa
      
       安装好tftpd-hpa后,需要使用编辑器(例如vi等)修改它的配置文件/etc/default/tftpd-hpa,以指定需要下载到开发板的文件应该放到哪个目录下。如下图所示。
       笔者这里指定的是/tmp目录,也就是说,需要下载到开发板的文件要先拷贝到PC机的/tmp目录下。接下来重新启动TFTP服务器,如下图所示。
       还可以使用sudo service tftpd-hpa stop命令来停止TFTP服务器,使用sudo service tftpd-hpa start命令可以启动TFTP服务器。需要注意的是这些命令都需要使用root权限操作。以后每次重启电脑后要使用tftp服务都需要执行restart命令。
3、使用TFTP传输文件
       接下来就可以在开发板上使用tftp命令来下载文件了,这里以第4篇中生成的myarmtest可执行文件为例, 先将这个文件移动到/tmp目录中,如下图所示。
      
       minicom中使用cd命令跳转到开发板的home目录,然后执行tftp命令,这样可以将文件下载到home目录中。如下图所示。
       可以看到myarmtest这个文件已下载完成了,但这里还有一个问题,使用tftp命令下载的文件会默认把文件的权限设置为不可运行的,如果下载的是个可执行程序,那么需要使用chmod命令修改文件权限。如下图所示。
       这样修改以后,文件就可以执行了。到这里我们成功使用TFTP服务,通过网络把文件下载到了开发板上。
四、通过串口下载程序到开发板(方法三)
      
       这里使用my.txt文件为例进行讲解,大家可以提前创建该文件。先在开发板上执行命令:
lrz  –y
       (这里默认读者的开发板上已经有lrz命令,如果没有,可以到qter网站上下载,然后通过前面讲到的方式下载的开发板的/bin目录下就可以使用lrz命令了),如下图所示。
       这时候,开发板已经准备好接收文件了。然后按下CTRL+A组合键再按下S键。会有一个小窗口,如下图所示。
       一般使用zmodem方式进行文件传输,按上下键可以进行选择,然后按下回车键。这时候会让你选择要发送的文件。
       可以看到,当前目录为我的home目录,而我需要发送的文件存放在/tmp目录下,这时可以在[..]处双击空格键跳转到上一目录,然后通过上下方向键定位到/tmp目录,也可以通过左右键选择到[Goto]选项,然后输入目标路径。比如我们使用第二种方法,然后输入需要打开的目录,如下图所示。
    然后回车,就会打开输入的目录,这时可以通过上下键来移动光标,通过空格键可取消选择文件。也可以选择多个文件,可以把多个文件依次下载到开发板。
       这里选择my.txt文件,按下回车键就开始下载了。
       等下载完成后,按任意键就可以回到开发板的shell了。可以使用ls命令查看文件已经成功下载了。

       到这里已经把三种方式介绍完了,读者可以根据实际情况和个人喜好来选择一种或多种方式使用。我们使用U盘的方式将编译好的Qt库文件拷贝到了开发板上,使用网络的方式将编译好的Qt程序的可执行文件下载到了开发板上,但是现在该文件还不能直接运行,这个我们放到下一篇中来实现。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2015-6-18 11:12:22 显示全部楼层
你好,请问/usr/local/qte-arm/ 和 /opt/tqexlib/usr/lib/目录分别对应着是装什么的目录。/usr/local/qte-arm/我知道是编译的ARM版Qt目录,但是不知道/opt/tqexlib/usr/lib/是什么目录??
回复 支持 0 反对 1

使用道具 举报

累计签到:181 天
连续签到:1 天
2015-7-14 10:42:13 显示全部楼层
linhuikui 发表于 2015-6-18 11:12
你好,请问/usr/local/qte-arm/ 和 /opt/tqexlib/usr/lib/目录分别对应着是装什么的目录。/usr/local/qte-a ...

这个是存放一些第三方库的目录。并不是绝对的,可以自己指定。
回复 支持 反对

使用道具 举报

累计签到:17 天
连续签到:1 天
2016-4-6 10:36:03 显示全部楼层
开发板上的是UBUNTUN系统,里面的文件系统已经有/usr/lib这个目录,再把我们压缩包解压到这个目录?会不会覆盖一些文件?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了