开发板直连电脑的搭建网络环境(以正点原子阿尔法imx6ull开发板为讲解)

首先特别鸣谢这位博主的讲解: 开发板直连电脑的搭建网络环境(以正点原子阿尔法imx6ull开发板为讲解)_开发板网口连接电脑-CSDN博客
但是这位博主讲解的还是有点不太详细,我复刻起来特别麻烦,所以我打算写一篇更详细的讲解

我会先讲怎么做,如果你想知道远离就继续看

校园网是可以用的但不推荐

如果你只想 虚拟机 ping ubuntu

先设置setenv

打开好putty或securecrt的imx控制终端后按复位一直按任意按键进入他的uboot配置环节

输入:

setenv ipaddr=192.168.10.101
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
网关(Gateway)的配置是否有用,取决于你的 网络通信需求------ 在简单的 "开发板↔虚拟机" 直连场景中可能没用,但在需要 "跨网段通信" 或 "访问互联网" 时,网关是必需的。
setenv netmask 255.255.255.0

saveenv

然后重启

开发板就准备好了下面继续

你先打开网络适配器,尝试拔插网线看看那根网线是哪一个适配器

然后打开虚拟机:先关机

再打开设置

再点击添加,加一根网络适配器

添加好了,开始配置他

配置桥接模式

然后开机

代开网络设置

点击新的桥接的网络适配器

点击选项-》ipv4设置-》方法选择手动-》添加一个ip (这个ip一定要和开发板同网段也就是前三个都一样 192.168.10.XX)

现在就可以开始ping了
注意!只能在 uboot 中 ping 其他的机器,其他机器不能 ping uboot ,因为 uboot 没有对 ping
命令做处理,如果用其他的机器 ping uboot 的话会失败!

这样就成功了
当然如果你还想完成正点原子里DHCP ,nfs等功能就还要配置
再继续进入终端环境配置

设置:
setenv serverip 192.168.10.100

serverip 服务器 IP 地址,也就是 Ubuntu 主机 IP 地址,用于调试代码。

这样就可以了

下面来讲一下原理:你的imx6ull用网线连接到电脑,然后配置电脑适配器里的对应那根网线的ip,再配置linux虚拟机内部添加一个网线桥接到这个网线上就能让开发板和虚拟机ping通

核心是搞懂 "网络链路打通""IP 地址互通" 两个关键环节 ------ 前者靠 "桥接" 解决设备间的物理通信问题,后者靠 "静态 IP 配置" 解决逻辑寻址问题。下面分步骤拆解原理,从硬件连接到软件配置逐一讲透:

一、先明确核心网络组件及连接关系

首先要理清你这套环境里的 "设备" 和 "链路",这是理解原理的基础。你的组网本质是一个 "微型局域网(LAN)",组件和连接如下:

网络组件 核心作用 物理连接方式
正点原子 IMX6ULL 目标设备(运行 Linux 系统或uboot,需与虚拟机通信) 用网线直连电脑的网口
电脑(物理机) 扮演 "中间链路载体"+"网络配置入口" 1. 网口连开发板;2. 运行虚拟机
Linux 虚拟机 目标通信设备(需访问开发板) 无物理网线,靠 "桥接" 虚拟链路
网线 传输开发板与电脑之间的以太网数据帧 直连开发板网口 ↔ 电脑网口

经过上面的链接,那电脑,开发板,虚拟机就通过网线和网络适配器桥接拼在了一个局域网内,三者之中任意两个通信都是直接通信不用转接经过第三者是直接通信!!!!!

二、第一步:为什么要配置 "电脑网口的 IP"?------ 解决 "开发板与电脑的链路基础"

开发板通过网线直连电脑后,二者最初是 "物理连通但逻辑不通" 的 ------ 就像两个人拉了根电线,但没约定 "怎么喊对方"(没有 IP 地址,无法定位)。

1. 电脑网口的角色:从 "默认自动获取" 到 "手动静态 IP"

电脑的网口默认是 "自动获取 IP(DHCP)",但你的场景里没有 "路由器"(DHCP 服务器),所以电脑网口会处于 "无 IP 状态"(比如 Windows 里显示 "未识别的网络")。此时开发板就算配置了 IP,也找不到电脑(因为电脑没有 "逻辑地址")。

