LV02-03-网络环境-01-网络开发环境搭建

本文主要网络环境的搭建——VMware使用双网卡的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.6的64位版本(一开始使用的是16.04版本,后来进行了升级)
VMware® Workstation 17 Pro 17.0.0 build-20800274
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
Linux开发板环境 Linux开发板 正点原子 i.MX6ULL Linux 阿尔法开发板
uboot NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03)
linux内核 linux-4.15(NXP官方提供)
点击查看本文参考资料
分类 网址 说明
官方网站 https://www.arm.com/ ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档
https://www.nxp.com.cn/ NXP官方网站
https://www.nxpic.org.cn/NXP 官方社区
https://u-boot.readthedocs.io/en/latest/u-boot官网
https://www.kernel.org/linux内核官网
点击查看相关文件下载
分类 网址 说明
NXP https://github.com/nxp-imx NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库
https://elixir.bootlin.com/linux/latest/source 在线阅读linux kernel源码
nxp-imx/linux-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga NXP linux内核仓库tags中的rel_imx_4.1.15_2.1.0_ga
nxp-imx/uboot-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga NXP u-boot仓库tags中的rel_imx_4.1.15_2.1.0_ga
I.MX6ULL i.MX 6ULL Applications Processors for Industrial Products I.MX6ULL 芯片手册(datasheet,可以在线查看)
i.MX 6ULL Applications ProcessorReference Manual I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网)

网络搭建的相关笔记是直接使用的正点原子出厂系统做的。这里主要记录电脑WiFi上网,设备和电脑网口直连的方式进行网络环境的搭建。

一、准备工作

1. 扩展坞

电脑接口不太够,我就买了一个Type-C的扩展坞,上边有扩展的网口,后续的开发都用的这个扩展坞上的网口,但其实电脑本身的网口也可以用,当然,网口够多的话。

image-20230717200554402

2. 硬件连接方式

使用场景:路由器离电脑比较远,只有一条网线。

设备:电脑(Windows)、正点原子 Linux 开发板(出厂系统)、路由器/交换机、直通网线。

image-20220718200404678

我使用的电脑中安装了虚拟机 VMware ,在 VMware 中运行 Ubuntu 系统,电脑连接无线网实现上网,由于我使用了一个扩展坞,所以开发板的 ENET2 (这个网口是正点原子ALPHA开发板的默认的eth0网口)网口通过网线连接到扩展坞的网口,扩展坞通过 Type-C 连接到电脑,关于网络配置的相关硬件连接就是这个样子啦。

3. 关闭 Ubuntu 和 Windows 防火墙

在 Ubuntu 和 Windows 互相通信之前,需要关闭防火墙。在 Windows 主机的控制面板\系统和安全\Windows Defender 防火墙中选择关闭防火墙。 这一步其实主要是windows中的防火墙,它有些版本是真的会拦截的,比如我后来个你想你windows之后的这个版本:

1
2
3
4
5
版本	Windows 11 专业版
版本号 23H2
安装日期 ‎2024/‎9/‎16
操作系统版本 22631.4169
体验 Windows Feature Experience Pack 1000.22700.1034.0

在这个版本中我就遇到了开发板可以ping通ubuntu,但是windows和开发板,windows和ubuntu均会出现互相ping不通的情况,ubuntu也会ping不通开发板。

3.1 Windows

控制面板→系统和安全→Windows Defender 防火墙:

image-20240828070841191

最后如自定义设置:

image-20240828070911740

那我们要是不想关闭防火墙呢?毕竟关闭之后,我们的windows安全性也会降低,其实也是可以的,主要是我们需要设置一下策略,我们这样操作:

控制面板→系统和安全→Windows Defender 防火墙→高级设置→入站规则(允许别人ping是入站,所以在入站规则上进行操作)

image-20240917073009061

这里我的是IPv4,所以打开这两个规则即可。

3.2 Ubuntu

打开 Ubuntu 终端,使用以下指令关闭 Ubuntu 防火墙。

1
sudo ufw disable  
image-20240828071120835

二、电脑WiFi上网,开发板和电脑直连

1. windows配置

接下来我们看一下在windows中需要做哪些配置。

1.1 查看windows中有哪些网络适配器

  • 方式一

【我的电脑】→【管理】→【设备管理器】→【网络适配器】

  • 方式二

win + r 调出运行框,然后输入以下命令:

1
devmgmt.msc

按下 enter 按键就可以打开设备管理器,然后我们点开网络适配器即可看到电脑所有的网络适配器了:

image-20230717201127295

