Linux基础第四天

系统之间文件共享

想要实现两个不同的系统之间实现文件共享,最简单的一种方案就是设置VMware软件的共享文件夹,利用共享文件夹可以实现linux系统和windows系统之间的文件共享,这样就可以实现在windows系统上编辑程序,然后在linux系统下编译程序以及运行程序,尤其是当使用开发板的时候,这种方案非常好用。

点击VMware菜单栏的“虚拟机”,然后点击“设置”,点击“选项”,点击“共享文件夹”

设置主机路径(windows系统的路径,),设置名称(linux系统的文件夹的名称,英文)

然后打开Terminal终端,输入命令cd  /mnt/hgfs/ 然后按下回车,输入ls命令查看

可以看到share文件夹就是设置好的共享文件夹的名称,切换到该目录即可实现共享。

ARM开发板的使用

开发板资源说明

GEC6818 开发平台,核心板采用 10 层板工艺设计,确保稳定可靠,可以批量用于平板电脑,车机,学习机,POS 机,游戏机,行业监控等多种领域。该平台搭载三星 Cortex-A53 系列高性能八核处理器 S5P6818,最高主频高达 1.4GHz,可应用于嵌入式 Linux 和 Android 等操作系统的驱动、应用开发。开发板留有丰富的外设,支持千兆以太网、板载 LVDS 接口、MIPI 接口、USB 接口等。

开发板使用说明

使用5V电源适配器进行供电,通过九针串口数据线或者网线进行数据通信,连接电源线和串口数据线后,拨动电源开关上电开机。

一般而言,嵌入式开发板使用串口来监控后台。可以使用串口线连接开发板和电脑,对于没有串口的笔记本电脑来说,一般还需要一根USB转串口线。

进行硬件接线,安装USB转串口线的CH340驱动,检查驱动是否安装成功,如下所示:

打开secureCRT软件之后,点击“快速连接”,并选择“serial”协议,进行配置,如下:

注意:连接好串口通信线,通过“设备管理器”确定通信端口,该端口是变化的,不同主机是不同的,需要每次连接前确定下。

配置完成后,点击“连接”,如果软件左上角出现绿色对勾,说明端口选择正确,如下:

如果端口正确,则打开开发板的电源开关(往上拨),等待系统启动,此时不要按键盘!

注意:如果启动的过程中卡在某一行不动,原因是开发板启动后会自动运行一个应用程序,该应用程序占用了shell终端,此时只需要按快捷键Ctrl+C就可以强制结束进程,此时可以顺利使用shell终端。

由于开发板板载的是Linux系统,所以可以通过secureCRT调试工具发送shell命令,如:

 

点击secureCRT菜单栏“选项”->“会话选项”->“外观”,修改字体大小和字符编码:

开发板传输文件

注意:开发板的内存空间较小,所以开发板中的Linux系统是经过裁剪的,也就是开发板的Linux系统不具备程序的编辑能力和程序的编译能力,只具有程序的运行能力。

所以大家需要在电脑的Linux系统中去完成程序的编辑和程序的编译,然后把生成的可执行文件传输到开发板,在开发板中运行,这里可以使用多种方案实现文件的传输:shell命令、U盘、网线。

由于开发板进入linux系统之后直接就是超级用户,用户拥有开发板系统的一切权限,所以大家在操作根目录的时候要格外小心,为了避免一些误操作带来系统的奔溃,所以必须在家目录创建一个目录用以存放个人所有的项目文件,比如workspace目录。

挂载内存

由于开发板默认使用的是根文件系统的内存空间,根文件系统的内存空间有限,所以随着时间的推移,GEC6818开发板的内存空间会出现使用耗尽的问题,为了避免出现用户文件无法传输至开发板的Linux系统的问题,此时可以通过把硬盘剩余的空间挂在到根文件系统中进行使用。

基本使用格式

[root@GEC6818 /]# df  -h

开发板中的存储IC是8G大小,分为了若干个扇区,所以用户可以通过命令查看分区情况:

基本使用格式

[root@GEC6818 /]# cat  /proc/partitions

  1. 需要格式化暂未被使用的硬盘分区mmcblk0p7,避免该分区中有一些不相干的文件内容

基本使用格式

[root@GEC6818 /]# mkfs.vfat  /dev/mmcblk0p7

  1. 使用mount命令把该分区挂载到指定目录下,一般建议挂载到用户自己的工作目录中

基本使用格式

[root@GEC6818 /]# mount  -t   vfat  /dev/mmcblk0p7    /workspace

 

