当前位置: 首页 > news >正文

Linux入门篇学习——借助 U 盘或 TF 卡拷贝程序到开发板上

借助 U 盘或 TF 卡拷贝程序到开发板上

        我们已经学习了怎么在 ubuntu windows 上互传文件,那么怎么把 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 卡,那么虚拟机软件可能会识别不出来,所以要用读卡器和电脑相连,把 windows 上的文件或程序拷贝到 TF 卡。
        步骤二U 盘或者 TF 卡连接到 VMware 软件上,然后使用 df 命令确定挂载的路径。
        我们要怎么把 ubuntu 上的文件拷贝到 U 盘或者 TF 卡呢。
        第一步,我们要把 U 盘或者 TF 卡连接到虚拟机 VM,我们可以点击 VM 里“虚拟机”这个选项,选择“可移动设备”,然后选择“Unknown Mass Storage ”,连接(断开与主机的连接),()里是断开与机的连接,这就是说我们选上这个选项之后,他会把我们的 U 盘或者 TF 卡与 windows 电脑连接断开,然后把它们连接到 ubuntu 上,我们点一下,连接成功以后,ubuntu 会弹出来 U 盘或者 TF 卡里面的存储的界面。弹出这个界面就说明我们已经连接成功了,如下图所示。点击左上角的 x 关掉这个界面
        把ubuntu里面的程序或者文件拷贝到TF卡,我们就可以使用df命令查看U盘或者TF卡挂载到了Ubuntu 哪个目录上,我先把 U 盘断开,点击“可移动设备”,然后断开连接。如下图所示。
        现在我的 windows 电脑已经识别了 U 盘,说明他已经从虚拟机里面断开了,然后我输入 df 命令。如图所示。接着我再把 U 盘连接到虚拟机软件里,连接成功之后,再输入 df 命令。如图 29.4 所示。
        我们对比下这两个 df 命令的输出结果,我们第二次输入 df 命令 ,这里多了个 /dev/sda1 的设备,那么这个设备就是 U 盘或者 TF 卡,我们第一次没有连接 U 盘或者 TF 卡的时候是没有这个设备的,如下图所示。
        设备挂载到了 mounted on 这个挂载点,它挂载到了这个路径上,我们直接可以使用 “cd “命令进到这个路径。如下图所示。
        这个路径下面就是我们的 U 盘或者 TF 卡里面的文件列表,我们的内容都可以在这个路径下看到,我们可以来试一下,我现在再打开一个控制台,我们还是使用之前的 hello.c 作为例子,我们使用交叉编译器来编译这个 .c 文件,因为这个可执行文件是要在开发板运行的,所以我们这里要使用交叉编译器,输入
        arm-linux-gnueabihf-gcc hello.c -o hello                                                                                    
        可以看到是在 arm 运行的,如下图所示。
        然后我们把这个可执行文件拷贝到 U 盘或者 TF 卡上,直接使用 cp 命令,如下图所示。
        这就是我们的路径,把它复制过来,然后我们再来看下,拷贝成功,如下图所示。
        我们已经把 hello 这个可执行文件拷贝到我们的 U 盘上了,然后我们断开连接,我们把它连接 win 电脑上,我们打开看一下,这里面就多了个 hello 的可执行程序。如下图所示。
        步骤三:把 U 盘或 TF 卡连接到开发板,TF 卡使用读卡器和开发板连接
        接着就可以把 U 盘或者 TF 卡拔下来连接到开发板上了。我们先给开发板上电,连接好超级终端,这里作者已经连接好了,然后我们启动开发板,现在把 U 盘从电脑上拔下来,我们等待系统启动成功。系统启动成功之后我们就可以把 U 盘或者 TF 卡连接到 TF 上了,这里大家使用 TF 卡的话,大家要用读卡器连接到我们的开发板上。如下图所示。
        
        作者开发板的启动是 yocto 文件系统,我现在把 U 盘插到开发板上,插好了之后我们开发板会弹出来一些打印信息,这个是正常的。如下图所示。
        作者是连接到这个 USB 口上,搭建连接到下边的 USB 口也是没有问题的,如下图所示。
        
        我们要怎么访问我们的 U 盘或者 TF 卡呢。
        第一步我们要先知道,U 盘或者 TF 卡挂载到了哪个路径上,就跟我们在 ubuntu 上使用 df 命令是一样的,我们可以在开发板上同样敲入 df 命令。如下图所示。
        这里面的根目录下的 sdb1 就是我们 U 盘或者 TF 卡的设备,它挂载到了 /run/media/sdb1 这个路径上大家也可以把我们的U盘或者 TF卡拔下来对比下,然后我们进到这个路径,直接使用 cd /run/media/sdb1 我们就可以看到 hello 这个可执行文件了,如下图所示。
        我们可以直接使用 cp 命令把它拷贝到开发板 opt 目录下,输入 cp hello /opt 然后我们进到根目录的opt 目录下,输入 cd /opt 我们可以运行下 hello 这个可执行文件,我们先给他改下权限,改成 777 输入chmod 777 hello ,我们运行下./hello,这样他就打印了 hello world! 如下图所示。
        因为我这里给开发板烧写的是 yocto 的文件系统,yocto 文件系统是自动挂载 U 盘和 TF 卡的。什么是自动挂载呢,自动挂载就是不用再手动使用命令把我们的 U 盘或者是 TF 卡挂载到我们的挂载点上,即自动帮你完成挂载到 /run/media/sdb1 这个路径上,但是有的文件系统不会自动帮你挂载,比如说 busyboxy 、buildroot 默认是不会帮你自动挂载的,我们就可以手动先来挂载下,我把开发板的文件系统烧写成 busybox文件系统,烧写过程就不给大家演示了,然后我们再来看下,我们要怎么使用命令来挂载。我现在给开发板烧写好了 busybox 文件系统,然后我插上 U 盘,插上 U 盘之后,他会弹出来一些打印信息,我们可以通过这个打印信息就可以知道识别出来的是 dev 下边的哪个设备,他这里识别的是 sdb1 。如下图所示。
        然后我使用 df 命令,下面是没有自动挂载我们 dev 下边 sdb1 设备的,如下图所示。
        这时候我们就要使用手动挂载,手动挂载我们使用的是 mount 命令,我们输入这个命令 ,
        mount 设备名称 挂载点 ,
        设备的名称是 dev 下边的 sdb1
        我们把它挂载到 mnt 路径,也就是我们的挂载点是 mnt ,如下图所示。
        mount /dev/sdb1 /mnt                                                                                                               
        mnt 的作用我们在之前 fsh 规范的时候已经讲过了,然后我们再使用 df 命令,我们再来查看下,这里就多了一个设备,如下图所示。
        然后它挂载到了 mnt 上,然后我们进到 mnt 这个命令,ls 看一下,这里面就有 hello 这个可执行程序,如下图所示。
        所以说这个目录下就是我们 U 盘的目录,我们可以把 hello 拷贝到开发板上,我们把它拷贝到根目录下,然后我们来运行下也是没有问题的,如下图所示。
        有的文件系统是不会给你弹出来打印信息的,这时候我们要怎么确定他识别出来的是 dev 下边哪个设备呢,比如说 ubuntu 你插上 U 盘之后,他是没有打印信息的,这时候就不知道是 sda1 还是 sdb1 ,我们可以使用 cat 命令查看下准确信息,我们直接使用这个命令,他下边的 sdb1 就是我们的 U 盘,如下图所示。
        我们可以拔掉 U 盘,然后我们再来查看下,他就没有这个 sdb1 了,所以说这个分区信息就是 U 盘的,如下图所示。

        然后我们在插上他。我们这里 TF 卡连接到开发板也使用读卡器连接的
        连接好了之后,第一步先使用 df 命令查看下我们当前的文件系统是不是自动挂载的 U 盘或者 TF 卡,如果不是自动挂载的,我们要用 mount 命令来挂载一下。如下图所示。