第一个以 ASIX 开头的就是扩展坞连接后连接到扩展坞网口的网络适配器了,就是我们后边要用的。

1.2 查看 windows 以太网网络适配器

1.2.1 方式一

当我们连接好扩展坞、电脑和 Linux 开发板后,我们打开网口的详细信息。【控制面板】→【网络和 Internet】→【网络和共享中心】或者我们直接在控制面板的地址栏输入下边的内容:

1
控制面板\网络和 Internet\网络和共享中心

然后就会打开网络和共享中心:

image-20230717201524314

我们会发现,当开发板网口连接到扩展坞网口后,会出现一个以太网 2 的活动网络,然后我们【以太网2】→【详细信息】这样我们就可以看到这个网口连接的网络适配器的相关信息:

image-20230717201739190

可能是以前配置过,不过不重要,后边我们会重新配置。

1.2.2 方式二

我们按下 Win + r 调出运行框,然后输入以下命令:

1
ncpa.cpl

按下enter按键后,就会看到以下弹窗:

image-20230717201926055

这样我们也可以看到我们关心的以太网口连接到了哪一个网络适配器。

1.3 设置网口IP

接下来就是设置这个网口的静态 IP 信息了,步骤如下

image-20230717202053859

这里的 IP 地址我们设置的是 192.168.10.xxx 网段的,注意后边 Ubuntu 和开发板也要设置成同一网段。到这里我们 Windows 中的 IP 设置就完成了,要记得的是我们的 Windows 所设置的 IP 信息为:

1
2
3
IP地址  :192.168.10.100
子网掩码 :255.255.255.0
默认网关 :192.168.10.1

1.4 查看 windows 主机所有网络信息

我们按下组合键 win + r ,打开运行框,输入 cmd ,再按下 enter 便可以打开命令行,我们在命令行输入以下命令:

1
ipconfig

然后便会显示 Windows 中所有的 IP 配置信息:

点击查看详情
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Windows IP 配置


以太网适配器 以太网:

媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 1:

媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 10:

媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 VMware Network Adapter VMnet1:

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::500b:eb0:3c9:6ba9%16
IPv4 地址 . . . . . . . . . . . . : 192.168.234.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :

以太网适配器 VMware Network Adapter VMnet8:

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::aee4:54b2:f3f6:997a%6
IPv4 地址 . . . . . . . . . . . . : 192.168.19.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :

以太网适配器 以太网 2:

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::b71d:e0de:15df:b50e%11
IPv4 地址 . . . . . . . . . . . . : 192.168.10.100
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.10.1

无线局域网适配器 WLAN:

连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 2409:8a28:a54:d560:6aec:3d23:92db:7fba
临时 IPv6 地址. . . . . . . . . . : 2409:8a28:a54:d560:8c37:dc6a:1aa9:65e1
本地链接 IPv6 地址. . . . . . . . : fe80::82b4:b2c2:18a2:65d1%2
IPv4 地址 . . . . . . . . . . . . : 192.168.10.110
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : fe80::1%2
192.168.10.1
网络适配器名IP地址备注
以太网适配器
以太网2
192.168.10.100 以太网的IP信息,默认有一个IP,需要手动修改。如果显示已断开,请将电脑网口接到开发板网口上
以太网适配器
VMware Network Adapter VMnet1
192.168.234.1在host-only模式下,动态分配虚拟系统的TCP/IP配置信息
以太网适配器
VMware Network Adapter VMnet8
192.168.19.1提供DHCP服务,用于主机和虚拟机互通,虚拟机上网
无线局域网适配器WLAN192.168.3.110用于Windows主机上网
以太网适配器
VMware Network Adapter VMnet0
不提供DHCP,用于桥接网络,要在虚拟网络编辑器设置手动设置IP

我们在 Windows 终端看不到到 VMnet0 ,但是可以在虚拟网络编辑器中可以看到。这是我们用来桥接的网络适配器,不会自动分配 IP ,需要手动设置(在 Ubuntu 中设置,可以看 Ubuntu 设置部分)。这里要注意, VMnet0 设置的网段不能和 VMnet1 、 VMnet8 的网段一样,不然会有冲突。

1.5 windows IP

这里记录一下windows中对于我们来讲比较重要的两个ip地址:

1
2
3
4
5
6
7
8
9
以太网适配器 以太网 2:
IPv4 地址 . . . . . . . . . . . . : 192.168.10.100
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.10.1

无线局域网适配器 WLAN:
IPv4 地址 . . . . . . . . . . . . : 192.168.10.110
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.10.1

