摘要:

本文记录了在 i.MX6ULL 开发板上进行网络环境搭建时的调试过程。主要涵盖:在没有专业测线仪的情况下如何验证网线好坏、PC与开发板的双机直连配置、以及双网口(eth0/eth1)同网段配置冲突与 ARP 缓存导致的 Ping 通故障排查。


一、 问题背景

在进行嵌入式 Linux 开发(如 i.MX6ULL 平台)时,网络是调试的基础。近期在调试过程中遇到了以下几个问题:

  1. 手头没有路由器,如何测试网线是否完好?

  2. 如何配置板卡 IP 实现与 PC 的直连?

  3. 核心问题: 双网口板卡,为何一个网口能通,另一个不通?为何切换网口后 Ping 不通?


二、 物理层验证:网线好坏的快速判断

在没有网络测试仪的情况下,利用“双机直连”法即可验证。

  1. 物理连接
    将网线一端连接 PC 网口,另一端连接开发板网口(现在的网卡支持 Auto MDI-X,无需交叉线)。

2.状态观测

  • 看灯: 连接后,观察网口指示灯(黄/绿)是否亮起。若不亮,大概率物理断路。
    在这里插入图片描述

  • 看 PC 状态: 此时 PC 会显示“未识别的网络”,但只要右下角图标不是红叉,说明物理链路已导通。

在这里插入图片描述

在这里插入图片描述


三、 配置层验证:ifconfig 与静态 IP

为了实现 Ping 测试,必须手动设置 IP,确保 PC 和开发板在同一网段。

  • PC 端设置
    进入控制面板 -> 网络和共享中心 -> 更改适配器设置 -> 以太网属性 -> IPv4,手动设置为:
    在这里插入图片描述
    在这里插入图片描述

  • IP: 192.168.1.10

  • 掩码: 255.255.255.0

开发板端设置 (Linux)
使用 ifconfig 命令临时配置 IP(重启失效)

# 语法:ifconfig <网口> <IP> netmask <掩码> up
ifconfig eth0 192.168.1.20 netmask 255.255.255.0 up
  1. 验证
    在 PC 端 CMD 输入 ping 192.168.1.20,若能 Ping 通,说明硬件与驱动均正常。
    在这里插入图片描述

四、 进阶排查:双网口“互斥”与 IP 漂移陷阱

这是调试中最容易踩的坑。i.MX6ULL 通常有两个网口(eth0, eth1),在测试第二个网口时极易出现“假死”现象。

现象 1:双网口同网段冲突
操作:

  • eth0 设置为 192.168.1.20

  • eth1 设置为 192.168.1.21
    在这里插入图片描述

  • PC 设置为 192.168.1.10

结果: 此时只有 eth0 能通,或者两个都不稳定。 原因: Linux 路由表不支持两个网口处于同一网段(如都是 192.168.1.x)。系统不知道数据包该走哪个口出去,导致路由混乱。

解决方案: 测试 eth1 时,必须关闭 eth0,或者将两个网口设为不同网段(如 1.x 和 2.x)。

现象 2:IP 地址漂移后的“Ping 不通” (ARP 缓存)
场景描述: 我验证了 eth0 是好的,想测试 eth1。于是我执行了以下命令:


ifconfig eth0 down               # 关闭 eth0
ifconfig eth1 192.168.1.20 up    # 将 eth0 的 IP 赋予 eth1

随后我迅速将网线从 eth0 拔下插到 eth1,并在 PC 端 ping 192.168.1.20。

结果: Request timed out(请求超时)。

深度分析: 这不是 eth1 坏了,而是 ARP 缓存(ARP Cache) 在作祟。

  • 历史记录: PC 之前 Ping 通 eth0 时,在本地 ARP 表记录了:192.168.1.20 对应 MAC地址 A (eth0)。

  • 当前冲突: 此时 IP 虽然还是 192.168.1.20,但物理设备变成了 eth1,其物理地址是 MAC地址 B。

  • 通信失败: PC 依然按照“老黄历”,把数据包发向 MAC地址 A。eth1 收到数据包,发现目标 MAC 不是自己,直接丢弃。

解决方法:

  • 方法一(推荐): 等待 1-2 分钟,让 PC 的 ARP 缓存自动过期。

  • 方法二(暴力): 在 PC 管理员 CMD 中输入 arp -d 清除缓存。

  • 方法三(规避): 测试 eth1 时,换一个 IP(如 192.168.1.21),强制 PC 建立新的 ARP 条目。


五、常用命令

  1. 查看网络ip
##查看的更全面一点
ifconfig -a

2.关闭某个网口(以关闭eth0为例)

ifconfig eth0 down

3.开启某个网口(以开启eth0为例)

ifconfig eth0 down

4.配置某个网口的ip掩码

ifconfig eth0 192.168.1.20 netmask 255.255.255.0 up

5.测试网口就直接用ping命令就好啦。


如果该篇文章可以帮到你,我会很开心。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