本站的1位用户
加入于2021-05-27
B站搜索 站长漫谈 看视频。
pnpon内核开发网,USB中文网
站长
    本文来自USB2.0规范7.1.2.2一节的内容解读.USB2.0高速设备连接到USB集线器并运行在高速工作模式下时,其硬件原理图如下:USB设备与USB集线器通过USB线缆连接起来.在USB集线器端有2个测试点.TP1为集线器收发器处,TP2为集线器连接口端口处.在USB设备端也有2个......
    阅读数:7点赞数:02024-05-09 15:15:56
    USB的编码方式NRZI(非归零反向编码),提到这个是为了说明信号的时钟周期(等效时钟,并没有专门的时钟线)到底是多少,因为这个才是我们硬件工程师关注的。对于差分对的传输线:传输速率或带宽(Mbps)= 时钟频率(MHz)* 位宽 * 通道数 * 每时钟传输数据组数(cycle)所以USB高速......
    阅读数:3点赞数:02024-05-09 14:26:21
    如有以下的报告描述符,其内容如下:0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00)0x09, 0x01, // Usage (0x01)0xA1, 0x01, // Collection (Applic......
    阅读数:24点赞数:02024-04-19 12:02:04
    获取报告描述符 CTL 81 06 00 22 01 00 ee 02 686 IN 05 0d 09 04 ......
    阅读数:25点赞数:02024-04-17 16:13:33
    半拉子工程,又开始搞起。重新修改代码,在驱动中测试创建一个UVC相机,一个自定义HID设备,一个UAC麦克风,一个UAC扬声器。不过UAC设备都启动失败了。别外UVC相机的名字也不是自己定指的名字。如对于UAC扬声器设备指定的为: WCHAR strManufacturer[] = { L......
    阅读数:16点赞数:02024-04-11 15:46:03
    从USB PD3.1开始,支持EPR模式,故在进行协商时:第一步:明确PD连接此阶段,Source/Sink会确认双方是否都有宣告支持EPR Mode:Source/Sink,需要先建立Explicit PD Contract。在Source Capabilities与Request Mess......
    阅读数:116点赞数:02024-04-08 10:53:31
    USB PD3.1规范将原来的USB PD3.0内容归到标准功率范围(Standard Power Range,简称SPR)里面,最大功率保持100W不变;同时增加了扩展功率范围(Extended Power Range,简称EPR),最大功率由100W扩展到240W。所以PD3.1快充规范将功率划......
    阅读数:156点赞数:12024-04-08 10:19:50
    实现不想看那个视频流队列相关的东西,但有时又很好奇。就看了一个一知半解,只是梳理了一下代码流程,至于细节,鬼才去看。最终,其实想分析的是视频打开,只为只有这里有与UVC规范相关的请求。使用VIDIOC_STREAMON请求来打开视频流。 // 开始数据流 type = V4L2_BU......
    阅读数:40点赞数:02024-04-02 17:11:40
    将缓冲区放入队列,这样就可以使用该队列读取数据了 // 将缓冲区放入队列 for (unsigned int i = 0; i < reqbuf.count; i++) { memset(&buf, 0, sizeof(buf)); bu......
    阅读数:26点赞数:02024-04-02 15:37:13
    LINUX&UVC驱动中通过VIDIOC_REQBUFS申请的内存空间在内核层,而我们的应用程序在应用层,故为了从内核中将数据读到应用层,提高效率。LINUX&UVC驱动使用的是内存映射的方式。其原理就是同一片内存空间,分别映射到用户层和内核层。这样在内核中写内存,在应用层通过读应用......
    阅读数:26点赞数:02024-04-02 15:32:08
    在启动UVC相机前,需要先准备好数据的存储缓冲区,使用VIDIOC_REQBUFS控制吗。 // 请求内存缓冲区 reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; reqbuf.memory = V4L2_MEMORY_MMAP; ......
    阅读数:34点赞数:02024-04-02 12:09:50
    在LINUX&UVC驱动中单独有一个文件命名为uvc_queue.c,其实现的就是管理UVC驱动中视频数据缓冲区队列的,即Video buffers queue management。UVC视频队列实始化的函数是uvc_queue_init(),并且永远不能失败。视频缓冲区(Video b......
    阅读数:21点赞数:02024-04-02 10:02:31
    UVC视频的协商其实走的是VS_PROBE_CONTROLL请求,使用该请求可以获取一个默认的视频格式、分辨率。当然,如果用户指定非默认的,会也使用VS_PROBE_CONTROLL请求来验证是否存在。无论是默认的还是新指定的,最终协商完成后,都会使用VS_COMMIT_CONTROL请求最后进行提......
    阅读数:41点赞数:02024-04-01 16:26:28
    UVC视频分为视频格式、帧大小及帧率。不过一般帧率和帧大小(分辨率)合并在一起的。视频格式通过VIDIOC_ENUM_FMT获取到,但该视频格式下可能支持多种帧率和帧大小(分辨率)。故在应用层通过VIDIOC_ENUM_FRAMESIZES控制码来枚举该视频格式下的帧分辨率及帧率。帧分辨率在UVCC......
    阅读数:17点赞数:02024-04-01 12:29:28
    vidioc_enum_fmt_vid_cap 和 vidioc_enum_fmt_vid_out 是Linux内核中V4L2(Video for Linux 2)驱动程序中的两个ioctl命令,用于枚举视频设备的捕获(capture)和输出(output)格式。vidioc_enum_fmt_......
    阅读数:20点赞数:02024-04-01 12:00:19