NCM 描述符概述
2025-07-08
0
0
NCM 设备在通信接口中必须实现的类特定描述符,这些描述符包括:
1. 必须实现的描述符列表
NCM 通信接口需按 严格顺序 提供以下功能描述符:
描述符类型 | 规范依据 | 是否必需 | 顺序要求 | 作用 |
---|---|---|---|---|
HEADER | [USBCDC12] 5.2.3.1 | 必需 | 必须第一个 | 声明CDC规范兼容版本(如CDC 1.2)。 |
UNION | [USBCDC12] 5.2.3.2 | 必需 | 任意(通常在HEADER后) | 绑定通信接口与数据接口(包含两者的接口编号)。 |
ETHERNET | [USBECM12] 5.4 | 必需 | 任意 | 定义以太网特性(如MAC地址、最大帧长)。 |
NCM | 本规范 5.2.1 | 必需 | 任意 | 声明NCM特定参数(如NTB大小、对齐要求)。 |
COMMAND SET | 本规范 5.2.2 | 条件必需(见下文) | 任意 | 定义OEM自定义命令格式(仅当bInterfaceProtocol=FEh 时必需)。 |
COMMAND SET DETAIL | - | 可选 | 必须在COMMAND SET后 | 提供厂商命令的扩展详情(如命令版本、兼容性)。 |
Interrupt IN端点描述符 | [USB30] | 必需 | 所有功能描述符之后 | 用于事件通知(如连接状态变化)。 |
2. 关键描述符详解
(1) HEADER 功能描述符
- 字段示例:
bLength = 0x05,
bDescriptorType = 0x24,
bDescriptorSubtype = 0x00,
bcdCDC = 0x0120 // CDC 1.2
- 作用:标识设备遵循的CDC规范版本,是功能描述符链的起始标志。
(2) UNION 功能描述符
- 字段示例:
bLength = 0x05,
bDescriptorType = 0x24,
bDescriptorSubtype = 0x06,
bControlInterface = 0x00, // 通信接口编号
bSubordinateInterface = 0x01 // 数据接口编号
- 作用:关联通信接口(控制)与数据接口(传输),主机通过此描述符识别NCM的双接口结构。
(3) ETHERNET 功能描述符
- 关键字段(来自[USBECM12]):
- iMACAddress:MAC地址的字符串描述符索引。
- wMaxSegmentSize:设备支持的最大以太网帧尺寸(如1514/9014字节)。
- bmNetworkCapabilities:能力标志(如是否支持组播)。
(4) NCM 功能描述符
- 关键字段(本规范5.2.1):
- bcdNcmVersion:NCM规范版本(如0x0100表示1.0)。
- bmNetworkCapabilities:
- D2位:是否支持封装命令(SendEncapsulatedCommand)。
- 其他位:保留。
- wNtbInMaxSize/wNtbOutMaxSize:输入/输出NTB的最大尺寸。
- wNdpInDivisor/wNdpInPayloadRemainder:数据报对齐参数(见3.3节)。
(5) COMMAND SET 描述符(仅FEh协议需要)
- 触发条件:通信接口的 bInterfaceProtocol = 0xFE(OEM自定义协议)。
- 作用:定义厂商私有命令的格式(如诊断指令、固件升级)。
3. 条件性描述符规则
- COMMAND SET 描述符:
- 必需:当且仅当 bInterfaceProtocol = FEh。
- 禁止:若协议为 00h 或其他值,不得提供此描述符。
- COMMAND SET DETAIL 描述符:
- 可选:仅在已提供COMMAND SET描述符时可附加,否则禁止出现。
4. 描述符顺序与端点要求
- 严格顺序:
- HEADER 必须为首个功能描述符,其余描述符顺序任意(但建议按上表顺序排列)。
- 中断端点:
5. 开发者检查清单
- 验证协议代码:
- 若使用 FEh,确保实现完整的命令集描述符链。
- 对齐NCM功能描述符:
- 正确设置 bmNetworkCapabilities 的 D2 位,以匹配 bInterfaceProtocol。
- 端点配置:
- 中断端点必须为 IN 方向,且带宽满足实时性要求。
总结
NCM设备通过 功能描述符链 声明其能力与配置,核心要求包括:
- HEADER + UNION + ETHERNET + NCM 为绝对必需项。
- OEM扩展(FEh协议)需额外提供命令集描述符。
- 中断端点 不可遗漏,用于事件通知。
此设计确保主机能动态适配不同厂商的NCM设备,同时保持基础功能的标准化。