mount 命令格式 :
mount 设备名称 挂载点
使用 mount 命令我们要先确定我们的设备名称,这个设备名称就是 dev 下边的 sdb1 ,mnt 是挂载点        
mount /dev/sdb1 /mnt                                                                                                                        


        设备名称的确定我们可以通过打印信息来查看,如果插上没有打印信息,我们可以使用 cat 命令来查看下分区信息,输入   cat /proc/partitions   

        如果我们的 U 盘或者 TF 卡时自动挂载的,我们接下来直接访问就可以了。
        我们要怎么卸载呢,我们使用的是 umount 命令,
        卸载命令:umount 命令
        格式:umount 挂载点
        我现在卸载掉 U 盘挂载的 mnt 这个挂载点,我们直接输入 umount ,后边跟我们的挂载点就可以了,我们输入 umount /mnt 
        卸载后,我们来查看下,这里就没有我们 dev/sda1 挂载的 mnt 这个挂载点了,如下图所示。
TF 卡直接和卡座连接
        开发板上也预留了 TF 卡座子给大家,我们可以不使用读卡器和开发板连接,直接把 TF 插到我们的开发板 TF 卡座子上,如下图所示。刚刚我已经把 U 盘拔下来了,作者现在把 TF 卡插到这个座子,
        然后我们看下,我们在超级终端就打印出了我们插上 TF 卡之后的打印信息。如下图所示。
        我们按照刚刚学到的,我们第一步要判断下他有没有给我们自动挂载,使用 df 命令,显然他这里是没有给我们自动挂载的。如下图所示。
        我就要使用 mount 命令手动挂载一下,我先要确定我设备的名称,设备的名称我这里可以通过打印信息来确定,他这里打印的是 mmcblk0:p1 ,如下图所示。
        我们使用 mount /dev/mmcblk0p1 /mnt 然后在使用 df 命令来查看下,我们 TF 卡就挂载到了 mnt 这个挂载点,我们使用 cd /mnt 直接访问就可以了,ls 看到 TF 卡里的信息,这个是 TF 卡自带的一个文件和 hello文件,如下图所示。
        使用 U 盘或者 TF 卡拷贝文件到开发板上,我们一般是在开发板没有预留出网口等其他接口的时候,我们使用这个办法来拷贝,因为比较麻烦。
        我们来总结下,第一步要保证 U 盘或者 TF 卡的格式为 FAT32 格式,我们把文件或者是程序拷贝到 U盘或者 TF 卡之后,连接到开发板上,连接好之后我们要先确定我们的开发板上有没有自动挂载,使用 df命令来查看,如果他是自动挂载的,我们直接访问挂载的路径就可以了,如果不是自动挂载的,我们要使用 mount 命令手动挂载,使用 mount 命令我们要确定设备的名称,确定设备的名称我们可以通过打印信息来确定,如果没有打印信息,我们可以通过查看分区信息命令来确定,然后我们手动挂载上之后就可以直接访问我们的挂载点也就是访问我们的 U 盘或者 TF 卡了,这个思路并不难,大家可以自己体验下。​​​​​​​