2. 配置电脑网口静态 IP 的目的

你手动给电脑网口设一个固定 IP(比如 192.168.1.100,子网掩码 255.255.255.0),本质是:

  • 给电脑的这个网口分配一个 "局域网内的唯一地址",让开发板能 "找到它";
  • 约定子网掩码,明确 "哪些 IP 属于同一个局域网"(比如 192.168.1.x 都在一个网段,能直接通信)。
3. 开发板的 IP 配置逻辑

你需要给开发板也配置一个 "和电脑网口同网段的静态 IP" (比如 192.168.1.200,子网掩码 same)。此时:

  • 开发板和电脑网口处于 "同一局域网段",满足 "直接通信的前提"(同一网段内设备无需路由器,可通过 ARP 协议找到对方的物理地址);
  • 此时开发板能 ping 通电脑的网口 IP(比如 192.168.1.100),说明 "开发板↔电脑" 的链路已通。

三、第二步:为什么要给虚拟机 "桥接" 到电脑网口?------ 解决 "虚拟机与开发板的链路打通"

Linux 虚拟机默认的网络模式(比如 "NAT 模式")是无法直接和开发板通信的,核心问题是 "虚拟机的网络是'隔离'的"。而 "桥接模式" 的作用,就是把虚拟机 "接入到开发板所在的局域网"。

1. 先搞懂:虚拟机的 "网络模式" 差异(为什么 NAT 不行?)

虚拟机的网络不是直接连物理网线,而是靠 VMware/VirtualBox 等软件 "虚拟出网卡",不同模式决定了虚拟机的网络可达范围:

  • NAT 模式(默认) :虚拟机的 IP 是 "虚拟机软件私有的网段"(比如 192.168.200.x),只能和物理机通信,无法直接访问物理机网口连接的其他设备(比如开发板)------ 相当于虚拟机在 "物理机的小房间里",看不到外面的开发板。
  • 桥接模式(你用的) :虚拟机的虚拟网卡会 "桥接" 到物理机的某个网口(就是你连开发板的那个网口),相当于 "虚拟机直接插在了这根网线上"------ 此时虚拟机和开发板、电脑网口处于 "同一个物理链路、同一个局域网"
2. 桥接模式的本质:"让虚拟机成为局域网的一员"

桥接模式的工作原理,可以理解为在物理机内部做了一个 "虚拟交换机":

  • 物理机的网口(连开发板)、虚拟机的虚拟网卡,都被接入到这个 "虚拟交换机" 上;
  • 此时,虚拟机就像一台 "独立的物理电脑",直接连在 "开发板↔电脑网口" 的网线上,拥有和它们同网段的 IP 地址,就能直接通信。
3. 虚拟机的 IP 配置:必须和 "开发板 / 电脑网口" 同网段

桥接后,你需要给 Linux 虚拟机也配置一个 "同网段的静态 IP" (比如 192.168.1.150,子网掩码 same)。此时:

  • 虚拟机、电脑网口、开发板,三者的 IP 都在 192.168.1.x 网段,属于 "同一个局域网";
  • 虚拟机可以通过 ARP 协议找到开发板的物理地址(MAC),开发板也能找到虚拟机,二者自然能 ping 通。

四、整体流程总结:从 "不通" 到 "通" 的完整链路

把上面的步骤串起来,就是你这套环境能 ping 通的完整逻辑:

  1. 物理链路连通:用网线直连开发板网口 ↔ 电脑网口,确保硬件层面无故障(网线、网口正常);
  2. 电脑网口 IP 配置 :给电脑网口设静态 IP(如 192.168.1.100),让它成为局域网的 "基础节点";
  3. 开发板 IP 配置 :给开发板设同网段静态 IP(如 192.168.1.200),此时开发板↔电脑网口能 ping 通;
  4. 虚拟机桥接配置:将虚拟机网络模式设为 "桥接",并指定桥接到 "连开发板的电脑网口",让虚拟机接入该局域网;
  5. 虚拟机 IP 配置 :给虚拟机设同网段静态 IP(如 192.168.1.150),此时虚拟机↔开发板、虚拟机↔电脑网口均能 ping 通。

