项目阶段一:UVC摄像头驱动

我们的第一个目标是实现一个UVC摄像头的驱动

什么是UVC摄像头?

UVC,全称为:USB video(device) class,是微软与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。

USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。这些Class协议的数量非常多,最常见的比如支持U盘功能的Mass Storage Class,以及通用的数据交换协议:CDC class。此外还包括Video、Audio Class, Print Class等等。正是由于这些Class协议,大大促进了USB设备的普及,比如说各个厂商生产的U盘都能通过操作系统自带的驱动程序来使用。

首先-资料去哪找?

我们目前手头有什么?

  • 可以看到,UVC的描述符布局略显复杂,幸运的是,我们已经有了一套完整(?)的设备描述符解析机制。 uvc descriptor
  • 我们已经有了一套USB驱动框架作为基础,并提供了一定的抽象以减轻思维负担,不需要从0开始写

我们还缺什么

  • 不幸的是,上文所说的描述符解析机制可能存在一些bug,但目前为止表现一直很良好
  • UVC同时需要使用到所有的四种传输方式
    • 不幸的是,截止这篇文档编写完成前,我们只写了控制传输和中断传输的部分
      • 不过其实剩下的两个写起来也不难

进展日志