IMX6ULL驱动开发uboot篇02
目录
网络操作
第零步:先将网线跟电脑接好,打开串口连接到开发板上,然后上电,让UBoot停下来
第一步:查看我们的网线构成的虚拟子网是哪一个
第二步:我们必须把虚拟机的网卡模式从NAT改成桥接,因为我们要跟真实的开发板同处于一个子网
第三步:设置板子的IP,网关, MAC地址和子网掩码
uboot对NFS的支持
tftp指令
Boot系列指令
bootz
boot
网络操作
在开始之前,我需要说明一下如何设置我们的开发板这样才能Ping通。笔者之前的博客是针对一台上位机Linux的操作,这里说一下虚拟机咋搞
注意,这里说的是——开发板连接到电脑上,网络环境只有真实的Windows接入到笔者的校园网上。是准备把开发板介入到路由器的朋友请参考其他人的博客
第零步:先将网线跟电脑接好,打开串口连接到开发板上,然后上电,让UBoot停下来
第一步:查看我们的网线构成的虚拟子网是哪一个
一个办法,跑到网络适配器那里,你插拔网线,注意每一个有线网的状态如何。比如说,笔者插拔网线,发现下面这个会从“未连接的网络”跟“未识别的网络”中来回变化。那说明就是这个了。

下一步,去看看ip:
Ethernet adapter 以太网:Connection-specific DNS Suffix . :Link-local IPv6 Address . . . . . : fe80::c5ef:6ad6:813f:6ca%7IPv4 Address. . . . . . . . . . . : 192.168.137.1Subnet Mask . . . . . . . . . . . : 255.255.255.0Default Gateway . . . . . . . . . :
可以看到,我们的Windows在这个网线构成的子网中被分派了192.168.137.1,网关没有设置,这个无所谓。
第二步:我们必须把虚拟机的网卡模式从NAT改成桥接,因为我们要跟真实的开发板同处于一个子网
笔者这里详细展开说明VMWare NAT/桥接的区别了,大概就是:NAT办法讲虚拟机及其虚拟的设备组成一个虚拟的子网,我们主机/开发板没办法直接跟虚拟机对话,必须走虚拟机的NAT表转换才能访问虚拟机本身。这样的话,我们实际上没法直接板子ping到Ubuntu上。所以必须要改。
把我们的虚拟机设置改成这个,这个就是上面的网线组成虚拟子网的名称。

下一步就是修改Ubuntu的IP了,注意,这个子网是不具备IP分配功能的,为了简便期间,我们就直接给我们的Ubuntu一个静态IP。