五、关键验证点:帮你确认每一步是否正确

如果后续出现 ping 不通的问题,可以按以下步骤排查,本质就是验证 "链路" 和 "IP" 是否正常:

  1. 开发板 ping 电脑网口 IP:验证 "开发板↔电脑" 链路(若不通,检查网线、双方 IP / 子网掩码是否同网段);
  2. 虚拟机 ping 电脑网口 IP:验证 "虚拟机桥接是否成功"(若不通,检查桥接模式是否选对网口、虚拟机 IP 是否同网段);
  3. 虚拟机 ping 开发板 IP:最后验证 "目标链路"(前两步通,这步基本通;若不通,检查开发板防火墙是否关闭)。

通过以上逻辑,核心就是 "让三个设备(开发板、电脑网口、虚拟机)处于同一个局域网段,且链路无隔离"------ 桥接解决了 "链路隔离" 问题,静态 IP 解决了 "逻辑寻址" 问题,二者结合就实现了 ping 通。

uboot 中的serverip是一个专用调试参数 ,仅用于 uboot 阶段的特定功能(比如通过 tftp 下载内核、镜像文件),和 "开发板与虚拟机 ping 通" 属于完全独立的网络场景 ,这就是为什么serverip配置错误也不影响 ping 通的核心原因。

一、先明确serverip的真实作用:仅服务于 uboot 的调试功能

serverip是 uboot 环境变量中用于指定 **"服务器 IP"的参数,但这个 "服务器" 特指在 uboot 阶段通过 tftp、nfs** 等协议传输文件时的目标主机(通常就是你的 Ubuntu 虚拟机)。

它的作用场景非常有限,比如:

  • 你在 uboot 命令行执行tftpboot 0x80800000 zImage(从服务器下载内核镜像到开发板内存);
  • 此时 uboot 会根据serverip的值(比如你设置的 Ubuntu 虚拟机 IP),去连接这个 IP 对应的主机,获取文件。

如果serverip配置错误(比如填成了无关的 IP),只会导致 tftp/nfs 传输失败,但不会影响开发板的操作系统(比如 Linux 内核启动后)与虚拟机的网络通信。

二、为什么serverip不对,开发板和虚拟机还能 ping 通?

开发板与虚拟机 ping 通,依赖的是开发板操作系统(Linux)的网络配置 ,而非 uboot 的serverip,二者的网络环境完全独立:

对比维度 uboot 的serverip 开发板与虚拟机 ping 通的依赖
生效阶段 仅在 uboot 启动阶段(操作系统启动前)生效 在开发板的 Linux 系统启动后才生效
依赖的 IP 配置 仅依赖 uboot 环境变量中的serveripipaddr(开发板自身 IP) 依赖开发板 Linux 系统中的 IP(比如/etc/network/interfaces配置)和虚拟机的 IP
网络协议栈 基于 uboot 内置的简易协议栈(仅支持 tftp、arp 等基础功能) 基于 Linux 完整的网络协议栈(支持 ping、tcp、udp 等所有网络功能)

简单说:

  • serverip是 uboot "临时用" 的参数,就像你在 "开机启动界面" 设置的临时服务器地址;
  • 开发板启动进入 Linux 系统后,会用自己的系统 IP(比如通过ifconfig配置的 IP)与外界通信,此时serverip早已 "失效",自然不影响 ping 通虚拟机。

三、什么时候需要正确配置serverip

只有当你需要在uboot 阶段进行调试操作 时,serverip才需要和 Ubuntu 虚拟机的 IP 一致,比如:

  1. 通过 tftp 从虚拟机下载内核镜像到开发板;
  2. 通过 nfs 挂载虚拟机的目录,直接从网络启动开发板;
  3. 在 uboot 命令行用ping ${serverip}测试 uboot 阶段到虚拟机的连通性(注意:这是 uboot 的 ping,和 Linux 系统的 ping 是两回事)。

