【EC200N-CN——Linux驱动移植】问题回顾
【EC200N-CN——Linux驱动移植】问题回顾
- 1)、开发回顾
- 一、问题回顾与解决过程
- 二、核心原理分析
- 1. **USB设备识别的关键:VID/PID**
- 2. **为什么之前不生成`ttyUSB`节点?**
- 3. **为什么添加PID后就能生成节点?**
- 三、日志关键信息解读
- 1. **USB设备识别日志**
- 2. **端点(Endpoint)配置修正**
- 3. **网络接口注册**
- 4. **串口节点生成**
- 四、技术细节详解
- 1. **为什么能通过`ttyUSB2`发AT指令?**
- 2. **为什么能通过`usb0`上网?**
- 3. **为什么不需要修改内核配置?**
- 五、总结与拓展
- 1. **问题根源**
- 2. **EC200N-CN的接口功能**
- 3. **测试验证方法**
- 4. **潜在优化方向**
- 2)开发中遇到问题的详细解析(重点!)
- 一、核心问题解析
- 1. **为什么初始状态下直接插上EC200N-CN模块就能上网(`ping www.baidu.com`),但不能发短信/打电话?**
- 2. **为什么添加`USB_DEVICE(0x2C7C, 0x6002)`后功能正常?**
- 二、专业术语全称与解释
- 1. **关键术语解析**
- 2. **其他重要概念**
- 三、日志逐行分析
- 1. **USB设备检测**
- 2. **速度警告**
- 3. **端点配置修复**
- 4. **网络接口注册**
- 5. **串口节点生成**
- 四、总结
- 1. **功能实现流程**
- 2. **关键结论**
1)、开发回顾
一、问题回顾与解决过程
问题背景:
IMX8开发板运行Linux 5.4内核,插入EC200N-CN模块后,仅生成usb0网络接口,但未生成串口节点(如ttyUSB0、ttyUSB1等),导致无法通过AT指令控制模块(如打电话、发短信)。
最终解决方案:
在Linux内核的option.c(路径:/home/hugo/IMX8/Kernel/Linux-5.4.70/drivers/usb/serial/opticon.c)驱动代码中的usb_device_id option_ids[]数组,添加EC200N-CN的USB设备标识符:
{ USB_DEVICE(0x2C7C, 0x6002) }, // EC200N-CN的VID/PID
{ USB_DEVICE_AND_INTERFACE_INFO(0x2C7C, 0x6002, 0xff, 0xff, 0xff) }

