之前我们已经学习了怎么在 ubuntu 和 win 上互传文件,那么怎么把 ubuntu 或 win 上的程序拷贝到开发板呢,这里给大家介绍第一种方法,使用 U 盘或者 TF 卡来完成,如果大家使用的是 U 盘,那么大家直接把 U 盘插到电脑上就可以了,如果大家使用的是 TF 卡,那么大家要把 TF 卡连接到读卡器上,然后把读卡器插到电脑,其他的操作方法都是一样的,我就不给大家做区分了,我现在把 U 盘插到电脑上。
步骤一:保证 U 盘或者 TF 卡的格式为 FAT32 格式,TF 卡要用读卡器和电脑相连。
我们要检查 U 盘或者 TF 卡是不是 FAT32 格式的,打开我的电脑,然后找到识别出来的 U 盘或 TF 卡的盘符,点击右键,选择属性,我们可以看到文件系统 FAT32 ,就是文件系统的类型,这里我们要使用 FAT32 格式,不能使用其他格式
如果大家的格式不是这个,可以格式化一下,选中 U 盘或者 TF 卡,点击右键,选择格式化,文件系统 这里选择默认的 FAT32 格式,然后点击开始。
我们格式化之前要保证 U 盘或 TF 卡里面没有重要的东西,因为格式化完了,里面的东西就全部没有了, 如果大家之前的 U 盘或者 TF 卡分成了好几个区,就要先把它变成一个区然后在格式化。
我们 TF 卡使用读卡器和电脑相连,然后我们虚拟机 VM 软件识别出来的就是 U 盘而不是 TF 卡,如果 你直接插 TF 卡,那么虚拟机软件可能会识别不出来,所以要用读卡器和电脑相连,把 win 上的文件或程序拷贝到 TF 卡。
步骤二:把 U 盘或者 TF 卡连接到 VM 软件上,然后使用 df 命令确定挂载的路径。
我们要怎么把 ubuntu 上的文件拷贝到 U 盘或者 TF 卡呢。
第一步,我们要把 U 盘或者 TF 卡连接到虚拟机 VM,我们可以点击 VM 里虚拟机这个选项,选择可移 动设备,然后选择 Unknown Mass Storage ,连接(断开与主机的连接),()里是断开与主机的连接,这 就是说我们选上这个选项之后,他会把我们的 U 盘或者 TF 卡与 win 电脑连接断开,然后把它们连接到 ubuntu 上,我们点一下,连接成功以后,我们 ubuntu 会弹出来 U 盘或者 TF 卡里面的存储的界面。
弹出这个界面就说明我们已经连接成功了,点击左上角的 x 关掉这个界面,把 ubuntu 里面的程序或者 文件拷贝到 TF 卡,我们就可以使用 df 命令查看我们 U 盘或者 TF 卡挂载到了 Ubuntu 哪个目录上,我先把 U 盘断开,我们点击可移动设备,然后断开连接。如下图所示。
现在我的 win 电脑已经识别了 U 盘,说明他已经从虚拟机里面断开了,然后我输入 df 命令。如下图 所示。接着我再把我的 U 盘连接到我的虚拟机软件里,连接成功之后,我再输入 df 命令。如下图所示。
我们对比下这两个 df 命令的输出结果,我们第二次输入 df 命令 ,这里多了个 /dev/sda1 的设备, 那么这个设备就是 U 盘或者 TF 卡,我们第一次没有连接 U 盘或者 TF 卡的时候是没有这个设备的。
设备挂载到了 mounted on 这个挂载点,它挂载到了这个路径上,我们直接可以使用 cd 命令进到这个路径。然后我们 ls 看下,
这个路径下面就是我们的 U 盘或者 TF 卡里面的文件列表,我们的内容都可以在这个路径下看到,我们 可以来试一下,我现在再打开一个控制台,我们还是使用之前的 hello.c 作为例子,我们使用交叉编译器来 编译这个 .c 文件,因为这个可执行文件是要在开发板运行的,所以我们这里要使用交叉编译器,输入export PATH=/usr/local/arm64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH
aarch64-linux-gnu-gcc hello.c -o hello
file hello 可以看到是在 arm 运行的,
然后我们把这个可执行文件拷贝到 U 盘或者 TF 卡上,直接使用 cp 命令,如下图所示。
这就是我们的路径,把它复制过来,然后我们再来看下,拷贝成功,如下图所示。
我们已经把 hello 这个可执行文件拷贝到我们的 U 盘上了,然后我们断开连接,我们把它连接 win 电脑上,我们打开看一下,这里面就多了个 hello 的可执行程序。
步骤三:把 U 盘或 TF 卡连接到开发板,TF 卡使用读卡器和开发板连接
接着就可以把 U 盘或者 TF 卡拔下来连接到开发板上了。我们先给开发板上电,连接好超级终端,这里作者已经连接好了,然后我们启动开发板,现在把 U 盘从电脑上拔下来,我们等待系统启动成功。系统启动成功之后我们就可以把 U 盘或者 TF 卡连接到 TF 上了,
作者开发板的启动是最小 Linux 文件系统,我现在把 U 盘插到开发板上,插好了之后我们开发板会弹出来一些打印信息,这个是正常的。我们可以看到识别出的是 sda(注意,这里大家要以实际情况为准,有可能识别出来的是 sda1,sdb 等等)然后我们用
我们要怎么访问我们的 U 盘或者 TF 卡呢,我们的 qt 系统和最小系统是支持热插拔的在上面的信息中, 可以看到该设备被挂载到了 /media/usb0/目录下。我们进入/media/usb0/目录下,就可以看到我们 U 盘或 者 TF 卡的内容,我们就可以看到 hello 这个可执行文件了,
我们运行下./hello,这样他就打印了 hello world! 如下图所示。
命令解析:
挂载我们使用的是 mount 命令 命令格式:mount 设备名称 挂载点 , 如设备的名称是 dev 下边的 sda(一定要以识别出来的为准) ,我们把它挂载到 mnt 路径,也就是 我们的挂载点是 mnt mount /dev/sda /mnt 我们要怎么卸载呢,卸载使用的是 umount 命令, 格式:umount 挂载点 我现在卸载掉 U 盘挂载的 mnt 这个挂载点,我们直接输入 umount ,后边跟我们的挂载点就可以了,
我们来总结和扩展下,使用 U 盘或者 TF 卡拷贝文件到开发板上,我们一般是在开发板没有预留出网口等其他接口的时候,我们使用这个办法来拷贝,因为比较麻烦。
第一步要保证 U 盘或者 TF 卡的格式为 FAT32 格式,我们把文件或者是程序拷贝到 U 盘或者 TF 卡之后, 连接到开发板上,连接好之后我们要先确定我们的开发板上有没有自动挂载,使用 df 命令来查看,如果他 是自动挂载的,我们直接访问挂载的路径就可以了,如果不是自动挂载的(如本章的实验不是自动挂载的),我们要使用 mount 命令手动挂载,使用 mount 命令我们要确定设备的名称,确定设备的名称我们可以通过打印信息来确定,如果没有打印信息,我们可以通过查看分区信息命令来确定(如 cat /proc/partitions),然后我们手动挂载上之后就可以直接访问我们的挂载点也就是访问我们的 U 盘或者 TF 卡了,这个思路并不难,大家可以自己体验下。
原作者:讯为电子