2. ubuntu配置

我这里用的是ubuntu22.04版本,但是后面有一些奇奇怪怪的问题,换回了16.04或者20.04,不过影响不大,都基本一样的操作。

2.1 双网卡?

2.1.1 NAT网卡

NAT 网卡: ubuntu 通过它上网,只要 Windows 能上网, ubuntu 就能上网。

NAT, 全称是Network Address Translation, 指网络地址转换。使用 NAT 网卡时, ubuntu 要访问外网,是委托 Windows 发出数据包,Windows 接收到回应后再转发给 ubuntu。外界看到的都是 Windows,看不到 ubuntu。使用 NAT 时,只要 Windows 能上网, ubuntu 就必定能上网, 无需设置 ubuntu 的网络。对于外界来说,就只能看到windows一个设备。

2.1.2 桥接网卡

桥接网卡: ubuntu 通过它跟linux开发板联通。

使用桥接网卡时, ubuntu 就是使用一个真实的网卡,相当于开发板的网线也连接到这个真实的网卡上,对外界来说就相当于ubuntu也是一个单独的设备了。这样 Windows、 Ubuntu、开发板就都可以用过这个网卡互通了。

2.1.3 双网卡的虚拟机

使用双网卡的时候,是什么样子的?如下图所示:

image-20230717193548726

这是我以前的虚拟机的双网卡的情况。其实就是再添加一个网络适配器罢了。

2.2. VMware桥接网络适配器

2.2.1 新建网络适配器

首先我们为虚拟机新建一个网络适配器,用作桥接,新建的网络适配器用于和Windows、Linux开发板通信,原来的NAT网络适配器用于上网。

image-20230717194222879

原来的网络适配器保持NAT模式,这样可以保证虚拟机正常上网,新建的网络适配器2我们设置为桥接模式

image-20230717194406670

这样我们的ubuntu就有了两个网络适配器:

image-20230717194520886

2.2.2 配置虚拟网络编辑器

  • (1)我们打开虚拟网络编辑器:【编辑】→【虚拟网络编辑器】
image-20220718212321708
  • (2)打开后界面如下,我们需要点击【更改设置】才可以修改各个参数
image-20230717194823424

不清楚这里为什么会有VMnet0,应该是新版本的VMware所自动生成的,老版本的虚拟机可能会出现只有两个网络名称的情况,如下图,若是只有两个网络名称,我们就需要新建一个 VMnet0 :

image-20230717195039946
  • (3)设置 VMnet0 网络信息
image-20230717205606627

这里的桥接网卡要选择连接了linux开发板的网口对应的网络适配器,也就是刚才windows中出现的以太网2所对应的网络适配器。这里我们选择桥接,然后桥接到 ASIX 开头的这个网络适配器,后边就用于跟 Windows 和 Linux 开发板通信使用了。

  • (4)点击应用,然后退出就可以啦。

2.2.3 虚拟网卡名简介

上边我们看到了有 VMnet0 、 VMnet1 和 VMnet8 ,这是啥?为啥要新建一个 VMnet0 ?

虚拟网卡名网络属性定义
VMnet0物理网卡Bridge桥接
VMnet1虚拟网卡host-only仅主机
VMnet8虚拟网卡NAT
- 当虚拟机选择使用 VMnet0 网卡时

使用 VMnet0 (桥接网络),虚拟机相当于网络当中的一台真实的机器,就是平时说的桥接模式,凡是选择使用桥接网络的系统就好像是局域网中的一个独立的主机, 就是和真实的计算机一模一样的主机, 并且它也连接到了这个真实的网络。因此如果要这个系统联网,就需要将这个系统和外面的真实主机采用相同的设置方法。

  • 当虚拟机选择使用 VMnet1 网卡时

这表示这台虚拟机连接到 VMnet1 虚拟交换机,就是平时所说的仅主机模式。 VMnet1 ,官方定义为仅主机网路,其默认的网络行为,只与主机或使用 VMnet1 虚拟网卡的虚拟机有网络连接,使用 VMnet1 的虚拟网卡的虚拟机,不能访问与物理主机之外的其他计算机。也就是说,虚拟机之间、主机与虚拟机之间可以互相访问,但虚拟机无法访问外网。

  • 当虚拟机选择使用 VMnet8 网卡时