添加后,模块插入时生成ttyUSB0、ttyUSB1、ttyUSB2节点,并可通过usb0上网。
二、核心原理分析
1. USB设备识别的关键:VID/PID
• VID(Vendor ID):厂商标识符(Quectel的VID是0x2C7C)。
• PID(Product ID):产品标识符(EC200N-CN的PID是0x6002)。
• 驱动匹配规则:内核通过VID/PID匹配对应的驱动程序。若未在驱动代码中声明支持的VID/PID,设备将无法被正确驱动。
2. 为什么之前不生成ttyUSB节点?
• 原因:原内核的option.c驱动未包含EC200N-CN的PID 0x6002,导致内核误认为该设备不需要串口驱动,仅加载了网络驱动(cdc_ether)。
• 结果:仅生成usb0网络接口,无串口节点。
3. 为什么添加PID后就能生成节点?
• 驱动绑定:添加PID后,内核的option驱动会主动接管设备,并为每个串口接口创建ttyUSB节点。
• 多接口设备:EC200N-CN是一个复合设备,包含:
• 接口1:cdc_ether(网络功能,生成usb0)。
• 接口2/3/4:串口功能(生成ttyUSB0、ttyUSB1、ttyUSB2)。
三、日志关键信息解读
1. USB设备识别日志
[ 2671.047488] usb 1-1.3: new full-speed USB device number 11 using ci_hdrc
• 含义:检测到USB设备插入,总线位置为1-1.3,设备号为11。
2. 端点(Endpoint)配置修正
[ 2671.168245] usb 1-1.3: config 1 interface 1 altsetting 1 endpoint 0x83 has invalid maxpacket 512, setting to 64
• 背景知识:
• 端点(Endpoint):USB设备的数据通道,分为输入(IN)和输出(OUT)。
• maxpacket:单次传输的最大数据包大小。
• 问题:EC200N-CN的端点报告了不兼容的maxpacket=512(USB全速设备最大应为64)。
• 内核修复:自动将maxpacket修正为64,确保数据传输正常。
3. 网络接口注册
[ 2671.195854] cdc_ether 1-1.3:1.0 usb0: register 'cdc_ether' at usb-ci_hdrc.1-1.3
• 含义:cdc_ether驱动接管网络接口,生成usb0,用于4G上网。
4. 串口节点生成
[ 2671.207914] option 1-1.3:1.2: GSM modem converter detected
[ 2671.216275] usb 1-1.3: GSM modem converter now attached to ttyUSB0
• 含义:option驱动识别到串口接口,生成ttyUSB0、ttyUSB1、ttyUSB2节点。
四、技术细节详解
1. 为什么能通过ttyUSB2发AT指令?
• AT指令:一种基于文本的命令协议,用于控制调制解调器(如拨号、发短信)。
• 串口分工:
• ttyUSB0:用于调制解调器控制(PPP拨号)。
• ttyUSB1:用于GPS定位(如果模块支持)。
• ttyUSB2:专用AT指令通道。
2. 为什么能通过usb0上网?
• CDC-ECM模式:EC200N-CN通过USB模拟以太网卡,内核的cdc_ether驱动将其识别为usb0,提供TCP/IP网络功能。
• 直接联网:无需PPP拨号,插入后自动获取IP(需运营商支持)。
3. 为什么不需要修改内核配置?
• 默认配置已包含:
CONFIG_USB_SERIAL=y # 启用USB串口支持
CONFIG_USB_SERIAL_OPTION=y # 启用option驱动(支持高通、华为等模块)
CONFIG_USB_NET_CDCETHER=y # 启用CDC-ECM网络驱动
• 如果默认配置未启用这些选项,仍需通过menuconfig手动开启。
五、总结与拓展
1. 问题根源
EC200N-CN的PID未被内核驱动识别,导致串口功能未启用。添加PID后,驱动正确绑定设备,功能全部激活。
2. EC200N-CN的接口功能
| 接口 | 功能 | 对应节点 |
|---|---|---|
| Interface 0 | CDC-ECM(网络) | usb0 |
| Interface 2 | 调制解调器控制 | ttyUSB0 |
| Interface 3 | 辅助端口(调试) | ttyUSB1 |
| Interface 4 | AT指令端口 | ttyUSB2 |
3. 测试验证方法
• AT指令测试:
echo -e "AT\r\n" > /dev/ttyUSB2 # 发送AT指令
cat /dev/ttyUSB2 # 查看响应(应返回"OK")