如果这些操作你暂时用不到,serverip配置错误不会对 "开发板 Linux 系统与虚拟机 ping 通" 产生任何影响。

总结

serverip是 uboot 阶段专用的 "调试服务器地址",而开发板与虚拟机 ping 通依赖的是开发板 Linux 系统的 IP 配置 ,二者分属不同阶段、不同网络环境,因此serverip配置错误不影响 ping 通是完全正常的。

如果后续需要用 tftp/nfs 调试,只需在 uboot 命令行用setenv serverip 192.168.10.100(你的虚拟机 IP)配置正确即可,不影响已经正常工作的 ping 通信。

一、先明确:网关的核心作用是什么?

网关本质是一个 **"网络中转站"**,用于解决 "不同网段设备之间的通信" 问题。当设备要发送数据到 "非自身网段" 的 IP 时,会把数据交给网关,由网关转发到目标网段。

举个生活例子:你(192.168.10.200)要给另一个小区的朋友(192.168.20.30)寄快递,自己小区的快递点(网关 192.168.10.1)会帮你转发到对方小区的快递点,最后送到朋友手里。

二、你的场景中,网关配置 "可能有用,也可能没用"

1. 仅需要 "开发板、电脑、虚拟机三者互 ping"------ 网关配置没用

你的核心需求如果只是这三个设备在同一网段(比如 192.168.10.x)互 ping:

  • 它们属于 "同一局域网",数据可以直接通过网线 / 桥接链路传输(靠 ARP 协议找对方 MAC 地址),不需要 "中转站";
  • 此时即使不配置网关(或配置错误),三者依然能正常 ping 通 ------ 因为它们不需要跨网段通信。
2. 如果你有这些需求 ------ 网关配置必须正确

当通信涉及 "跨网段" 或 "互联网" 时,网关就变得必不可少:

  • 开发板需要访问虚拟机所在网段之外的设备(比如开发板 IP 是 192.168.10.200,要访问 192.168.20.30 的设备);
  • 开发板需要连接互联网 (比如用wget下载网上的代码、apt安装软件);
  • 虚拟机需要通过开发板访问其他网络(比如开发板连了 4G 模块,虚拟机要通过开发板上的网)。

此时必须给开发板配置正确的网关 IP(通常是 "能连接到目标网段的设备 IP",比如路由器的 IP 192.168.10.1),否则数据会 "找不到路",出现 "目标不可达" 错误。

三、补充:uboot 和 Linux 系统的网关配置是两回事

serverip类似,网关配置也分阶段:

  • uboot 阶段 :有一个gatewayip环境变量,仅用于 uboot 阶段的跨网段调试(比如从其他网段的 tftp 服务器下载文件);
  • Linux 系统阶段 :网关配置通常在/etc/network/interfaces/etc/sysconfig/network-scripts/ifcfg-eth0中,用于系统启动后的跨网段通信。

两者互不影响,比如 uboot 的gatewayip配置错误,只会影响 uboot 阶段的跨网段操作,不影响 Linux 系统的网关功能。

相关推荐
URBBRGROUN4673 小时前
Streamable HTTP
网络·网络协议·http
心想事成的幸运大王3 小时前
HTTP 协议核心组件与安全扩展深度解析
网络·网络协议·http
MoloXuanhe5 小时前
[TryHackMe]Oh My WebServer(nday漏洞+容器逃逸)
运维·网络·tryhackme·thm
FreeBuf_9 小时前
普渡外卖机器人存在安全漏洞,黑客可劫持送餐路径
网络·安全·机器人
博睿谷IT99_11 小时前
以 R1 为视角,手把手教你画 OSPF 最短路径树与推导路由表
网络·华为·智能路由器·华为认证·it·ospf·拓扑图
贝锐11 小时前
分公司、工厂、出差人员远程访问办公系统,如何安全稳定又省钱?
网络
relis12 小时前
USB4与PCIe的技术融合:新一代接口协议的架构革新
网络·架构
月光在发光15 小时前
03_网关ip和端口映射(路由器转发)操作和原理
网络·tcp/ip·智能路由器
绵绵细雨中的乡音15 小时前
简易TCP网络程序
linux·网络