欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Linux学习笔记(应用篇二)

Linux学习笔记(应用篇二)

2025/5/19 8:11:06 来源:https://blog.csdn.net/2301_76423513/article/details/146489598  浏览:    关键词:Linux学习笔记(应用篇二)

基于I.MX6ULL.MINI开发板

  • 开发板与电脑相互通信
  • 电脑与开发板互传文件

开发板与电脑相互通信

用网线将电脑与开发板连接
本人使用的是Ubuntu系统,不是虚拟机

一般来说刚开始电脑和开发板是ping不通的

首先查看电脑的 IP

Win+R,cmd调出终端

我使用的是手机热点无线局域网适配器的IP属于公网,不能用来与开发板通信

以太网适配器的IP是网口的IP,使用网线与开发板进行通信,现在默认是自动分配的地址,需要手动设置

在这里插入图片描述

打开控制面板——>网络和Internet——>网络和共享中心——>更改适配器设置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

找到 以太网——>右击——>属性

在这里插入图片描述

双击Internet协议版本4

在这里插入图片描述

选择使用下面的IP地址
手动配置IP地址、掩码和网关
一般是192.168.1.xxx
跟我一样也可以
然后确定

在这里插入图片描述

再次在终端查看IP,可以看到以太网的已经改为我们设置的

在这里插入图片描述

在开发板这边也要改
首先要确定开发板上网口对应的的网络接口是哪个
先用命令ifconfig查看
我的是eth0
如果不确定自己的是哪个可以把网线拔了再插回去,会打印信息

在这里插入图片描述

查看开发板的IP是169.254.26.65,与电脑网口不在同一个网段,无法通信,要修改开发板的静态IP

请添加图片描述

打开开发板的网络配置文件

vi /etc/network/interfaces

将eth0设置为静态获取IP
同样修改IP地址、掩码和网关
除了IP地址最后一位数字和电脑的不同
网关和掩码与电脑都要一致
我这里IP地址设置成了192.168.1.100
然后保存退出

在这里插入图片描述

重启网络服务

sudo /etc/init.d/networking restart

再次查看开发板IP,已经修改成自己设置的

在这里插入图片描述

虽然现在设置是可以实现互ping了,但是我遇到的问题是每次重启开发板后,要手动重启网络服务开发板的IP地址才会改为我设置的静态IP

要修改rc.local文件

sudo nano /etc/rc.local

在文本末尾,exit 0前加上sudo /etc/init.d/networking restart,保存退出,然后每次重启之后就会自动设置成我们设置的静态IP了

在这里插入图片描述

在这里插入图片描述

现在两边互ping一下

注意要把防火墙关了,不然开发板ping不通电脑

开发板ping电脑

在这里插入图片描述

电脑ping开发板
在这里插入图片描述

两边都能互ping成功

电脑与开发板互传文件

使用 scp (Secure Copy Protocol)

scp 是一种通过 SSH 安全地复制文件的工具,适用于 Linux 系统之间的文件传输。

首先要确认开发板是否安装并配置ssh服务

ps aux | grep sshd

如果开启了,会打印如下信息

在这里插入图片描述

从 Ubuntu 传输文件到开发板

scp /path/to/local/file username@remote_ip:/path/to/remote/directory

从开发板传输文件到 Ubuntu

scp username@remote_ip:/path/to/remote/file /path/to/local/directory

示例

scp /home/user/file.txt root@192.168.1.100:/home/root/ Ubuntu到开发板
scp root@192.168.1.100:/home/root/file.txt /home/user/ 开发板到Ubuntu /path/to/local/file:本地文件的路径。
username:开发板的 SSH 用户名。
remote_ip:开发板的 IP 地址。
/path/to/remote/directory:开发板上的目标目录。

ssh用户名可以使用命令cat /etc/passwd查看

一般是这个,即 root
在这里插入图片描述

我要把Ubuntu的 ~ 目录下的C_Program文件夹里的led文件通过scp发送到开发板用户目录下Linux文件夹下的C_Program下

scp ~/C_Program/led root@192.168.1.100:/home/root/Linux/C_Program/

但是第一次会提示错误

Unable to negotiate with 192.168.1.100 port 22: no matching host key type found.their offer:ssh-rsa

这个错误通常出现在客户端和服务器之间的 SSH 协议协商中,意味着客户端和服务器在 SSH 连接时无法找到一个共同的 host key algorithm(主机密钥算法)。开发板的 SSH 服务器可能只支持 ssh-rsa 密钥,而你的客户端(Ubuntu 主机)可能已禁用该密钥算法。从 OpenSSH 8.8 开始,默认禁用了 ssh-rsa 密钥算法,因为它被认为不再安全。

可以在 SSH 配置文件中永久启用 ssh-rsa 支持

编辑ssh配置文件(在电脑端)

sudo nano /etc/ssh/ssh_config

在文件中添加以下行,按Ctrl+X然后按Y保存退出

Host 192.168.1.100 //开发板的IPHostKeyAlgorithms +ssh-rsa

再次尝试就可以传过去了
传了交叉编译后的LED执行文件,可以正常使用

在这里插入图片描述

编译自己写的代码

使用Linaro的交叉编译工具,可以看驱动开发的4.3小节
安装完后使用命令arm-linux-gnueabihf-gcc进行交叉编译
比如我写的是led.c文件,编译输出可执行文件led
然后通过scp传给开发板运行程序

arm-linux-gnueabihf-gcc -o my_led led.c

也可以使用Poky 交叉编译工具链
可以看用户快速体验文档的4.2小节
安装完后用如下命令进行编译

${CC} -o my_led led.c

在这里插入图片描述

执行my_led,触发模式为heartbeat

在这里插入图片描述

请添加图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词