如果虚拟机使用 VMnet8 ,也就是平时说的 NAT 网络模式,这种模式下虚拟机可以通过主机网络,单向(从虚拟机到主机、外网)访问物理主机之外的网络,而主机以外的网络不能访问使用 VMnet8 的虚拟机。但这个的前提是,主机要能访问外网(或网络上的其他计算机),如果主机不能访问外网,则配置为 VMnet8 虚拟网卡的虚拟机,也不能访问外网。

2.2.4 可能出现的问题

2.2.4.1 问题一

在选择“已桥接至”网络适配器的时候找不到以太网口对应的网络适配器。

这个时候我们打开以太网的详细信息,在属性中勾选 VMware Bridge Protocol 即可。

image-20220718213457711
2.2.4.2 问题二

虚拟网络编辑器中没有 VMnet0 ,新建的时候也没有 VMnet0 ,这时候怎么办呢?

这个问题吧,目前还没有遇到过,网上直接搜的话是有解决办法的,遇到这个问题的时候我们可以尝试还原默认设置,或者是重装 VMware ,清理一下注册表之类的,后边遇到这个问题了再补充到这里。

2.3 ubuntu网络配置

2.3.1 网络配置信息

2.3.1.1 NAT模式网络适配器

在 Ubuntu 系统中,我们打开【设置】→【Network】便会看到如下信息:

image-20230717210414281

我们会看到这里有两个网络名称,其中第一个ens33是已经自动分配的有 IP 地址的,这个其实就是我们使用 NAT 模式用于上网的网络适配器。此时这个 NAT 模式的网络适配器和 VMnet8 应当是在同一网段的( 192.168.19.X ),如果不是在同一网段,可能是之前用户有设置过 Ubuntu 的 IP ,这里我们可以在这个网络的选项中将它设置为自动模式即可。我们点开看一下:

image-20230717210655203

由于这个网络适配器的存在,我们的 Ubuntu 就可以上网,并且和 Windows 互通,我们在 ubuntu 中输入以下命令:

1
2
ping www.baidu.com    # ping 外网
ping 192.168.10.110 # ping Windows(可以上网的那个ip)
image-20230717211308890

需要注意的是,这里默认使用的是ens33。

2.3.1.2 桥接模式网络适配器

上边看完 NAT 模式的网络适配器,下边还有一个,这个当然就是我们设置为桥接模式的网络适配器啦,我们后边 再进行配置。

image-20230717211405617

这个网络是什么都没有的,这就是我们需要配置的用于桥接网络的网络适配器 2 了,默认好像是关闭的(具体忘记了,因为写这篇笔记的时候我是删了用于桥接的网络,重新配置的,印象中默认是关闭的,不过问题不大,最后还是要打开的)。

2.3.1.3 打印网络配置信息

我们可以通过以下命令来打印一下 Ubuntu 中的网络配置信息:

1
ifconfig

