USB-CDC-ECM以太网控制模型设备
+ -

USB-CDC通讯类EEM、ECM和NCM的关系与区别

2025-08-28 本文链接为:http://www.usbzh.com/article/detail-1572.html ,欢迎转载,转载请附上本文链接。

EEM、ECM和NCM概述

EEM、ECM和NCM所有这些协议都属于 USB CDC(Communications Device Class) 的一个子类。它们的目标都是:让USB设备(如手机、开发板)在主机(如电脑)看来像一个标准的以太网卡,从而无需安装特殊驱动即可使用网络功能。

1. EEM (Ethernet Emulation Model) - 以太网仿真模型

  • 介绍
    EEM是比ECM更新的一个CDC子类。它的设计目标更加简单:只高效地传输以太网数据帧,而将大部分控制功能(如链路通断通知)省略或简化。它被认为是一种“更轻量级”的协议。

  • 工作原理
    同样使用USB批量传输来封装原始以太网帧。与ECM的最大区别在于它没有单独的控制接口,所有操作(包括心跳包保持连接)都通过数据接口完成。

  • 优点

    • 更高效:协议开销比ECM更小,因为没有复杂的控制信道。
    • 设计简单:在嵌入式设备端实现起来更容易。
    • 同样被现代操作系统(Linux, macOS, Windows 10+) 原生支持。
  • 缺点

    • 功能相对ECM较少(但对于简单的网络连接来说足够用)。
  • 适用环境

    • 对效率和实现简单性要求高的嵌入式设备
    • 许多微控制器(如STM32)的USB库默认提供EEM示例。
    • 与ECM的应用场景高度重叠,是ECM的一个轻量级替代方案。

2. ECM (Ethernet Control Model) - 以太网控制模型

  • 介绍
    ECM是USB CDC规范中定义的标准以太网传输协议。它提供了一个清晰的控制接口和数据接口。ECM设备在连接时会向主机报告其以太网功能,操作系统内置的标准CDC-ECM驱动即可识别并加载。

  • 工作原理
    数据包被封装在USB批量传输(Bulk Transfer)中,效率很高。它包含一个明确的控制通道用于管理链路状态(如连接、断开、设置MAC地址等)。

  • 优点

    • 标准化:是USB-IF官方标准,兼容性有保障。
    • 系统原生支持:Linux、macOS、BSD等类Unix系统通常都内置了CDC-ECM驱动。Windows 10及以后版本也提供了内置驱动。
    • 稳定可靠:协议成熟,功能明确。
  • 缺点

    • 在旧版Windows(如Win7、Win8)上可能需要手动安装驱动,用户体验不佳。
  • 适用环境

    • 嵌入式Linux设备(如树莓派、各种ARM/NMP开发板)。
    • 网络设备(如4G/5G路由器、CPE)。
    • 打印机、扫描仪等需要网络共享的外设。
    • macOS和现代Windows电脑连接的设备。

3. NCM (Network Control Model) - 网络控制模型

  • 介绍
    NCM是旨在替代ECM的现代协议。它解决了一个核心问题:提高大数据量传输的效率。它通过将多个以太网帧聚合(Bundling)到一个USB传输事务中来减少USB协议本身的开销(如中断、信令),从而显著提升吞吐量。

  • 工作原理
    NCM引入了一个“NTB”(Network Transfer Block)的概念。驱动程序会将多个以太网数据包打包成一个大的NTB,然后通过一次USB批量传输发送出去。在接收端再解包。这大大减少了“每个数据包一次传输”的固有开销。

  • 优点

    • 高性能:这是它最大的优势。在高速USB(USB 2.0 Hi-Speed, USB 3.0)上,其吞吐量远高于ECM和EEM,更能充分利用带宽。
    • 现代标准:是为高速网络应用而设计的下一代协议。
    • 原生支持:被现代版本的Linux、Windows 8.1+、macOS等系统支持。
  • 缺点

    • 协议实现比EEM和ECM更复杂。
  • 适用环境

    • 高速网络设备:这是NCM的主场。
    • 5G/4G移动热点(MiFi):需要为手机和电脑提供高速网络共享。
    • USB 3.0/3.1千兆以太网适配器
    • 任何需要最大化USB网络带宽的应用场景。

三者的区别对比

特性 ECM (Ethernet Control Model) EEM (Ethernet Emulation Model) NCM (Network Control Model)
设计目标 标准、完整功能的以太网控制 轻量级、简单的以太网仿真 高性能、高吞吐量
协议复杂度 中等 低(最简单) 高(最复杂)
传输效率 中等 中等 高(支持数据包聚合)
控制通道 有独立的控制接口 无独立控制接口 有控制接口
驱动支持 Linux, macOS, Win10+ Linux, macOS, Win10+ Linux, macOS, Win8.1+
主要优势 标准化、稳定 实现简单、开销小 速度最快、带宽利用率高
典型应用 嵌入式设备、网络外设 微控制器(MCU)、简单设备 5G热点、高速网卡

总结与适用环境选择

  1. 追求极致性能和速度(如5G网络、千兆以太网)

    • 首选 NCM。它是为高速时代设计的,能最大程度减少协议开销,提升吞吐量。这是当前高端消费设备和网络设备的主流选择。
  2. 开发嵌入式设备,追求稳定和标准兼容

    • 选择 ECM。它是一个成熟可靠的标准,被广泛支持,功能齐全。如果你的设备不需要极高的速度,但需要很好的兼容性,ECM是安全的选择。
  3. 资源受限的微控制器(MCU)项目,追求实现简单

    • 选择 EEM。它的协议栈最轻量,实现起来最简单,对于简单的网络连接需求(如数据采集器、物联网设备)非常合适,足以胜任。

