URB初始化完成之后,USBD开始通过usb_start_wait_urb()提交urb请求(它调用usb_submit_urb来真正的发送URB请求),添加completition函数。 接下来,从message.c传到主机控制器(hcd.c),开始真正的usb_hcd_submit_urb()。此时,根据是否为根集线器,进入不同的工作队列。
第二个基本点:usb_fill_control_urb函数,初始化一个控制urb,urb被创建之后,使用之前必须要正确的初始化。 第三个基本点:usb_start_wait_urb函数,将urb提交给咱们的usb core,以便分配给特定的主机控制器驱动进行处理,然后默默的等待处理结果,或者超时。 既然是核心结构体,代码的注释贴上来怎么看都不过分。 kref,u...
最后就是第三个基本点,usb_start_wait_urb函数,将前面历经千辛万苦创建和初始化的urb提交给咱们的usb core,让它移交给特定的主机控制器驱动进行处理,然后等待HCD回馈的结果,如果等待的时间超过了预期的限度,它不会再等,它也在drivers/usb/core/message.c里定义。 定义了一个struct api_context 结构体。api_cont...
在调用usb_submit_urb函数前必须正确的初始化urb, 最后urb的控制将返回给发出申请的dev driver。 usb_submit_urb(struct urb *urb, gfp_t mem_flags) (core/urb.c) ->ep = (usb_pipein(urb->pipe) ? dev->ep_in : dev->ep_out)[usb_pipeendpoint(urb->pipe)]; 根据pipe得到urb要连接到哪个ep的...
• usb_fill_int_urb()的interval: 中断传输中两个URB调度的时间间隔 4.2.3 提交URB URB初始化完成之后,USBD开始通过usb_start_wait_urb()提交urb请求(它调用usb_submit_urb来真正的发送URB请求),添加completition函数。接下来,从message.c传到主机控制器(hcd.c),开始真正的usb_hcd_submit_urb()。此时,根据...
if (!urb) return -ENOMEM; usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char *)cmd, data, len, usb_api_blocking_completion, NULL); //,初始化一个控制urb,urb被创建之后,使用之前必须要正确的初始化。 retv = usb_start_wait_urb(urb, timeout, &length);//将urb提交给咱们的usb cor...
HCD解析urb,拿到数据与USB设备通信。 -> step 4 HCD把urb的所有权交还给驱动程序。 协议层里最重要的函数就是usb_control/bulk/interrupt_msg(),这里就简单地理一条线索, usb_control_msg() => usb_internal_control_msg() => usb_start_wait_urb() => usb_submit_urb() => usb_hcd_submit_urb =>...
(buffer, -- 数据缓冲PASSWORD_LENGTH, -- 数据长度0, -- 保留REQUEST_GET_PASSWORD, -- 请求代码0, -- 即 USB 请求的 wValue 字段TRUE -- TRUE 表示数据输入,反之则是数据输出);status = m_Lower.SubmitUrb(pUrb, NULL, NULL, OPERATION_TIMEOUT);// 判断返回值if (status == STATUS_SUCCESS) {...
(3).usb_internal_control_msg会调用usb_alloc_urb分配一个urb结构,然后调用usb_fill_control_urb函数来填充这个urb结构,然后调用usb_start_wait_urb函数 (4).usb_start_wait_urb会调用usb_submit_urb(urb,GFP_NOIP)将这个urb发送给usb core,完成过程如下: ...
今天给大侠带来基于 FPGA 的 USB 接口控制器设计(VHDL),由于篇幅较长,分三篇。今天带来第三篇,下篇,FPGA 固件开发、USB驱动和软件开发。话不多说,上货。 这里也给出前两篇的超链接: 基于FPGA的USB接口控制器设计(VHDL)(上) 基于FPGA的USB接口控制器设计(VHDL)(中) ...