检测是否挂载成功,分区挂载指令是单次有效的,所以需要把挂载指令写入自启脚本中

基本使用格式

[root@GEC6818 /]# df  -h

打开开发板配置文件,该文件是开机自动执行,所以利用vi工具在文件末尾追加内容

基本使用格式

[root@GEC6818 /]# vi  /etc/profile

重启开发板使配置文件生效 ,可以使用软重启 输入命令 :reboot 等待重启完成即可

基本使用格式

[root@GEC6818 /]# reboot

指令传输

切换到开发板的个人工作路径,然后在secureCRT的shell终端中输入命令:rx 文件名

 

点击软件菜单栏的“传输”,然后点击“发送Xmodem”,选择windows系统中的文件:

 

等待文件发送完成即可,可以通过进度条来检查文件是否发送完成,具体操作如下所示:

注意:并且rx命令也无法一次传输多个文件,并且rx命令的传输速度较慢,为了解决该问题,可以把rz命令传输到开发板的 /bin 目录下,这样可以使用rz命令一次传输多个文件,如下:

在secureCRT的shell终端中输入命令:rx  rz,按下回车,然后找到rz命令所在文件夹

等待文件传输完成,由于该文件是一个shell命令,所以需要修改权限: chmod 777 rz

 

由于系统shell命令的环境变量设置在/bin目录下,所以需要把rz命令移动到 /bin目录

 

测试rz命令是否正常,在secureCRT的shell终端中输入命令:rz  然后按下回车,如:

注意:可修改secureCRT软件下载文件的路径,固定每次弹出窗口的路径位置,快速定位下载文件,如下所示

网络传输

在开发板和计算机处于同一个局域网的情况下,采用网口的方式来传输文件是最高效的一种方式(即通过网线把主机的文件传输到开发板上),此时可以利用tftp工具实现,tftp的全称是 tiny FTP,此工具专用于文件传输,其所为tiny意指匿名传输,是一种轻量级的FTP工具。

用一个网线的一端连接到开发板的网口,网线的另一端连接到路由器的一端,如下所示:

注意:上图这种方案适合有线连接,也就是计算机通过有线连接到网络,开发板也通过有线连接到网络,此时需要确保开发板和计算机处于同一个网段,如果不在同一个网段,则需要配置开发板的IP地址,如下:

进入开发板的终端,在终端中输入shell命令: ifconfig  来查看当前开发板的网络配置!

 

在终端输入shell命令: ifconfig  eth0  192.168.xxx.xxx,xxx指的是用户拥有的IP地址!

注意:配置的开发板的IP地址是单次有效的,所以需要把该指令写入到开发板的开机自启动的脚本文件,开发板linux系统中开机自启动的脚本文件的路径是 /etc/profile,可以使用vi编辑器打开该脚本,并在脚本文件的末尾写入该指令。

 

配置完成后,重启开发板,然后在终端重新输入指令:  ifconfig  检查开发板的IP地址

 

检查完成后,测试开发板和计算机是否网络处于连通状态,指令:  ping 计算机IP地址

如果开发板和计算机的网络连通,则打开tftpd32.exe应用程序,然后进行配置,如下:

注意:tftp工具不要关闭,只需要最小化即可,另外,如果文件的路径更改,则需要修改tftp的文件路径

配置好tftp软件之后,根据实际情况在开发板的终端中输入下载文件和上传文件的命令

把计算机的文件下载到开发板上(IP地址为服务器IP 也就是计算机的IP地址)

[root@root:~]# tftp  -g 192.168.xxx.xxx  -r   xxx     xxx指的是文件名

把开发板的文件上传到计算机中(IP地址为服务器IP 也就是计算机的IP地址)

[root@root:~]# tftp  -p 192.168.xxx.xxx  -r   xxx     xxx指的是文件名

交叉编译工具安装

交叉编译器就是在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码。由于开发板的硬件平台是ARM,但是开发板并不具备编译程序的能力,所以需要在计算机中的linux系统对程序进行编译。

但是计算机的硬件平台是X86_64,所以并不能使用gcc编译器生成在ARM平台运行的可执行程序,所以就需要在计算机的linux系统中安装交叉编译工具,这样就可以在计算机的linux系统中交叉编译源程序并生成可以在ARM平台运行的可执行文件。


链接: https://pan.baidu.com/s/1IS7UzGABw7fLxGLct5EcWg 提取码: 47ms

把交叉编译工具的压缩包拷贝到设置好的共享文件夹,并从共享文件夹拷贝到家目录!