简单来说,可以这样记忆:

  • EEM:简单、轻量。
  • ECM:标准、通用。
  • NCM:快速、高效。

在实际产品中,一个设备(如一部手机)通常会同时实现多种CDC类型(如RNDIS, NCM, ECM)。当通过USB连接到电脑时,电脑的操作系统会根据自己的支持情况,自动选择最优的协议进行通信(例如,Windows会优先选择RNDIS或NCM,而Linux会优先选择ECM或NCM),以提供最佳的用户体验。

本文链接为:http://www.usbzh.com/article/detail-1572.html ,欢迎转载,转载请附上本文链接。

0 篇笔记 写笔记

CDC-NCM 简介
USB CDC-NCM(Network Control Model)是 USB CDC(Communication Device Class) 的一个子类协议,专为高效网络数据传输设计,主要用于移动宽带设备(如4G/5G调制解调器、USB网卡等),以提升 USB 总线上的网络吞吐量。1. 核心特......
USB CDC-NCM和USB CDC-ECM的区别与关系
USB CDC-NCM(Network Control Model)和USB CDC-ECM(Ethernet Control Model)是USB规范中定义的两种网络通信协议,均属于USB CDC(Communication Device Class)的子类。它们的主要区别和关系如下:1. 设......
USB-NCM相关术语
术语 (Term)描述 (Description)802.3第二代网络布线与信令标准,通常称为 Ethernet II(参见 [IEEE802.3])。通信接口 (Communications Interface)一种 USB 接口,其 bInterfaceClass 设......
USB-NCM相关规范文档
标准编号标准名称及说明[ECMA368]《ECMA-368:高速超宽带物理层与MAC标准》(2005年)[IEC60027-2]《IEC 60027-2 第2版(2000-11):电工技术用字母符号 - 第2部分:电信与电子学》[IEEE802.11]《IEEE ......
USB-NCM数据传输模型
1. 规范适用范围设备类型:支持 USB连接的外部网络适配器,需模拟 IEEE 802家族的第2层(数据链路层)网络功能(如以太网帧传输)。 合规性要求:设备必须符合以下标准之一: USB 3.0规范 [USB30](有线高速USB) 无线USB规范 [WUSB10] 通信设备类1.2 ......
USB-NCM功能的连接状态与配置管理
虽然 NCM(Network Control Model)功能 可以保持在 “始终连接”(always connected) 状态,但仍需通过 管理请求(management requests) 进行初始化和动态配置调整。1. 初始化要求功能与主机网络栈的初始化: 在设备连接时,主机需通......
USB-NCM数据传输机制NTB
NCM允许设备和主机使用单个USB传输有效地传输一个或多个以太网帧。USB传输被格式化为NCM传输块(NTB)。1. NTB的核心结构每个NTB由三部分组成,按顺序排列:NCM Transfer Header (NTH) 作用:标识NTB的起始,提供元数据(如NTB类型、长度、NDP指......
NCM传输头-NTH16
根据USB2.0和USB3.0,NTC传输头分为NTH16和NTH32.NTH16(NCM Transfer Header for 16-bit NTB)NTH16 结构定义(总长度:12字节)偏移量字段名大小值/格式说明0dwSignature4字节0x484D43......
NCM传输头-NTH32
以下是 NTH32 的完整技术规范解析,采用结构化表格呈现,并与 NTH16 对比关键差异:NTH32 结构定义(总长度:16字节)偏移量字段名大小值/格式说明与NTH16差异0dwSignature4字节0x686D636E (小端序:ncmh)NTB32标识......
NCM数据报文指针-NDP16
NCM数据报指针(NDP)描述了嵌入在NDP中的以太网数据报。与NTH结构一样,定义了两种形式。一种形式(NDP16)用于16位NTB;一种用于32位NTB。这些形式在架构上是等效的,但不同之处在于,许多字段在NDP16中是16位宽,但在NDP32中是32位宽。1. NDP16 核心结构NDP16......
NCM数据报文指针-NDP32
以下是 NDP32 的完整技术规范解析,重点说明其与 NDP16 的差异和设计意图:1. NDP32 核心结构NDP32 由三部分组成,总长度至少为 32字节(且为8的倍数):16字节头部:包含签名、长度和保留字段。 1个或多个数据报指针条目(每条目8字节):记录每个以太网帧的位置和长度(......
NCM 数据报内存对齐机制详解
以下是关于 NCM 规范中数据报内存对齐要求的系统化解析,涵盖对齐原理、参数配置及典型应用场景:1. 对齐机制的核心设计NCM 允许设备通过 NTB Parameter Structure(表6-3) 声明其对数据报载荷(Payload)的内存对齐需求,主机需按此约束构造NTB。 对齐目标......
NCM以太网帧最大尺寸动态调整规则
1. 最大尺寸的动态控制主机控制权:主机可通过 SetMaxDatagramSize 控制请求 动态调整设备支持的最大以太网帧尺寸(不含CRC-32)。 典型值:标准以太网帧为1514字节(14字节头 + 1500字节载荷)。 扩展场景:支持VLAN标签(1522字节)、巨型帧(Jumbo......
NCM数据报指针条目中的 Null 条目处理规则
1. Null 条目的定义任何 NCM 数据报指针条目(NDP16 或 NDP32)满足以下条件之一时,被视为 Null 条目:索引字段为零: wDatagramIndex(NDP16)或 dwDatagramIndex(NDP32)为 0。 长度字段为零: wDatagramLen......
NCM 类特定代码(Class-Specific Codes)
以下是关于 NCM(Network Control Model)在 USB 设备描述符中使用的类特定代码的完整解析,涵盖通信接口和数据接口的关键定义:0. NCM 通信接口Class代码(Communications Interface Subclass Code)代码值:0x02详见:http......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!