基于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 //开发板的IP
HostKeyAlgorithms +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