当前位置: 首页 > news >正文

佛山微信网站推广多少钱男女的做那个视频网站

佛山微信网站推广多少钱,男女的做那个视频网站,wordpress采集文章,美食网站 原型 html 下载整理一份 系统完整的教学培训文档,主题是 USB String Descriptor(字符串描述符)的体系、用法与扩展。 内容会覆盖:概念 → 标准字段 → 索引映射机制 → 类描述符扩展 → 自定义扩展 → 实战示例 → 注意事项 → 总结。USB 字符串…

整理一份 系统完整的教学培训文档,主题是 USB String Descriptor(字符串描述符)的体系、用法与扩展
内容会覆盖:概念 → 标准字段 → 索引映射机制 → 类描述符扩展 → 自定义扩展 → 实战示例 → 注意事项 → 总结


USB 字符串描述符 (String Descriptor) 系统整理文档

一、概念与作用

USB 协议中的 字符串描述符 (String Descriptor, bDescriptorType = 0x03) 用于为设备提供人类可读的文本信息
这些信息并非设备功能必需,但对 用户显示、设备识别、调试区分 非常重要。

常见用途:

  • 厂商名称 (Manufacturer)
  • 产品名称 (Product)
  • 序列号 (Serial Number)
  • 配置名称 (Configuration String)
  • 接口名称 (Interface String)
  • 类扩展(如 UVC Camera Terminal、Audio Terminal 等)
  • 厂商自定义信息(固件版本、OEM 定制标识)

二、字符串描述符格式

字符串描述符采用 UTF-16LE 编码,保证跨语言兼容性。
格式如下:

偏移字段长度说明
0bLength1 字节描述符总长度
1bDescriptorType1 字节固定值 0x03
2bStringn 字节字符串内容(UTF-16LE,每字符 2 字节)

示例:字符串 “USB”

08 03 55 00 53 00 42 00
  • bLength = 8
  • bDescriptorType = 0x03
  • bString = “U”=55 00, “S”=53 00, “B”=42 00

三、语言 ID 描述符 (String[0])

String Index = 0 不存放字符串,而是存放 支持的语言 ID (LANGID) 列表。

示例:

04 03 09 04

表示支持 0x0409 = English (US)
主机会先请求 Index=0,获取支持的语言,再用 wLANGID 去请求对应语言的字符串。


四、标准描述符中的 String Index 字段

USB 协议里,字符串描述符本身不会直接写在 Device/Config/Interface 描述符中,而是通过 索引引用

1. Device Descriptor

  • iManufacturer → 厂商名
  • iProduct → 产品名
  • iSerialNumber → 序列号

2. Configuration Descriptor

  • iConfiguration → 配置名称

3. Interface Descriptor

  • iInterface → 接口名称

4. Endpoint Descriptor

  • 标准 Endpoint 没有 iEndpoint 字段。

五、类扩展 (Class-Specific) 中的 String Index

不同的 USB 类规范(Class)允许在其专用描述符中使用字符串字段。

1. HID (Human Interface Device)

  • HID 报告项可以引用字符串索引,用于描述按钮/功能名。

2. Audio Class (UAC1/UAC2)

  • iTerminal → Terminal 名称
  • iFeature → Feature Unit 名称
  • iMixer → Mixer 名称
  • iSelector → Selector 名称
  • iClockSource / iClockSelector / iClockMultiplier → 时钟单元名

3. Video Class (UVC)

  • iTerminal → Camera Terminal 名称
  • iProcessing → Processing Unit 名称
  • iExtension → Extension Unit 名称

4. Hub Descriptor

  • iHub → Hub 名称

六、索引映射机制

规则:

  • iXXX = N → 表示该字段引用 String Descriptor[N]
  • 主机通过 GET_DESCRIPTOR(String, Index=N, LANGID) 请求该字符串
  • String Descriptor 表 = 一张索引到字符串的映射表

索引分配范围:

  • 0 → 语言 ID 表
  • 1–255 → 字符串(厂商可自由分配)

七、厂商自定义扩展

厂商可以定义自己的描述符,并添加字符串索引字段。

示例:自定义 Vendor Descriptor

struct vendor_device_info {u8 bLength;u8 bDescriptorType;   // Vendor specific = 0xFFu8 bCustomField;      // 自定义字段u8 iCustomString;     // 字符串索引
};