然后我们会看到如下信息输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
hk@ubuntu2204:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.19.131 netmask 255.255.255.0 broadcast 192.168.19.255
inet6 fe80::7bef:a0d9:48df:1aed prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:42:15:e2 txqueuelen 1000 (以太网)
RX packets 303 bytes 35390 (35.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 231 bytes 23839 (23.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:42:15:ec txqueuelen 1000 (以太网)
RX packets 52 bytes 4886 (4.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 173 bytes 28838 (28.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 392 bytes 43790 (43.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 392 bytes 43790 (43.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2.3.2 配置桥接网络适配器

2.3.2.1 配置步骤

下边我们就来配置一下这个用于桥接的网络适配器,也就是上边的ens37:

image-20230717211938008

修改完毕后点击右上角的应用即可,这个时候可能IP还未配置成功,我们需要重新启动一些这个适配器。

image-20240917090509002
2.3.2.2 结果测试 

我们来试一下:

1
2
3
ping www.baidu.com -I ens37  # ping 外网
ping 192.168.10.110 -I ens37 # ping Windows(可以上网的那个ip)
ping 192.168.10.100 -I ens37 # ping Windows(连接了开发板的那个以太网适配器的ip)

然后会有以下结果:

image-20230717213127776

可以看到这个适配器是只能ping通桥接到的那个网卡的。

2.3.3 网络适配器优先级

上边我们设置好之后,会有一个问题就是,我们平时使用的时候优先使用哪个网络适配器呢?要是我们想上网,但是它默认使用了桥接模式的网络适配器,那这个时候是无法联网的。我们可以参考这篇文章:虚拟机双网卡的一种处理方法-OpenEdv-开源电子网

image-20230717213312843

但是有一个问题,那就是这里勾选后,无法应用,暂时不知道原因。后边有问题或者有解决办法的话再补充。

2.4 ubuntu IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.19.131 netmask 255.255.255.0 broadcast 192.168.19.255
inet6 fe80::7bef:a0d9:48df:1aed prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:42:15:e2 txqueuelen 1000 (以太网)
RX packets 303 bytes 35390 (35.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 231 bytes 23839 (23.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.101 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::f6ae:862b:fa36:f281 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:67:b9:6d txqueuelen 1000 (以太网)
RX packets 386 bytes 62233 (62.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 304 bytes 25608 (25.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 392 bytes 43790 (43.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 392 bytes 43790 (43.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

3. linux开发板配置

这里用的是正点原子ALPHA开发板出厂的linux系统。

3.1 MobaXterm连接开发板

这个前边应该已经很熟练了。

3.2 设置开发板 IP

我们的开发板启动后,我们可以通过以下命令来设置临时开发板的 IP 信息:

1
2
ifconfig eth0 up 
ifconfig eth0 192.168.10.103

【注意】这里的 IP 要跟 Windows 和 Ubuntu 在同一网段,即 192.168.10.X ,但是不能和他们重复。

然后我们输入 ifconfig 命令查看是否配置成功:

1
ifconfig

若设置成功吗,我们会看到如下信息:

image-20230717213629661

可以看到 IP 地址已经设置为 192.168.10.103 了

3.3 互ping测试

3.3.1 linux开发板与windows

1
2
开发板   IP:192.168.10.103
windows IP:192.168.10.100
  • 开发板→windows

我们在串口终端输入以下命令:

1
ping 192.168.10.100

看到如下信息,则是可以 ping 通:

image-20230717214627540
  • windows→开发板

我们在windows的命令行执行以下命令:

1
ping 192.168.10.103

看到如下信息则表示可以ping通:

image-20230717214820330

3.3.2 linux开发板与ubuntu

1
2
开发板  IP:192.168.10.103
ubuntu IP:192.168.10.101
  • 开发板→ubuntu

我们在串口终端输入以下命令:

1
ping 192.168.10.101

看到如下信息,则是可以 ping 通:

image-20230717215017684
  • ubuntu→开发板

我们在ubuntu的终端执行以下命令:

1
ping 192.168.10.103

看到如下信息则表示可以ping通:

image-20230717215137728

3.3.3 问题处理

有的时候可能会因为我们插错了网口导致无法ping通,重新插回对的网口似乎也不行,又或者是突然开发板就无法与windows通信了,这个时候可以尝试重启windows下的以太网适配器,可以先禁用再重启。

image-20230718225201521

断开和重启的话,这个时候开发板可能会有如下打印信息:

image-20230718224810377

3.4 开发板设置静态 IP

上边的设置完成后会有一个问题,就是当我们复位开发板后, IP 又变回以前的设置了,这是由于 LAN 8720 PHY 网络芯片没有 MAC 地址,系统启动时会生成随机 MAC 地址给网络使用。每次都生成一个 MAC 地址,导致每次开机网络获取的 ip 不是固定的。 所以我们要设置给它一个静态的 ip,不因 MAC 地址的改变而改变,设置固定 ip 方法调试。

那我们如何让它不再发生变化,设置成静态的 IP 呢?

3.4.1 准备工作

如果开发板文件系统 /etc/init.d/ 下有 connman 文件,执行以下指令将 connman 命名为 connman2 :

1
mv /etc/init.d/connman /etc/init.d/connman2

这样做是为了让系统找不到 connman 文件,就会关闭 connmand 网络连接守护进程,如果不关闭的话,在后面的设置完成后会有两个 IP 地址。如果文件系统下没有这个文件,就可以没有这一步了。然后就可以开始设置开发板的静态 IP 了,可以有两种方式,一种是自启动执行命令,另一种是修改配置文件。

3.4.2 自启动执行命令方式

3.4.2.1 方式一:修改rcS文件

在 MobaXterm 连接好开发板后,执行以下命令:

1
2
echo "ifconfig eth0 192.168.10.103 netmask 255.255.255.0" | tee -a /etc/init.d/rcS
echo "route add default gw 192.168.10.1" | tee -a /etc/init.d/rcS

以上命令中

  • | 是管道,管道经常用于拼接命令;
  • tee 这个工具的作用就是把标准输出复制一份后放到对应的文件里;
  • -a 其实也就是 >> 即 shell 脚本中的重定向,表示追加的意思,追加就是在文件的后面写上要添加的指令,而不是覆盖源文件, >> 和 > 不同的是, > 是覆盖源文件(不能执行 > ,要不然原来的配置会被覆盖了)。

上边的命令也可以这样写:

1
2
echo "ifconfig eth0 192.168.10.103 netmask 255.255.255.0" | tee >> /etc/init.d/rcS 
echo "route add default gw 192.168.10.1" | tee >> /etc/init.d/rcS

执行完以上命令后,以下命令:

1
cat -n /etc/init.d/rcS

可以发现 /etc/init.d/rcS 文件最后两行会添加了以上两条命令,那么在开发板开机启动后,这两条命令便会执行。然后我们重启开发板,执行 ifconfig 指令或者 ip -a 查看 IP 地址,会发现与重启之前 IP 是一致的。这种设置的好处在于操作简单,一次修改成功,下次再重启开发板 IP 地址不会变化,即永久生效。

image-20230717215424090

需要注意的是,这里我后来再搞的时候在这个位置写会不生效,暂时也不知道原因,但是如下图这样写就正常了:

image-20240426074115263
1
2
ifconfig eth0 192.168.10.103 netmask 255.255.255.0
route add default gw 192.168.10.1

我猜测可能是写在最后的话,没有执行。

3.4.2.2 方式二:修改rc.local

我们在出厂系统重打开或者创建 /etc/rc.local 文件:

1
vi /etc/rc.local

在文件的末尾添加如下内容:

1
2
3
PATH=/sbin:/bin:/usr/sbin:/usr/bin
ifconfig eth0 192.168.10.103 netmask 255.255.255.0
route add default gw 192.168.10.1

如下图所示:

image-20240426074345579

3.4.3 修改配置文件方式

另一种方式就是修改配置文件,一般情况下配置文件路径为:

1
/etc/network/interfaces

需要注意的是,这个配置文件在有的文件系统中有,有的文件系统下没有,没有的话,这种可能方法就不适合了,反正也是一种方式,写在这里做参考。我们使用 vi 打开这个配置文件:

1
vi /etc/network/interfaces

原来的配置文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

# Wireless interfaces
iface wlan0 inet dhcp
wireless_mode managed
wireless_essid any
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf

iface atml0 inet dhcp

# Wired or wireless interfaces
auto eth0
iface eth0 inet dhcp
iface eth1 inet dhcp

# Ethernet/RNDIS gadget (g_ether)
# ... or on host side, usbnet and random hwaddr
iface usb0 inet static
address 192.168.7.2
netmask 255.255.255.0
network 192.168.7.0
gateway 192.168.7.1

# Bluetooth networking
iface bnep0 inet dhcp

我们修改 Wired or wireless interfaces 部分为以下内容

1
2
3
4
5
6
7
8
9
# Wired or wireless interfaces
auto eth0
# iface eth0 inet dhcp
iface eth0 inet static
address 192.168.10.103
gateway 192.168.10.1
netmask 255.255.255.0

iface eth1 inet dhcp

就是这样:

image-20220719073057553

修改完执行以下命令:

1
/etc/init.d/networking restart # 重启网络配置

这种修改方法是修改完配置文件,然后重启网络配置后就永久生效。

3.4.4 设置临时静态IP

我们在开发板文件系统中执行以下命令:

1
2
ifconfig eth0 192.168.10.103 netmask 255.255.255.0 
route add default gw 192.168.10.1

这种设置的好处在于,执行完指令不需重启开发板就生效,但是关机后下次再开机就会恢复原来的配置,即临时有效。

4. uboot配置

我们要是配置好uboot的网络信息,也是可以和windows、ubuntu ping通的。我们可以复位开发板,进入uboot:

image-20240917092842253

然后执行以下命令:

1
2
3
4
5
6
setenv ipaddr 192.168.10.103        # 开发板的IP
setenv ethaddr 00:04:9f:04:d2:35 # 开发板的网卡物理地址,好像随便写一个就行
setenv gatewayip 192.168.10.1 # 开发板的网关
setenv netmask 255.255.255.0 # 子网掩码
setenv serverip 192.168.10.101 # ubuntu作为服务器,这里是ubuntu的IP
saveenv # 保存环境变量,这样下次启动也不会恢复原样

如下图所示:

image-20240917093004239

然后可以跟上面一样测试即可。

5. 小结

  • 防火墙设置:关闭电脑和虚拟机的防火墙(这一步看情况而定,有些可能根本不需要,有些可以通过修改策略进行)。

  • 网络连接:电脑使用无线上网,开发板网口直连电脑网口。

  • Windows 设置:手动设置以太网TCP/IPv4属性中的IP信息。

  • VMwear设置:设置网络适配器为桥接模式;添加一个网络适配器2为NAT模式。

  • Ubuntu 设置:设置NAT模式的网络适配器为自动获取模式(DHCP);手动设置桥接模式 的网络适配器的IP信息。

  • 开发板设置:手动设置开发板的IP信息。

注意:

(1)Ubuntu里桥接模式的网络适配器、电脑的以太网、开发板的网口,三者要在同一网段,且不能与NAT模式的网络适配器、虚拟机子网在同一网段。Windows和Ubuntu通过NAT 模式的网络适配器通信。

(2)其实上边我配置的IP都和windows的无线局域网适配器 WLAN在同一个网段了,这样看起来也没啥问题,但是要是想配置到别的网段可以嘛?当然也可以,只需要保证开发板、windows的以太网适配器 以太网x和ubuntu桥接模式的网路适配器这三者的IP在同一网段,例如(我当时测试的时候是没什么问题):

windows:

1
2
3
IPv4 地址 . . . . . . . . . . . . : 192.168.5.10
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.5.1

ubuntu:

1
2
3
inet    192.168.5.11
netmask 255.255.255.0
gw 192.168.5.1

开发板:

1
2
3
inet    192.168.5.12
netmask 255.255.255.0
gw 192.168.5.1

三、其他网络拓扑结构

这部分我就没有做实验了,直接搬用文档,放在这里容易查看。

1. 电脑和开发板直连同个路由器

1.1 准备工作

使用场景:电脑和路由器/交换机比较近,有两条网线。这种容易搭建。

设备:电脑(Windows)、正点原子 Linux 开发板(出厂系统) 、路由器、直通网线(2 条) 。网络拓扑结构: 电脑网口通过直通网线连接到路由器/交换机的 LAN 口,开发板网口通过直通网线连接到路由器/交换机的 LAN 口,路由器/交换机的 LAN 口接到外部宽带,从而实现上网。

image-20240828070429692

1.2 VMware 设置

Ubuntu 设置:打开 VMware Workstation Pro 的 虚拟机 → 设置 :

image-20240828070510372

在虚拟机设置中,将 网络适配器 修改为 桥接模式 ,点击确定。

image-20240828070527686

1.3 Ubuntu 设置

打开 Ubuntu16 系统, 点击任务栏的设置 → 网络。

image-20240828070604492

在 Ubuntu 的网络设置这里可以看到 Ubuntu 系统的 IP 和网关、 DNS 等信息。 如果没有的话就打开右下角的 选项 按键。

image-20240828070630227

打开 选项 按键后,就打开了编译网络设置的界面,在这里可以选择 IPv4 设置,选择使用自动(DHCP)的方式来获取路由器分配的 IP,设置完成点击右下角的保存。

image-20240828070652598

设置完成后,并不会更新网络信息,会返回到刚刚的 网络 界面,点击下图中的开关按键,关闭网络后重新打开,就会更新网络信息。如果不进行此操作就不会更新设置。

image-20240828070716645

1.4 Windows 设置

查看 Windows 主机的 IP:在 Windows 端按下 win + R 快捷键打开运行栏,输入 cmd 指令后按下回车。

image-20240828071548778

在打开的终端中输入 ipconfig 指令,查看电脑的 IP。

1
ipconfig
image-20240828071611285

1.5 开发板设置

开发板设置:直通网线的一端接正点原子 Linux 开发板的网口,如果是阿尔法开发板就接ENET2,另一端接路由器的 LAN 网口。 在串口终端输入 ifconfig 指令来查询开发板是否获取到路由器分配到的 IP。

1
ifconfig
image-20240828071652401

1.6 ping 测试

在 ping 测试之前要关闭 Windows 和 Ubuntu 的防火墙。 综合前面的设置,这里的 IP 如下。

1
2
3
Windows 主机 IP : 192.168.3.6
Ubuntu 虚拟机 IP: 192.168.3.7
开发板 IP : 192.168.3.9

接下来可以测试开发板和 Ubuntu、 Windows 互 ping。

  • 开发板 ping 虚拟机 Ubuntu 的 IP
1
ping 192.168.3.7
image-20240828071824556
  • Ubuntu 虚拟机 ping 开发板 IP
1
ping 192.168.3.9
image-20240828071911422
  • Ubuntu 虚拟机 ping 外网。
1
ping www.baidu.com
image-20240828071948345
  • 开发板 ping 外网。
1
ping www.baidu.com
image-20240828072053284
  • Windows 主机 ping 虚拟机 Ubuntu。
1
ping 192.168.3.7
image-20240828072145728
  • 在 Ubuntu 终端执行以下指令 ping 主机 Windows 的 IP。
1
ping 192.168.3.6
image-20240828072223732

1.7 小结

防火墙设置:关闭电脑和虚拟机的防火墙。

网络连接:开发板网口和电脑网口都通过网线直接连到同个路由器。

VMware 设置:设置网络适配器桥接模式,虚拟网络编辑器还原默认设置。

Ubuntu 设置:设置网络连接模式为自动(DHCP)。

Windows 设置:设置以太网 TCP/IPv4 属性为自动获取 IP 地址。

开发板设置:出厂系统默认会自动获取 IP,没有这个功能的话可以执行以下指令获取 IP。

1
2
>ifconfig eth0 up
>udhcpc -i eth0

以上就是开发板、 Ubuntu 和 Windows 三者互 ping 测试,在开发板 uboot 命令行设置完开发板 IP 相关的信息后,也能 ping 虚拟机 Ubuntu。

1
2
3
4
5
6
7
setenv ipaddr 192.168.3.9
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.3.1
setenv netmask 255.255.255.0
setenv serverip 192.168.3.7
saveenv
ping 192.168.3.7
image-20240828072502998

uboot 阶段时, Ubuntu 虚拟机 ping 开发板是没有反馈的。

2. 电脑和开发板直连同个交换机

2.1 准备工作

使用场景:宽带可以直连交换机,有两条网线,没有路由器,没有 WiFi 或者无线网卡。

设备:电脑(Windows)、正点原子 Linux 开发板(出厂系统)、交换机、直通网线(2 条)。网络拓扑结构:

image-20240828073323651

直连路由器和直连交换机的效果是差不多的,只不过路由器会一个单独的网段,而交换机的网段和宽带分配的网段是一样的。 也就是一个是以路由器为中心的局域网,一个是以宽带为中心的局域网。

2.2 VMware 设置

打开 VMware Workstation Pro 的 虚拟机→ 设置

image-20240828073414246

在虚拟机设置中,将 网络适配器 修改为 桥接模式 ,点击确定。

image-20240828073438474

2.3 Ubuntu 设置

打开 Ubuntu16 系统,点击任务栏的设置 → 网络。

image-20240828073536774

在 Ubuntu 的网络设置这里可以看到 Ubuntu 系统的 IP 和网关、 DNS 等信息。如果没有的话就打开右下角的 选项 按键。

image-20240828073618438

打开 选项 按键后,就打开了编译网络设置的界面,在这里可以选择 IPv4 设置,选择使用自动(DHCP)的方式来获取路由器分配的 IP,设置完成点击右下角的保存。

image-20240828073633430

设置完成后,并不会更新网络信息,会返回到刚刚的 网络 界面,点击下图中的开关按键,关闭网络后重新打开,就会更新网络信息。如果不进行此操作就不会更新设置。

image-20240828073653258

2.4 Windows 设置

查看 Windows 主机的 IP:在 Windows 端按下 win + R 快捷键打开运行栏,输入 cmd 指令后按下回车。

image-20240828073726227

在打开的终端中输入 ipconfig 指令,查看电脑的 IP。

1
ipconfig
image-20240828073749805

2.5 开发板设置

开发板设置:直通网线的一端接正点原子 Linux 开发板的网口,如果是阿尔法开发板就接ENET2,另一端接电脑的以太网网口。在串口终端输入 ifconfig 指令来查询开发板是否获取到路由器分配到的 IP。

1
ifconfig
image-20240828073835700

2.6 ping 测试

在 ping 测试之前,要关闭 Windows 和 Ubuntu 的防火墙。这里的 IP 如下。

1
2
3
Windows 主机 IP : 192.168.1.158
Ubuntu 虚拟机 IP: 192.168.1.194
开发板 IP : 192.168.1.192

这里和上面都是一样的,这里就不重复写了。

2.7 小结

防火墙设置:关闭电脑和虚拟机的防火墙。

网络连接:开发板网口和电脑网口都通过网线直接连到同个路由器。

VMware 设置:设置网络适配器桥接模式,虚拟网络编辑器还原默认设置。

Ubuntu 设置:设置网络连接模式为自动(DHCP)。

Windows 设置:设置以太网 TCP/IPv4 属性为自动获取 IP 地址。

开发板设置:出厂系统默认会自动获取 IP,没有这个功能的话可以执行以下指令获取 IP。

1
2
>ifconfig eth0 up
>udhcpc -i eth0