• 网络测试:
ping www.baidu.com -I usb0 # 通过4G网络ping百度
4. 潜在优化方向
• 驱动补丁提交:将EC200N-CN的PID提交给Linux内核社区,避免后续用户手动修改。
• 电源管理:通过AT指令AT+CFUN=1启用模块全功能模式,确保网络稳定性。
2)开发中遇到问题的详细解析(重点!)
为什么直接插上EC200N-CN就能直接ping www.baidu.com了?但是却不能发短信和打电话?
难道是原本就可以发短信和打电话,只是因为没有设备节点(/dev/ ttyUSB0~2)去发送AT指令来发短信和打电话吗?
然后后面配置了下面两行代码才可以?
{ USB_DEVICE(0x2C7C, 0x6002) }, // EC200N-CN的VID/PID
{ USB_DEVICE_AND_INTERFACE_INFO(0x2C7C, 0x6002, 0xff, 0xff, 0xff) }, // 强制绑定到option驱动
下面还会详细分析这串打印的东西:
[ 2671.047488] usb 1-1.3: new full-speed USB device number 11 using ci_hdrc
[ 2671.160615] usb 1-1.3: not running at top speed; connect to a high speed hub
[ 2671.168245] usb 1-1.3: config 1 interface 1 altsetting 1 endpoint 0x83 has invalid maxpacket 512, setting to 64
[ 2671.178398] usb 1-1.3: config 1 interface 1 altsetting 1 endpoint 0xC has invalid maxpacket 512, setting to 64
[ 2671.195854] cdc_ether 1-1.3:1.0 usb0: register ‘cdc_ether’ at usb-ci_hdrc.1-1.3, CDC Ethernet Device, ae:0c:29:a3:9b:6d
[ 2671.207914] option 1-1.3:1.2: GSM modem (1-port) converter detected
[ 2671.216275] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[ 2671.224051] option 1-1.3:1.3: GSM modem (1-port) converter detected
[ 2671.230833] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[ 2671.238673] option 1-1.3:1.4: GSM modem (1-port) converter detected
[ 2671.245367] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
一、核心问题解析
1. 为什么初始状态下直接插上EC200N-CN模块就能上网(ping www.baidu.com),但不能发短信/打电话?
• 网络功能(usb0):
• EC200N-CN模块默认启用了 CDC-ECM模式(Communication Device Class - Ethernet Control Model)。
• CDC-ECM:一种USB协议,允许设备模拟成以太网卡,内核的cdc_ether驱动会自动识别并创建usb0接口。
• 直接联网:只要SIM卡正常且运营商支持,插入模块后即可通过usb0直接访问互联网,无需额外配置。
• 短信/电话功能缺失原因:
• AT指令依赖串口:发送短信/电话需要通过AT指令(Attention Commands)控制模块进行操作,但是AT指令必须通过设备节点/dev/ttyUSB2,通过串口(如ttyUSB2)的方式发送给4G模块才行,所以就i是没有设备节点。
• 初始驱动未匹配:
◦ 未添加VID/PID时,内核的option驱动(USB串口通用驱动)无法识别EC200N-CN的串口接口。
◦ 结果:仅加载网络驱动(cdc_ether),未生成ttyUSB节点,导致无法发送AT指令。
2. 为什么添加USB_DEVICE(0x2C7C, 0x6002)后功能正常?
• 驱动匹配机制:
• VID/PID(Vendor ID/Product ID):内核通过这两个16进制数值唯一标识USB设备。
• 添加0x2C7C(Quectel厂商ID)和0x6002(EC200N-CN产品ID)后,option驱动会主动绑定设备。
• 结果:驱动为每个串口接口生成ttyUSB节点(如ttyUSB2用于AT指令),使短信/电话功能可用。
二、专业术语全称与解释
1. 关键术语解析
| 术语 | 全称 | 解释 |
|---|---|---|
| GSM modem (1-port) | Global System for Mobile Communications Modem | 支持GSM网络的调制解调器,"1-port"表示驱动为每个接口分配一个串口(实际可能有多个接口)。 |
cdc_ether | CDC Ethernet Control Model | USB协议的一种,允许设备模拟以太网卡,提供TCP/IP网络功能。 |
option驱动 | USB Serial Option Driver | Linux内核中用于支持高通、华为等厂商USB调制解调器的通用串口驱动。 |
ci_hdrc | ChipIdea High-Speed Dual-Role Controller | IMX8芯片的USB控制器驱动,负责管理USB主机/设备模式切换。 |
altsetting | Alternate Setting | USB接口的备选配置,用于切换接口的不同工作模式(如不同传输速率)。 |
endpoint | USB Endpoint | USB设备的数据通道,每个端点有方向(IN/OUT)和传输类型(控制/批量/中断/等时)。 |
2. 其他重要概念
• AT指令:Attention Commands,用于控制调制解调器的文本指令集(如ATD10086拨打电话)。
• maxpacket:USB端点单次传输的最大数据包大小(单位:字节)。
• ttyUSB:Linux中USB串口设备的命名规则,tty表示"Teletype Terminal",USB表示接口类型。
三、日志逐行分析
1. USB设备检测
[ 2671.047488] usb 1-1.3: new full-speed USB device number 11 using ci_hdrc
• 1-1.3:设备在USB总线上的位置(总线1-端口1.3)。
• full-speed:USB 1.1速度(12 Mbps),非高速(High-Speed, 480 Mbps)。
• ci_hdrc:IMX8的USB控制器驱动已接管设备。
2. 速度警告
[ 2671.160615] usb 1-1.3: not running at top speed; connect to a high speed hub
• 原因:EC200N-CN工作在USB 1.1模式,但连接到了USB 2.0或3.0控制器。
• 建议:使用USB 2.0集线器避免兼容性警告(实际不影响功能)。
3. 端点配置修复
[ 2671.168245] usb 1-1.3: config 1 interface 1 altsetting 1 endpoint 0x83 has invalid maxpacket 512, setting to 64
[ 2671.178398] usb 1-1.3: config 1 interface 1 altsetting 1 endpoint 0xC has invalid maxpacket 512, setting to 64
• endpoint 0x83:端点地址(0x83表示IN端点,编号3)。
• maxpacket=512:USB全速设备端点最大应为64字节,内核自动修正为64。
• 影响:避免因数据包过大导致传输错误。
4. 网络接口注册
[ 2671.195854] cdc_ether 1-1.3:1.0 usb0: register 'cdc_ether' at usb-ci_hdrc.1-1.3, CDC Ethernet Device, ae:0c:29:a3:9b:6d
• usb0:生成的网络接口名称。
• ae:0c:29:a3:9b:6d:随机生成的MAC地址(若模块未提供固定地址)。
5. 串口节点生成
[ 2671.207914] option 1-1.3:1.2: GSM modem (1-port) converter detected
[ 2671.216275] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[ 2671.224051] option 1-1.3:1.3: GSM modem (1-port) converter detected
[ 2671.230833] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[ 2671.238673] option 1-1.3:1.4: GSM modem (1-port) converter detected
[ 2671.245367] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
• 1-1.3:1.2:设备总线位置和接口编号(接口2)。
• ttyUSB0~ttyUSB2:三个串口节点,分别用于不同功能:
• ttyUSB0:调制解调器控制(PPP拨号)。
• ttyUSB1:调试或辅助通道。
• ttyUSB2:AT指令通道(用于发短信/打电话)。
四、总结
1. 功能实现流程
- 插入模块 → 内核检测到USB设备,但未匹配串口驱动。
- 加载
cdc_ether驱动 → 创建usb0,支持上网。 - 在option.c源文件添加VID/PID →
option驱动绑定设备,生成ttyUSB节点。 - 通过
ttyUSB2发送AT指令 → 控制模块发短信/打电话。
2. 关键结论
• CDC-ECM模式:模块默认支持,无需配置即可上网。
• AT指令依赖串口:必须通过ttyUSB节点通信,驱动未匹配时节点缺失。
• 内核驱动的VID/PID匹配:是激活串口功能的核心条件。
相关文章:
【EC200N-CN——Linux驱动移植】问题回顾
【EC200N-CN——Linux驱动移植】问题回顾 1)、开发回顾一、问题回顾与解决过程二、核心原理分析1. **USB设备识别的关键:VID/PID**2. **为什么之前不生成ttyUSB节点?**3. **为什么添加PID后就能生成节点?** 三、日志关键信息解读1…...
linux安装ollama
俩种方式都可 一、linux通过docker安装ollama镜像 1.下载安装ollama镜像 # 安装 Docker sudo yum install docker sudo systemctl start docker#docker查看所有容器 docker ps -a # 查看所有容器# docker查看指定容器 docker ps -a |grep ollama# 创建模型存储目录ÿ…...
构建k8s下Helm私有仓库与自定义Chart开发指南
#作者:程宏斌 文章目录 自定义helm模板1、开发自己的chare包2、调试chart3、安装chart 自定义helm模板 https://hub.helm.sh/ 1、开发自己的chare包 [rootmaster ~]# helm create mychare //创建一个名为mychare的chare包 [rootmaster ~]# tree -C mychare/ //以…...
【7】C#上位机---Modbus RTU 界面设计与封装
C#上位机---Modbus通讯 1 Modbus RTU 通讯1.1 RS485串口与串行通信(Serial Communications)1.2 Modbus RTU协议1.3 Modbus RTU主从模式1.4 Modbus 主从站模拟调试2 Modbus RTU 界面设计与封装2.1 温度控件的类属性2.2 C#封装Modbus实现通讯2.3 C#封装Modbus TRU通用类2.4 上位…...
【JVM】question
问题 JVM线程是用户态还是内核态 java线程在jdk1.2之前,是基于名为“绿色线程”的用户线程实现的,这导致绿色线程只能同主线程共享CPU分片,从而无法利用多核CPU的优势。 由于绿色线程和原生线程比起来在使用时有一些限制, jdk1.2…...
Node.js 中处理 Excel 文件的最佳实践
在现代应用开发中,Excel 文件仍然是数据交换和存储的重要格式之一。在 Node.js 环境中,处理 Excel 文件的需求日益增加。本文将介绍如何在 Node.js 中高效地处理 Excel 文件,涵盖工具选择、基本操作和最佳实践。 1. 选择合适的库 在 Node.js…...
【嵌入式学习6】多任务版TCP服务器
目录 如何实现: 客户端1.0版本: 服务端: 客户端2.0版本: thread.join() 是一个线程同步方法,用于主线程等待子线程完成。当你调用 thread.join() 时,主线程会阻塞,直到调用 join() 的子线程…...
每天认识一个设计模式-外观模式:化繁为简的接口魔法
一、前言 在设计模式中,结构型设计模式处理类或对象组合,可助力构建灵活、可维护软件结构。此前探讨过组合模式(将对象组合成树形结构,统一处理单个与组合对象,如文件系统管理)和装饰器模式(动…...
VLAN(虚拟局域网)
一、vlan概述 VLAN(virtual local area network)是一种通过逻辑方式划分网络的技术,允许将一个物理网络划分为多个独立的虚拟网络。每一个vlan是一个广播域,不同vlan之间的通信需要通过路由器或三层交换机 [!注意] vlan是交换机独有的技术,P…...
Transformers without Normalization论文翻译
论文信息: 作者:Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址:arxiv.org/pdf/2503.10622 代码仓库:jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…...
题目练习之set的奇妙使用
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...
负载均衡是什么,Kubernetes如何自动实现负载均衡
负载均衡是什么? 负载均衡(Load Balancing) 是一种网络技术,用于将网络流量(如 HTTP 请求、TCP 连接等)分发到多个服务器或服务实例上,以避免单个服务器过载,提高系统的可用性、可扩…...
网站提示“不安全“怎么办?原因分析与解决方法
引言:为什么浏览器会提示网站"不安全"? 当您访问某些网站时,浏览器可能会显示"不安全"警告。这通常意味着该网站存在安全风险,可能影响您的隐私或数据安全。本文将介绍常见原因及解决方法,帮助您…...
如何利用AI智能生成PPT,提升工作效率与创意表现
如何利用AI智能生成PPT,提升工作效率与创意表现!在这个信息爆炸的时代,制作一份既专业又富有创意的PPT,已经不再是一个简单的任务。尤其是对于每天都需要做报告、做展示的职场人士来说,PPT的质量直接影响着工作效率和个…...
【11】Redis快速安装与Golang实战指南
文章目录 1 Redis 基础与安装部署1.1 Redis 核心特性解析1.2 Docker Compose 快速部署1.3 Redis 本地快速部署 2 Golang 与 Redis 集成实战2.1 环境准备与依赖安装2.2 核心操作与数据结构实践2.2.1 基础键值操作2.2.2 哈希结构存储用户信息 3 生产级应用场景实战3.1 分布式锁实…...
【数据结构】图论存储革新:十字链表双链设计高效解决有向图入度查询难题
十字链表 导读一、邻接表的优缺点二、十字链表2.1 结点结构2.2 原理解释2.2.1 顶点表2.2.2 边结点2.2.3 十字链表 三、存储结构四、算法评价4.1 时间复杂度4.2 空间复杂度 五、优势与劣势5.1 优势5.2 劣势5.3 特点 结语 导读 大家好,很高兴又和大家见面啦ÿ…...
聊一聊没有接口文档时如何开展测试
目录 一、前期准备与信息收集 二、使用抓包工具分析接口 三、逆向工程构造测试用例 四、安全测试 五、 模糊测试(Fuzz Testing) 六、记录并维护发现的接口信息 七、 推动团队规范流程 其它注意事项 在我们进行接口测试时,总会遇到各种…...
.net6 中实现邮件发送
一、开启邮箱服务 先要开启邮箱的 SMTP 服务,获取授权码,在实现代码发送邮件中充当邮箱密码用。 在邮箱的 设置 > 账号 > POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中,把 SMTP 服务开启,获取授权码。 二、安装库 安装 …...
vector复制耗时
CPP中的vector对象在传参给子函数时,如果直接传参,会造成复制给形参的额外耗时 如何解决这个问题呢? 这样定义局部函数 const vector <int>&vec可以保证传递vector对象时使用地址传递,并且使用const保证vector不被改变…...
MySQL 数据库操作指南:从数据库创建到数据操作
关键词:MySQL;数据库操作;DDL;DML 一、引言 MySQL 作为广泛应用的关系型数据库管理系统,对于开发人员和数据库管理员而言,熟练掌握其操作至关重要。本文章通过一系列 SQL 示例,详细阐述 MySQL…...
【Linux】命令和权限
目录: 一、shell命令及运行原理 (一)什么是外壳 (二)为什么要有外壳 (三)外壳怎么工作的 二、Linux权限的概念 (一)Linux的文件类型 (二)L…...
22.OpenCV轮廓匹配原理介绍与使用
OpenCV轮廓匹配原理介绍与使用 1. 轮廓匹配的基本概念 轮廓匹配(Contour Matching)是计算机视觉中的一种重要方法,主要用于比较两个轮廓的相似性。它广泛应用于目标识别、形状分析、手势识别等领域。 在 OpenCV 中,轮廓匹配主要…...
深入解析AI绘画技术背后的人工智能
在当今数字艺术领域,AI绘画作为一种新兴艺术形式,正迅速吸引着越来越多的创作者与爱好者。它不仅推动了艺术创作的边界,同时也改变了我们对创作与美的理解。本文将深入探讨AI绘画所依赖的人工智能技术,并分析其背后的原理与应用。…...
Kaggle房价预测
实战 Kaggle 比赛:预测房价 这里李沐老师讲的比较的细致,我根据提供的代码汇总了一下: import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import torch from matplotlib i…...
browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,告诉您的计算机该做什么,它就会完成它。
一、软件介绍 文末提供程序和源码下载 browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,浏览器使用是将AI代理与浏览器连接的最简单方法。告诉您的计算机该做什么,它就会完成它。 二、快速开始 使用 pip (Py…...
java虚拟机---JVM
JVM JVM,也就是 Java 虚拟机,它最主要的作用就是对编译后的 Java 字节码文件逐行解释,翻译成机器码指令,并交给对应的操作系统去执行。 JVM 的其他特性有: JVM 可以自动管理内存,通过垃圾回收器回收不再…...
2025数字中国初赛wp
一,取证与溯源 镜像文件解压密码:44216bed0e6960fa 1.运维人员误删除了一个重要的word文件,请通过数据恢复手段恢复该文件,文件内容即为答案。 先用R-stuido软件进行数据恢复 得到 打开重要文件.docx全选发现有一条空白的被选中…...
c#和c++脚本解释器科学运算
说明: 我希望用c#和c写一个脚本解释器,用于科学运算 效果图: step1: c# C:\Users\wangrusheng\RiderProjects\WinFormsApp3\WinFormsApp3\Form1.cs using System; using System.Collections.Generic; using System.Data; using System.Tex…...
青蛙吃虫--dp
1.dp数组有关元素--路长和次数 2.递推公式 3.遍历顺序--最终影响的是路长,在外面 其次次数遍历,即这次路长所有情况都更新 最后,遍历次数自然就要遍历跳长 4.max时时更新 dp版本 #include<bits/stdc.h> using namespace std; #def…...
路由器工作在OSI模型的哪一层?
路由器主要工作在OSI模型的第三层,即网络层。网络层的主要功能是将数据包从源地址路由到目标地址,路由器通过检查数据包中的目标IP地址,并根据路由表确定最佳路径来实现这一功能。 路由器的主要功能: a、路由决策:路…...