如果 iCustomString = 10,则 String[10] 必须存在,例如:

String[10] = "Firmware v1.2.3"

八、实战示例

1. Device Descriptor

struct usb_device_descriptor dev_desc = {.bLength = 18,.bDescriptorType = USB_DT_DEVICE,.idVendor = 0x1234,.idProduct = 0x5678,.iManufacturer = 1,   // String[1].iProduct      = 2,   // String[2].iSerialNumber = 3,   // String[3]
};

2. String Table

String[0] = 04 03 09 04                     // English (US)
String[1] = "MyCompany"
String[2] = "SuperUSB Device"
String[3] = "SN123456789"
String[10] = "Firmware v1.2.3"              // 自定义

3. 主机解析流程

  • 读到 iManufacturer=1 → 请求 String[1] → "MyCompany"
  • 读到 iProduct=2 → 请求 String[2] → "SuperUSB Device"
  • 读到 iSerialNumber=3 → 请求 String[3] → "SN123456789"
  • 读到 Vendor Descriptor iCustomString=10 → 请求 String[10] → "Firmware v1.2.3"

九、注意事项

  1. 必须 UTF-16LE,即便只含英文。

  2. Index=0 保留:仅返回语言 ID。

  3. 长度上限:字符串 ≤ 126 个字符(255 字节 - 2 字节头)。

  4. 多语言支持:一个 Index 可以对应多个语言版本。

  5. 不需要的字段填 0:表示没有对应字符串。

  6. 调试方法

    • Linux → lsusb -v
    • Windows → USBView/USBlyzer
    • 抓包工具 → Beagle USB Analyzer

十、总结

  1. 字符串描述符是 USB 的“标签”机制,便于用户和系统识别设备。

  2. 所有 iXXX 字段只存索引,不存字符串

  3. 索引值 → String Descriptor 表 → UTF-16LE 文本

  4. Class 扩展和厂商扩展 都可以引入更多字符串字段。

  5. 实战中建议最少提供

    • iManufacturer
    • iProduct
    • iSerialNumber
    • 再根据类规范/自定义需求扩展。

👉 建议:如果你在做 USB Gadget/固件开发,可以先画一张 描述符树(Device → Config → Interface → Endpoint → Class Specific),把所有可能用到的 iXXX 标出来,并对应到 String Table,这样设计清晰,不容易遗漏。

http://www.dtcms.com/a/555182.html

相关文章:

  • 网站开发和美工的区别网页制作公司文案
  • 机械配件东莞网站建设河口建设局网站
  • 江门网站建设哪家好学校网站建设企业
  • 建设旅游网站数据库设计树莓派lamp WordPress
  • 内丘网站建设简约风格的网站
  • 做网站时无法上传图片投票网站建设
  • 进销存管理上新!Tigshop开源商城系统 JAVA v5.7.0正式发布!
  • 养殖类网站模板和建设银行类似的网站
  • 网站建设 国外深圳动漫制作
  • 类似k站的网站网站 备案 拍照
  • 阜新网站建设互联网家装公司
  • 学做宝宝衣服网站好如何创建商业网站
  • 杭州一起做网站开发应用程序的步骤
  • 彬县网站建设宿迁做网站公司哪家好
  • Java的三代日期类(Date,Calendar,LocalDateTime)
  • 做物流网站有哪些内容深圳罗湖网站制作
  • 如何做线上网站的网站网站建设培训心得体会
  • 合泰单片机之时基中断
  • 那些网站可以做问答免费com网站域名注册
  • 高端企业网站要多少钱广州知名设计公司排名
  • 建设银行东航龙卡登录东航网站代运营公司排名前十
  • 北京建设局投诉网站首页为什么自己做的网站老是404错误
  • Python requests详解:从入门到实战,HTTP请求的“瑞士军刀”
  • 网站建设策略营销上地网站建设
  • 怎么给网站做备案网站建站外包公司
  • 分数阶非局部扩散传染病模型稳态解的存在性与渐近性分析
  • 新开的网站怎么做seo优化网上房地产官网
  • 建设网站收废品wordpress 结构分析
  • dede网站名称不能中文网站开发申请报告
  • NFS服务搭建