IMX6ULL系列01-开发设备之间互联互通
官方开发指南(嵌入式Linux应用开发完全手册V4.0_韦东山全系列视频文档-IMX6ULL开发板)只讲解了基于 Windows PC,如何实现其与开发板、虚拟机 Ubuntu 系统的互联互通。指南中主要有三种方法:
第一种是 USB OTG 网卡,实现开发板和 PC 的直连。在 MAC 上尝试该方法,发现没有新增网络适配器;
第二种是主机和开发板同时网线接到交换机,由于网线只有一根,平时主机使用 wifi 和无线路由器连接,
因此本文连接方式为:开发板和交换机使用网线连接,主机使用 WIFI 和交换机连接。下面主要介绍 Mac 上,实现互联互通的软件工具和操作方法,如何实现开发流程命令文件传输过程。
![](https://img2022.cnblogs.com/blog/2689124/202207/2689124-20220721110025972-1328014477.jpg)
Windows 上详细的手把手教学视频请看 https://www.bilibili.com/video/BV12A411J7DG 网络连接方式一。
软件清单
软件名 | 说明 |
---|---|
Parallel Desktop | 虚拟机软件,安装 Ubuntu、Win11 操作系统。具备融合模式,减少多系统使用割裂感、不同系统具备共享文件夹,提高文件分享效率 |
Source insight | 阅读、编写源码的工具,即装即用;推荐初学者使用 |
Visual Studio Code | 阅读、编写源码的工具,需要进行很多配置;不推荐初学者使用 |
MobaXterm | Windows 上串口工具、远程登录工具,Mac上推荐使用 minicom |
Filezilla | 文件传输工具,在 Mac/Windows 和 Ubuntu 之间传输文件 |
Notepad++ | 文本编辑工具,比记事本好用 |
硬件清单
选用的设备链接方式所需硬件参考网络服务硬件
Windows/Mac 主机开发流程
Mac 主机上一般的日常开发流程为
- 在 Mac 上阅读修改代码(VSCode),融合模式下使用 Windows 上 SourceInsight 阅读修改代码,然后通过 共享目录把代码传到 Parallel Desktop 中的 Ubuntu;
- 在 Ubuntu 上编译程序;
- 把程序下载到开发板上,运行验证;
- 在 Mac 下通过串口/网络操作开发板。
![Mac_IMX6ULL_Network_System](https://img2022.cnblogs.com/blog/2689124/202207/2689124-20220721110026040-1123921026.png)
Windows 主机上一般的日常开发流程为
- 在 Windows 上阅读修改代码,然后通过 FileZilla 把代码传到 VMWare 中的 Ubuntu;
- 在 Ubuntu 上编译程序;
- 把程序下载到开发板上,运行验证;
- 在 Windows 下通过串口操作开发板。
文件传输方式种类和差异
1. 串口服务硬件
将串口线与电脑、板子连接,开发板插上电源。
其中特别需要注意的几点:
a) 板子的启动选择拨到正确的启动方式,保证该启动方式里面有系统可以运行;
b) 板子如图所示插上配套的电源到电源接口,电源开关暂时不用打开。
![](https://img2022.cnblogs.com/blog/2689124/202207/2689124-20220721110027785-887815727.jpg)
2. 串口服务类型和特点
- 传输速度慢
3. 网络服务硬件
- 百问网 imx6ull pro 开发板一套
- 超六类 RJ45 网线至少 1M 长(默认配有)
- 路由器
- PC 需具备无线网卡
4. 网络服务类型和特点
-
NFS:NFS 实现了一个跨越网络的文件访问功能,如下图可以简要说明其原理。其整个架构为 Client-Server 架构,客户端和服务端通过 RPC 协议进行通信,RPC 协议可以简单的理解为一个基于 TCP 的应用层协议,它简化命令和数据的传输。NFS 最大的特点是将服务端的文件系统目录树映射到客户端, 而在客户端访问该目录树与访问本地文件系统没有任何差别,客户端并不知道这个文件系统目录树是本地的还是远在另外一台服务器
- 挂载 Ubuntu 目录到开发板 /mnt 目录下
- 编译和执行可以分开执行,文件共享
- 免去上传和下载等等繁琐的操作
-
TFTP
- 在 Ubuntu 启动 TFTP 服务,开发板通过 tftp 命令和 Ubuntu 互传文件;
- 在 Windows 启动 TFTP 服务,开发板通过 tftp 命令和 Windows/Mac 互传文件;
-
SSH
- 在开发板上启动 SSH 服务,Windows/Mac 通过 FileZilla 登录开发板,互传文件。
- SSH 服务通过 FileZilla 是完全 GUI 操作,更方便
MAC 上 PD 安装 Ubuntu 的网络设置
1. 网络设置
- 控制中心,右键进入配置
- 点击硬件,网络 1 设置成共享网络,虚拟机可以使用互联网
- 新添加网络2,选择桥接模式,源为 Wifi1
2. 测试三者是否能否能ping通
- 查看 mac IP 地址,和 ubuntu 互相 ping 得通
- 串口查看开发板 IP,和 ubuntu 互相 ping 得通
- mac 和开发板互相 Ping 得通
Ubuntu 安装、配置 NFS
- 查看一下 /etc/exports 的内容,确定是否已挂载
- 安装 NFS 服务
$ sudo apt-get install nfs-kernel-server [sudo] password for parallels: Reading package lists... Done Building dependency tree Reading state information... Done Setting up nfs-kernel-server (1:1.3.4-2.5ubuntu3.4) ... Creating config file /etc/exports with new version Creating config file /etc/default/nfs-kernel-server with new version
- 修改 /etc/exports, 添加访问目录
添加如下内容:$ sudo vim /etc/exports
/home/parallels *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
- 重启 NFS 服务
$ sudo /etc/init.d/nfs-kernel-server restart Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
- Ubuntu 上通过 NFS 挂载自己,验证一下 NFS 可用
$ sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/parallels/ /mnt $ ls /mnt cv_debug.log Desktop Documents Downloads fontconfig Music nfs_rootfs Pictures Public snap Templates Videos $ sudo umount /mnt $ ls /mnt
Ubuntu 安装 TFTP 服务
- 创建 TFTP 服务器工作目录,并打开 TFTP 服务配置文件
$ mkdir -p /home/parallels/tftpboot
$ sudo chmod 777 /home/parallels/tftpboot
- 在配置文件/etc/default/tftpd-hpa 中,添加以下字段
TFTP_DIRECTORY="/home/book/tftpboot"
TFTP_OPTIONS="-l -c -s
$ sudo vim /etc/default/tftpd-hpa
- 重启 TFTP 服务
$ sudo service tftpd-hpa restart
- 查看 tftp 服务是否在运行,运行如下命令,即可查看是否在后台运行。
$ ps -aux | grep "tftp"
root 74786 0.0 0.0 3040 132 ? Ss 15:01 0:00 /usr/sbin/in.tftpd --listen --user tftp --address :69 -l -c -s /home/parallels/tftpboot
paralle+ 74865 0.0 0.0 8908 688 pts/1 S+ 15:01 0:00 grep --color=auto tftp
开发板实现串口通信
Windows 下串口通信工具较多,推荐使用 MobaXterm,而 Mac 下,这类工具较少,这里有软件推荐,但经测试,会出现乱码以及无法接收键盘命令问题。这里发现 minicom 最能满足需求。
homebrew install minicom
ls /dev/tty.*
minicom -s
![](https://img2022.cnblogs.com/blog/2689124/202207/2689124-20220721110027616-1163500312.jpg)
设置开发板IP地址
- 每次手动设置
ifconfig eth0 192.168.5.9
- 静态 IP 设置
[root@imx6ull:~]# vi /etc/network/interfaces
更改为如下内容
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
gateway 192.168.1.1
执行 /etc/init.d/S40network restart
重启网络服务。
开发板挂载 Ubuntu 的 NFS 目录
1. 前提
- 开发板带 mount 命令,支持 NFS 文件系统
- Ubuntu已安装了 NFS 服务,并且在/etc/exports 中配置了某个目录供挂载
- 使用桥接网络,开发板可以 ping 通 Ubuntu
2. 挂载测试
192.168.1.12:/home/parallels
- 192.168.1.12 - ubuntu IP地址
- /home/parallels - /etc/exports 配置的内容
mount -t nfs -o nolock,vers=3 192.168.1.12:/home/parallels /mnt
Ubuntu 中添加一个文件 hello.txt
![](https://img2022.cnblogs.com/blog/2689124/202207/2689124-20220721110026924-1959278790.jpg)
开发板上查看 /mnt/Desktop/ 发现文件已更新
![](https://img2022.cnblogs.com/blog/2689124/202207/2689124-20220721110027070-707912434.jpg)
开发板通过 tftp 传输 ubuntu 文件
1. 开发板使用 tftp 命令下载文件
在 ubuntu 上新建文件
$ cd /home/parallels/tftpboot
$ touch hello.c
$ ls
hello.c
在开发板上下载 ubuntu 服务器上的zImage文件
[root@imx6ull:~]# tftp -g -r hello.c 192.168.1.12
[root@imx6ull:~]# ls
hello.c
2. 开发板上使用 tftp 命令上传文件
在开发板目录下创建 1.txt 文本文件
vi 1.txt
在开发板上执行如下命令上传到 ubuntu 服务器的 tftp 服务目录下
[root@imx6ull:~]# tftp -p -l 1.txt 192.168.1.12
Mac 和开发板传输文件(FileZilla)
Windows 和开发板之间可以通过 TFTP 服务, 或是 SSH 服务传输文件。 前者需要在开发板上输入 tftp 命令,后者可以在纯 GUI 界面操作。
100ASK_IMX6ULL 自带的 Linux 系统中,已经安装并开启了 SSH 服务,所以只要网络联通,就可以通过FileZilla 和开发板传输文件。
1. 确保 Mac 和开发板网络联通
- 确定开发板 IP
- Mac 命令行 Ping 得通开发板
2. 启动 FileZilla 连接开发板
- 在 FileZilla 中输入开发板的 IP,输入用户名 root,输入端口号 22,就可以回车连接开发板了,连接成功,即可进行文件传输
![](https://img2022.cnblogs.com/blog/2689124/202207/2689124-20220721110027720-1257118347.jpg)
注意 :解决 22 端口拒绝访问
Why am I getting a "port 22: Connection refused" error?
sudo apt-get update
sudo apt-get install openssh-server
sudo ufw allow 22