注意不可以在共享文件夹中对该压缩包进行解压,因为共享文件夹是挂载到linux系统,不属于linux系统。

对压缩包进行解压,输入命令:xz   --decompress  arm-linux-gnueabi-5.4.0.tar.xz 如下:

利用超级用户的权限对归档文件进行释放,并且直接释放到家目录下,操作如下所示:

解压成功后可以看到在/home/xxx目录下就多了一个usr文件夹,此时要配置环境变量

gec@ubuntu:~$ cd   /home/gec/usr/local/arm/5.4.0/usr/bin     //gec是用户名,需要修改!

gec@ubuntu:~$ echo "export PATH=/home/gec/usr/local/arm/5.4.0/usr/bin:$PATH"  >>  ~/.bashrc

gec@ubuntu:~$ source ~/.bashrc                               //让配置文件立即生效

配置好环境变量之后,测试交叉编译工具是否正常,可以输入命令arm-linux-gcc -v查看

如果可以查看交叉编译工具的版本,则编写一个源文件,利用交叉编译工具进行编译:

注意如果利用交叉编译命令arm-linux-gcc对源文件进行编译时遇到以下错误情况,如下图

/usr/local/arm/5.4.0/usr/bin/../libexec/gcc/arm-none-linux-gnueabi/5.4.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory

原因是加载共享库时出错:libmpfr.so.4:无法打开共享对象文件:没有这样的文件或目录

执行以下代码即可:

sudo  ln  -s  /usr/lib/x86_64-linux-gnu/libmpfr.so.6  /usr/lib/x86_64-linux-gnu/libmpfr.so.4

可以看到,使用不同的编译器可以对同一个源文件进行编译,只不过生成的可执行文件的执行平台不同,可执行文件hello_arm只能在ARM平台运行(开发板),可执行文件hello_x86只能在X86平台运行(计算机)。

把生成的在ARM平台运行的可执行文件发送到开发板的个人路径,输入:rx  demo_arm

发送到开发板的可执行文件默认没有权限执行,原因是因为虚拟机的linux系统使用的是普通用户,而开发板中的linux系统是超级用户,所以文件权限不一致,导致可执行文件无法运行,此时只需要修改开发板中的可执行文件的权限为777即可,777是最高权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 核心原理详解:Namespaces 与 Cgroups 如何实现资源隔离与限制

#Docker疑难杂症解决指南# Docker 作为容器化技术的代名词,彻底改变了软件的开发、部署和管理方式。它凭借其轻量、快速、一致性强的特性,成为了现代云原生架构的基石。然而,Docker 容器的神奇之处并非“无中生有”,其背后是 Linux 内核的两大核心技术——Namespaces(命名…