比如说,笔者在Windows上就查询到笔者的Windows在这个子网中被分配到了IP:192.168.137.1,那么,我们这里就随意填写一个192.168.137.10. 当然不是真的随意,正确的做法是先ping一下这个ip有没有被占用,如果没有回应,就说明设备可以在这里占用这个ip。至于网关,按照默认的规矩,我们写192.168.137.1,Netmask子网掩码那就是255.255.255.0,要跟网线给出的设置一致最好。说明这个网线最大支持搜索254个设备。(1是gateway,255是广播,所以之后的开发板不要设置成这两个)。
点击保存后,我们看一下网卡的IP有没有被设置成功:
charliechen@ubuntu:~$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:74:eb:32 brd ff:ff:ff:ff:ff:ffinet 192.168.137.10/24 brd 192.168.137.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::6e1d:7cee:2940:cb3d/64 scope link valid_lft forever preferred_lft forever
我们尝试ping一下Windows主机。虽然实际上我们的Windows主机本身充当了网关:
charliechen@ubuntu:~$ ping 192.168.137.1 -c 4 PING 192.168.137.1 (192.168.137.1) 56(84) bytes of data. 64 bytes from 192.168.137.1: icmp_seq=1 ttl=128 time=0.363 ms 64 bytes from 192.168.137.1: icmp_seq=2 ttl=128 time=0.525 ms 64 bytes from 192.168.137.1: icmp_seq=3 ttl=128 time=0.431 ms 64 bytes from 192.168.137.1: icmp_seq=4 ttl=128 time=0.452 ms --- 192.168.137.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3075ms rtt min/avg/max/mdev = 0.363/0.442/0.525/0.063 ms
在Windows上,我们测试一下能不能ping通Ubuntu:
➜ ping 192.168.137.10 Pinging 192.168.137.10 with 32 bytes of data: Reply from 192.168.137.10: bytes=32 time<1ms TTL=64 Reply from 192.168.137.10: bytes=32 time<1ms TTL=64 Reply from 192.168.137.10: bytes=32 time<1ms TTL=64 Reply from 192.168.137.10: bytes=32 time<1ms TTL=64 Ping statistics for 192.168.137.10:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds:Minimum = 0ms, Maximum = 0ms, Average = 0ms
非常好!
第三步:设置板子的IP,网关, MAC地址和子网掩码
注意,网关和子网掩码要求必须跟我们的网线是完全一致的。MAC地址呢,实际上只要求子网内唯一即可。这里我们顺用正点原子给出的MAC地址就好了
setenv ethaddr b8:ae:1d:01:00:00
需要保证的是这个MAC地址是子网唯一的。
=> setenv gatewayip 192.168.137.1 => setenv netmask 255.255.255.0
不要照抄,看自己的网线!
=> setenv ipaddr 192.168.137.4
这个就是设置我们板子的IP了。注意的是,我们需要保证我们的板子跟我们的子网内,看一下我们设置的gatewayip和netmask,所以能修改的就是最后一个数字,且不可以是1, 255,Windows占用的IP和Ubuntu虚拟机占用的IP。这里笔者就随意的给了个4。
需要提醒的是——不要试图其他主机去ping我们的板子,你ping不到的,我们的uboot不会处理,也没有必要处理ICMP请求包,所以,他就是只能够单向的作为发起请求的一方。笔者不知道这一点,折腾了半个小时
很好,现在我们试一下ping不ping的通:
=> ping 192.168.137.1 Using FEC1 device host 192.168.137.1 is alive => ping 192.168.137.10 Using FEC1 device host 192.168.137.10 is alive
OK,现在我们可以做实验了。
uboot对NFS的支持
笔者又要说明的是——如果你使用的是高版本的Ubuntu,或者内核版本大于6.2的情况下,正点原子使用的UBoot是不支持NFSv2的,需要做修改,24.04的版本更是直接废掉了NFS,只允许TFTP,所以,如果你是Ubuntu24.04用户,就直接看tftp即可
uboot的NFS指令非常的直白,就是nfs
=> ? nfs nfs - boot image via network using NFS protocol Usage: nfs [loadAddress] [[hostIPaddr:]bootfilename]
下面我们尝试传送一个zImage玩玩先。
还没有配置nfs的朋友需要先在Ubuntu上配置一下nfs,设置好nfs的操作共享目录之后,把我们的zImage或者啥文件拷贝到那个文件夹下,笔者是直接拿了正点编译好的zImage过来
虽说默认的,我们的uboot的上传默认地址就是0x80800000,但是这不太明晰,我们一般会写出来我们要放到那个地方。其次就是我们的被传送文件的路径,格式是:IP:AbsPath,必须是绝对路径,~是针对用户而言的,uboot肯定不知道你这个~是啥意思。
=> nfs 0x80800000 192.168.137.10:/home/charliechen/linux/nfs/zImage Using FEC1 device File transfer via NFS from server 192.168.137.10; our IP address is 192.168.137.4; sending through gateway 192.168.137.1 Filename '/home/charliechen/linux/nfs/zImage'. Load address: 0x80800000 Loading: ###################################################################################################################################################################################################...########################## done Bytes transferred = 6785480 (6789c8 hex)
出于严谨,我们对比一下到底是不是发生了传送:
=> md.b 80800000 100 80800000: 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1 ................ 80800010: 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1 ................ 80800020: 03 00 00 ea 18 28 6f 01 00 00 00 00 c8 89 67 00 .....(o.......g. 80800030: 01 02 03 04 00 90 0f e1 e8 04 00 eb 01 70 a0 e1 .............p.. 80800040: 02 80 a0 e1 00 20 0f e1 03 00 12 e3 01 00 00 1a ..... .......... 80800050: 17 00 a0 e3 56 34 12 ef 00 00 0f e1 1a 00 20 e2 ....V4........ . 80800060: 1f 00 10 e3 1f 00 c0 e3 d3 00 80 e3 04 00 00 1a ................ 80800070: 01 0c 80 e3 0c e0 8f e2 00 f0 6f e1 0e f3 2e e1 ..........o..... 80800080: 6e 00 60 e1 00 f0 21 e1 09 f0 6f e1 00 00 00 00 n.`...!...o..... 80800090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 808000a0: 0f 40 a0 e1 3e 43 04 e2 02 49 84 e2 0f 00 a0 e1 .@..>C...I...... 808000b0: 04 00 50 e1 ac 01 9f 35 0f 00 80 30 00 00 54 31 ..P....5...0..T1 808000c0: 01 40 84 33 6d 00 00 2b 5e 0f 8f e2 4e 1c 90 e8 .@.3m..+^...N... 808000d0: 1c d0 90 e5 01 00 40 e0 00 60 86 e0 00 a0 8a e0 ......@..`...... 808000e0: 00 90 da e5 01 e0 da e5 0e 94 89 e1 02 e0 da e5 ................ 808000f0: 03 a0 da e5 0e 98 89 e1 0a 9c 89 e1 00 d0 8d e0 ................

嗯,一眼扫过去没毛病。
tftp指令
我们还要做的一个事情就是搭建tftp环境,这个是所有版本的ubuntu协议都可以用的。这里简单的说一下如何搭建tftp服务。
上面我们刚刚切换到的桥接模式要改回来可以上网的NAT,然后可能需要重启一下ubuntu,我没重启,发现可以直接上网,当然如果发现上不了网,重启一下ip addr看看ip有没有恢复
sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd
下一步就是建立一个tftp文件夹,笔者建立在了:/home/charliechen/linux/tftp,然后需要
-
创建一个配置文件:
sudo gedit /etc/xinetd.d/tftp,然后需要将自己的server_args指向的文件夹改成自己打算设置成的tftp协议文件夹
# /etc/xinetd.d/tftp
server tftp
{ socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /home/charliechen/linux/tftp/ disable = no per_source = 11 cps = 100 2 flags = IPv4
}
然后记得重启,看看配置是否成功,ubuntu service指令中
sudo service tftpd-hpa start
sudo service tftpd-hpa status
查看一下服务的状态是一个很好的习惯,不要开了就拍拍屁股走人了。
/etc/default/tftpd-hpa这个文件是已经存在的,我们改一下TFTP_DIRECTORY就好了,还是指向我们的tftp文件夹。
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/charliechen/linux/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
老样子,我们把我们的/home/charliechen/linux/tftp的权限改成777(之前不信邪,发现就是这个管用,不然死活permission denied,看来有时间必须好好理解一下tftp协议了)
=> tftp 80800000 zImage Using FEC1 device TFTP from server 192.168.137.10; our IP address is 192.168.137.4 Filename 'zImage'. Load address: 0x80800000 Loading: ###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################2.2 MiB/s done Bytes transferred = 6785480 (6789c8 hex)
注意,这个协议比较简单,uboot会操作主机直接到我们设置的serverip指向的设备,查找其tftp根目录下的文件下载过来
-rw-rw-r-- 1 charliechen charliechen 6785480 Mar 6 04:21 zImage
这个协议下面的文件只需要保证可读即可。所以没必要拉满权限,但是tftp文件夹是需要的。
Boot系列指令
bootz
要启动Linux,需要先将 Linux 镜像文件拷贝到 DRAM 中,如果使用到设备树的话也需要将设备树拷贝到 DRAM 中。可以从 EMMC 或者NAND 等存储设备中将Linux 镜像和设备树文 件拷贝到 DRAM,也可以通过 nfs 或者 tftp 将 Linux 镜像文件和设备树文件下载到 DRAM 中
Usage: bootz [addr [initrd[:size]] [fdt]]- boot Linux zImage stored in memory
比如说,我们可以尝试启动一下:
tftp 80800000 zImage tftp 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb bootz 80800000 - 83000000
可以看到我们可以启动成功板子的,但是可惜的是没有根文件系统,无法完全启动。
boot
boot 命令也是用来启动Linux 系统的,只是 boot 会读取环境变量 bootcmd 来启动 Linux 系 统,bootcmd 是一个很重要的环境变量!其名字分为“boot”和“cmd”,也就是“引导”和“命 令”,说明这个环境变量保存着引导命令,其实就是启动的命令集合,具体的引导命令内是可以修改的。
换而言之,我们的boot就相当于一个启动集合指令。这里就不再赘述了,直接给出来一个模板,一看就懂:
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb; bootz 80800000 - 83000000' saveenv boot
相关文章:
IMX6ULL驱动开发uboot篇02
目录 网络操作 第零步:先将网线跟电脑接好,打开串口连接到开发板上,然后上电,让UBoot停下来 第一步:查看我们的网线构成的虚拟子网是哪一个 第二步:我们必须把虚拟机的网卡模式从NAT改成桥接,…...
智谱AI-FunctionCall
智谱AI-FunctionCall 编写FuncationCall大模型的函数调用,先直观的感受一下的感受下FunctionCall的魅力 文章目录 智谱AI-FunctionCall[toc]1-参考网址2-思路整理3-代码拆件1-[非核心]两个业务函数2-[非核心]业务函数的JsonSchema定义3-[核心]FunctionCall的调用1-打…...
数据保险箱:备份文件的关键价值与自动化实践
在信息化社会,数据已经成为我们生活、工作和学习的核心组成部分。无论是企业机密、个人隐私,还是创意作品、研究数据,它们都以数字形式存在于我们的电子设备中。然而,数据如同脆弱的玻璃制品,稍有不慎就可能面临丢失或…...
数字电路基础——逻辑门
逻辑门是数字电子技术中的基本构建块。这些组件用于对1和0进行操作,可以将它们组合起来创建其他构建块,并设计出如锁存器、触发器、加法器、移位寄存器等电路。 七种主要的逻辑门类型: 一、基本逻辑门 1.1 与门(AND gate) 1.1.1 逻辑运算规则 与门有多个输入端和一个输出…...
爬虫逆向:脱壳工具BlackDex的详细使用
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、BlackDex简介二、下载与安装三、基本使用步骤3.1 启动BlackDex3.2 导入目标APK文件3.3 开始脱壳3.4 查看脱壳结果四、后续分析4.1 使用 JADX 反编译 Dex 文件4.2 使用 Apktool 反编译 Dex 文件4.3 JD-GUI4.4 dex2ja…...
JavaScript中的Math()
目录 一、Math() 1.1floor() 1.2ceil() 1.3round() 1.4random() 1.5max() 1.6min() 1.7pow() 1.8sqrt() 1.9trunc() 二、parseFloat() 三、toFixed() 四、toString() 4.1Number类型转换为字符串 4.2Boolean类型转换为字符串 4.3Date()类型转换为字符串 4.4Arr…...
深度学习模型Transformer初步认识整体架构
第一章:人工智能之不同数据类型及其特点梳理 第二章:自然语言处理(NLP):文本向量化从文字到数字的原理 第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码) 第四章:循环神经网络RNN、LSTM以及GR…...
【从模仿到超越:AIGC的崛起与AGI的终极梦想】
一、基本概念 1. AIGC(人工智能生成内容) 定义:基于人工智能技术生成文本、图像、音频、视频等数字内容的方法。技术基础:依赖深度学习模型(如GPT、DALL-E、Stable Diffusion)和自然语言处理(…...
标量、向量、矩阵与张量:从维度理解数据结构的层次
在数学和计算机科学中,维度描述了数据结构的复杂性,而标量、向量、矩阵、张量则是不同维度的数据表示形式。它们的关系可以理解为从简单到复杂的扩展,以下是详细解析: 1. 标量(Scalar):0维数据 …...
windows 上删除 node_modules
在 Windows 11 上,你可以通过命令行来删除 node_modules 文件夹并清除 npm 缓存。以下是具体步骤: 删除 node_modules 打开命令提示符(Command Prompt)或终端(PowerShell)。 导航到项目目录。你可以使用 …...
单例模式的五种实现方式
1、饿汉式 ①实现:在类加载的时候就初始化实例 ②优点:线程安全 ③缺点:实例在类加载的时候创建,可能会浪费资源 //饿汉式 public class EagerSingleton{private EagerSingleton(){} //私有构造方法private static EagerSingle…...
启智平台华为昇腾910B使用MS-Swift微调Janus-Pro-7/1B
最近想要微调一下DeepSeek出品的Janus多模态大模型 利用启智平台的昇腾910B国产计算卡进行大模型的微调 查看了一下MS-Swift支持了Janus模型的微调,LLamafactory好像暂时还不支持该模型的微调 看到了MS-Swift有单独对昇腾的支持,因此首先要安装swift&…...
蓝桥试题:传球游戏(二维dp)
一、题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。 游戏规则是这样的:n 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球࿰…...
迷你世界脚本小地图接口:Mapmark
小地图接口:Mapmark 彼得兔 更新时间: 2023-10-25 10:33:48 具体函数名及描述如下: 序号 函数名 函数描述 1 newShape(...) 新增一个形状(线,矩形,圆形) 2 deleteShape(...) 删除一个形状 3 setShapeColor(...) 设置…...
从零开始在Windows使用VMware虚拟机安装黑群晖7.2系统并实现远程访问
文章目录 前言1.软件准备2. 安装VMware17虚拟机3.安装黑群晖4. 安装群晖搜索助手5. 配置黑群晖系统6. 安装内网穿透6.1 下载cpolar套件6.2 配置群辉虚拟机6.3 配置公网地址6.4 配置固定公网地址 总结 前言 本文主要介绍如何从零开始在Windows系统电脑使用VMware17虚拟机安装黑…...
Qt6.8.2创建WebAssmebly项目使用FFmpeg资源
Qt6新出了WebAssmebly功能,可以将C写的软件到浏览器中运行,最近一段时间正在研究这方便内容,普通的控件响应都能实现,今天主要为大家分享如何将FFmpeg中的功能应用到浏览器中。 开发环境:window11,Qt6.8.2…...
Java阻塞队列深度解析:高并发场景下的安全卫士
一、阻塞队列的核心价值 在电商秒杀系统中,瞬时涌入的10万请求如果直接冲击数据库,必然导致系统崩溃。阻塞队列如同一个智能缓冲带,通过流量削峰和异步解耦两大核心能力,成为高并发系统的核心组件。 二、Java阻塞队列实现类对比 …...
软件信息安全性测试流程有哪些?专业软件测评服务机构分享
在数字化时代,软件信息安全性测试的重要性愈发凸显。尤其是对于企业来说,确保软件的安全性不仅是维护用户信任的关键,也是满足合规要求的必要条件。 软件信息安全性测试是指通过一系列系统化的测试手段,评估软件应用在受到攻击时…...
Linux - 网络基础(应用层,传输层)
一、应用层 1)发送接收流程 1. 发送文件 write 函数发送数据到 TCP 套接字时,内容不一定会立即通过网络发送出去。这是因为网络通信涉及多个层次的缓冲和处理,TCP 是一个面向连接的协议,它需要进行一定的排队、确认和重传等处理…...
C++11新特性:auto遇上const时的推导规则
当auto推导变量类型时,const修饰符会影响推导结果,我们具体看一下有哪些影响 1、普通变量 例如: const int ci 42; auto a ci; // a 的类型是 int (顶层 const 被忽略) const auto ca ci; // ca 的类型是 const int (顶层 const 被…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