http://www.dtcms.com/a/285912.html

相关文章:

  • Vue3 从 0 到 ∞:Composition API 的底层哲学、渲染管线与生态演进全景
  • *SFT深度实践指南:从数据构建到模型部署的全流程解析
  • 算法提升之字符串练习-03(KMP)
  • docker,防火墙关闭后,未重启docker,导致端口映射失败
  • 【51】MFC入门到精通——MFC串口助手(一)---初级版(串口设置、初始化、打开/关闭、状态显示),附源码
  • Java异步日志系统性能优化实践指南:基于Log4j2异步Appender与Disruptor
  • 鸿蒙实现一次上传多张图片
  • 物流3D工业相机:解锁自动化物流新纪元
  • 第三章-提示词-初级:一文带你入门提示词工程,开启AI高效交互之旅(11/36)
  • [Python] -实用技巧8-解锁 Python 中的 lambda 表达式用法
  • GISBox切片器技术解析:RVT模型到3DTiles瓦片的高性能转换方案
  • 内存数据库的持久化与恢复策略:数据安全性与重启速度的平衡点
  • QT窗口(3)-状态栏
  • 菱形继承 虚继承
  • vue-router
  • 前端篇——番外篇 Bootstrap框架
  • 【密码学】1. 引言
  • c++继承详解
  • 【物联网】基于树莓派的物联网开发【12】——树莓派硬件GPIO模块原理知识
  • 模式结构-微服务架构设计模式
  • 【PTA数据结构 | C语言版】二叉堆的快速建堆操作
  • 一文讲清楚React性能优化
  • mysql 性能优化之Explain讲解
  • RHEL/CentOS 的系统安装程序界面介绍
  • 周志华《机器学习导论》第9章 聚类
  • 分布式面试点
  • 算法-动态规划
  • MyBatis缓存实战指南:一级与二级缓存的深度解析与性能优化
  • 分布式短剧平台核心技术解析:CDN优化、AI推荐与多语言支付集成
  • 在 ASP.NET Core 和 JavaScript 中配置 WebSocket