GitHub 趋势日报 (2025年05月14日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1xming521/WeClone🚀从聊天记录创造数字分身的一站式解决方案&…

【Go】从0开始学习Go

文章目录 从0开始学习Go0 与C对比1 代码框架1.1 helloworld式代码示例1.2 主体代码元素(核心三部分)1.3 其他 2 与C/C区别3 有用的小工具4 注意事项 从0开始学习Go 0 与C对比 特性CGo编译型语言需要编译为机器码直接编译为二进制可执行文件静态类型类型…

简单说一下 Webpack分包

最近在看有关webpack分包的知识,搜索了很多资料,感觉这一块很是迷惑,网上的资料讲的也迷迷糊糊,这里简单总结分享一下,也当个笔记。 如有错误请指出。 为什么需要分包 我们知道,webpack的作用&#xff0c…

使用Python和FastAPI构建网站爬虫:Oncolo医疗文章抓取实战

使用Python和FastAPI构建网站爬虫:Oncolo医疗文章抓取实战 前言项目概述技术栈代码分析1. 导入必要的库2. 初始化FastAPI应用3. 定义请求模型4. 核心爬虫功能4.1 URL验证和准备4.2 设置HTTP请求4.3 发送请求和解析HTML4.4 提取文章内容4.5 保存结果和返回数据 5. AP…

YoloV8改进策略:卷积篇|风车卷积|即插即用

文章目录 论文信息论文翻译摘要引言相关研究红外搜索与跟踪检测和分割网络红外搜索与跟踪数据集的损失函数红外搜索与跟踪数据集方法风车形卷积(PConv)基于尺度的动态损失SIRST - UAVB数据集实验实验设置与其他方法的比较多模型上的消融实验结论致谢代码改进方法测试结果总结…

【NLP】36. 从指令微调到人类偏好:构建更有用的大语言模型

从指令微调到人类偏好:构建更有用的大语言模型 大语言模型(LLMs)已经成为现代自然语言处理系统的核心,但单纯依赖传统语言建模目标,往往难以满足实际应用的“人类意图”。从 Instruction Tuning(指令微调&…

基于Transformers与深度学习的微博评论情感分析及AI自动回复系统

前言 这个项目存在cookie没有自动更新问题,后续可能会发出来解决教程,还有微博网页版的话最多看到300条评论,而且回复别人信息的话最多回复15条就要休息5分钟左右才能评论 1. 项目概述 本项目实现了一个微博评论自动化处理系统&#xff0c…

详解 Zephyr RTOS:架构、功能与开发指南

目录 Zephyr RTOS 的核心特性 1. 轻量级和可扩展性 2. 实时性能 3. 多平台支持 4. 安全性 5. 社区和生态系统 Zephyr 的架构 1. 内核 2. 驱动模型 3. 网络栈 4. 文件系统 开发环境和工具链 安装和配置 开发流程 1. 应用程序开发 2. 调试和测试 3. 部署 实际应…

人工智能重塑医疗健康:从辅助诊断到个性化治疗的全方位变革

人工智能正在以前所未有的速度改变着医疗健康领域,从影像诊断到药物研发,从医院管理到远程医疗,AI 技术已渗透到医疗服务的各个环节。本文将深入探讨人工智能如何赋能医疗健康产业,分析其在医学影像、临床决策、药物研发、个性化医…

Linux笔记---内核态与用户态

用户态(User Mode) 权限级别:较低,限制应用程序直接访问硬件或关键系统资源。 适用场景:普通应用程序的运行环境。 限制:无法执行特权指令(如操作I/O端口、修改内存管理单元配置等&#xff09…

Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决

Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决 Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决1. 问题现象与初步分析2 . 原因探究:代理机制对分布式锁生命周期的干扰3. 问题复现伪代码4. 解决方案&#xff1…

SQL:多列匹配(Multiple-column Matching)

目录 基础概念 应用场景详解 1. 多列等值匹配 2. 多列 IN 匹配(集合匹配) 3. 多列 JOIN 匹配(复合键连接) 4. 多列匹配 子查询 5. 多列匹配 EXISTS 6. 多列匹配 UNION(组合数据源) 7. 多列匹配…

基于DeepSeek的智能客服系统实践与创新

引言:AI大模型重塑客户服务新范式 近年来,AI大模型技术的突破性进展正在深刻改变传统客户服务模式。作为国内领先的AI企业,DeepSeek凭借其创新的算法架构(如MoE混合专家模型、动态学习率调度器)和极致的成本效益(仅为同类模型成本的1/20),在自然语言理解、情感分析、多…

SGLang和vllm比有什么优势?

环境: SGLang vllm 问题描述: SGLang和vllm比有什么优势? 解决方案: SGLang和vLLM都是在大语言模型(LLM)推理和部署领域的开源项目或框架,它们各自有不同的设计目标和优势。下面我综合目前…

三、Hive DDL数据库操作

在 Apache Hive 中,数据库 (Database),有时也被称为模式 (Schema),是组织和管理 表及其他对象的基本命名空间单元。熟练掌握数据库层面的数据定义语言 (DDL) 操作,是构建清晰、有序的 Hive 数据仓库的第一步。本篇笔记将详细梳理 …

Redis(2):Redis + Lua为什么可以实现原子性

Redis 作为一款高性能的键值对存储数据库,与 Lua 脚本相结合,为实现原子性操作提供了强大的解决方案,本文将深入探讨 Redis Lua 实现原子性的相关知识 原子性概念的厘清 在探讨 Redis Lua 的原子性之前,我们需要明确原子性的概念…

科普:极简的AI乱战江湖

本文无图。 大模型 ‌2022年2月,‌文生图应用的鼻祖Midjourney上线。 ‌2022年8月,‌开源版的Midjourney,也就是Stable Diffusion上线。 2022年11月30日‌,OpenAI正式发布ChatGPT-3.5。 此后,不断有【大模型】面世&…

CSS- 4.5 css + div 布局 简易网易云音乐 官网布置实例

本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…

【滑动窗口】LeetCode 1004题解 | 最大连续1的个数 Ⅲ

最大连续1的个数 Ⅲ 一、题目链接二、题目三、题目解析四、算法原理解法一:暴力枚举 zero计数器解法二:滑动窗口 五、编写代码六、时空复杂度 一、题目链接 最大连续1的个数 Ⅲ 二、题目 三、题目解析 注意题目中说的是最多k次,在一个数组…