JJJ:urb的complete回调流程

五、从usb的插入开始 当usb设备插入接口,电压变化会通知到usb主控器, 触发主控器中断,如果主控器不支持中断,那么会使用rh_timer方法,轮询接口 其结果都是调用usb_hcd_poll_rh_status void usb_hcd_poll_rh_status(struct usb_hcd *hcd) { struct urb *urb; int length; unsigned lon 阅读详情

urb->complete
__usb_hcd_giveback_urb
usb_hcd_giveback_urb---------------------------return URB from HCD to device driver
xhci_giveback_urb_in_irq
xhci_td_cleanup
finish_td

控制传输:process_ctrl_td -> finish_td
块传输和控制传输:process_bulk_intr_td -> finish_td
等时传输:process_isoc_td -> finish_td

以块传输为例:
process_bulk_intr_td
handle_tx_event
xhci_handle_event
xhci_irq

1次urb的完成,意味着1次控制传输的完成,可能就是(令牌,data,握手)的3个阶段的完成

usb host 驱动之 urb 1、URB 处理流程 (1)usb 设备驱动程序创建并初始化一个访问特定usb设备特定端点的 urb,并提交给 usb core; (2)usb core 提交该 urb 到 usb 主控制器驱动程序; (3)usb 主控制器驱动程序根据 urb 描述的信息,来访问 usb 设备; (4)当设备访问结束后,usb 主控制器驱动程序通知 usb core(调用这个函数usb_complete_t complete;)然后其再通知usb设备驱动程序。 1.1 创建URB struct urb *usb_allo 阅读详情

相关推荐

FPGA USB host原型验证流程及调试手段

FPGA USB host原型验证流程及调试手段

ARM-Linux 875

ohci之usb_submit_urb 一

usb控制器与usb设备之间是通过urb结构来传递数据,urb是usb通信基础。          驱动在使用urb之前要先通过usb_alloc_urb来创建struct urb结构,并通过usb_fill_xx_urb来初始化创建的urb,然后通过usb_submit_urb把urb提交给主控制器,由控制器进行实际发送,发送完给控制器把urb所有权交还给驱动,并可通过回调函数获取urb发送状

fanqipin的专栏 6576

多节阶梯阻抗变换器工程设计的公式推导

  多节阶梯阻抗变换器工程设计的公式推导,仔细看此文,有点烧脑,所以碎片十分钟,收获一丢丢。   现在就来设计一个超宽带多节阶梯阻抗变换器,要求带内纹波符合切比雪夫分布。   其实,此文已经是省去了大量中间公式推导,只剩下精炼内容了。   阶梯阻抗变换器指标需求   假设现在有一项目需求分析结果是:做一个微带线超宽带阶梯阻抗变换器,指标如下:   从50欧变换到100欧;   回波损耗22dB;   功率容量:2W;   频率范围2~18GHz;   插损能做多少就多少,用30mil板厚.

wusuowei1010的博客 7805

usb驱动的基本结构和函数简介

几个重要的结构 struct--接口 [plain] view plaincopy struct usb_interface    {            /* array of alternate settings for this interface,             * stored in no particu

知秋一叶 4084

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1356

爬虫小例--爬药监局(上)

”明月如霜,好风如水,清景无限 “ 文远最近也算是爬虫入门吧,相信后面会慢慢熟悉。 壹 直接上例子,爬取药监局的数据。目的是得到每家公司的详情数据,例: 具体网址:http://scxk.nmpa.gov.cn:81/xk/ 这是主页,下面详情信息: 贰 分析,通过网页检查发现,主网页上没有公司相关数据,观察XHR中的Ajax请求发现,公司信息都是动态数据(方便更新),点击发现每个公司 的详情信息通过ID号这个参数区别,那么可以确定思路是先得到每个公司的ID号,然后在通过ID对应每一个详细网站,同样右键

john_ashley的博客 4555

USB设备热插拔流程解析

usb_hcd_poll_rh_status函数中,调用主机控制器的hub_status_data函数获取端口状态。如果端口的状态有变化,那么length > 0,把获取到的端口状态的数组拷贝到urb->transfer_buffer中,就是前面的hub->buffer中,同时调用usb_hcd_giveback_urb函数。在usb_hub_init函数中完成了注册hub驱动,然后创建一个工作队列hub_wq,每当有设备连接到USB接口时;sdio的话,主机驱动初始化的时候,会去枚举卡;

我的博客 1618

车辆动力学从入门到进阶之路(传统篇)

新手如何入门车辆动力学开发领域,本文为您引路!

CrazyRabbit的博客 1万+

linux usb root_hub中断传输

https://www.cnblogs.com/tureno/articles/6811367.html

ask_true的博客 1675

自动驾驶仿真:python和carsim联合仿真案例

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。提示:以下是本篇文章正文内容,下面案例可供参考1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在,具体内容如下图所示。

zataji的博客 9060

企业AI Agent审计与合规:从日志留存到网络联动的完整落地指南

审计日志是企业安全与合规体系的基石,尤其在AI Agent大规模接入业务后,如何完整记录其行为链成为新的挑战。从日志留存180天到PCI DSS合规要求,审计体系需要覆盖会话、推理、工具调用、数据访问等关键环节,并结合不可篡改的存储设计,确保证据链可信。同时,借鉴上网行为管理设备对应用行为控制审计的思路,以及Kismet被动监测网络流量的方法论,将网络侧审计与应用侧日志交叉验证,能有效发现越权和异常行为。本文从日志采集、全链路追踪、基线预警到多租户隔离,系统梳理了AI Agent审计与合规落地的关键路径,帮

weixin_32234493的博客 263

linux设备驱动之USB数据传输分析(之五)

也许,有人会有这样的疑问: 对于控制传输,它不也是基于toggle的纠错么,为什么它就不需要修改后续的包的toggle值呢? 这是因为,控制传输的toggle都是从1开始的,删除掉当前的urb,也不会对后面的发包造成影响. 之后,处理完之后,将无用的td删除. 跟踪一下toggle的修正过程.对应的函数为uhci_fixup_toggles().如下所示: stati

kof98765的专栏 1519

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 121

《Linux总线、设备与驱动》USB设备发现机制

转载自:http://blog.youkuaiyun.com/tankai19880619/article/details/11639185 说明:本分析基于mstar801平台Linux2.6.35.11内核,其他内核版本仅供参考。 一、程序在内核中的位置 1.usb host做为pci总线下的一个设备存在(嵌入式系统中有可能也会直接挂在CPU上);这部分驱动由厂家实现,本分析以mst

老孙的android6探索之旅 743

银行统一监管报送系统

依据《银行业金融机构数据治理指引》,银行业金融机构应当建立适应监管数据报送工作需要的信息系统,实现流程控制的程序化,提高监管数据加工的自动化程度。银行业金融机构应当将监管数据纳入数据治理,建立工作机制和流程,确保监管数据报送工作有效组织开展,监管数据质量持续提升。银行通常要对接报送EAST5.0、1104、CRSS等近40个监管应用,涉及近1000张报表。表13-01是主要的监管报送应用、报送依据、报送规范、监管机构名称。

银行信息系统应用架构详解 4346

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

linux下控制usb设备,LINUX下USB1.1设备学习小记(4)_uhci(4)

启动主机控制器和根集线器之后,现在来注册根集线器register_root_hub负责根集线器的注册register_root_hub在/drivers/usb/core/hcd.c中static int register_root_hub(struct usb_hcd *hcd){struct device *parent_dev = hcd->self.controller;struct...

weixin_42360899的博客 883

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Linux之 USB驱动框架-usb_submit_urb和usb_fill_*_urb分析(6)

urb_enqueue = ohci_urb_enqueue,调用ohci_urb_enqueue 函数,if (usb_endpoint_xfer_control(&urb->ep->desc)) //控制传输。if (usb_endpoint_xfer_int(&urb->ep->desc)) //中断传输。(1)如果是 root_hub,则调用 rh_urb_enqueue 函数,usb_giveback_urb_bh 这个函数是怎么初始化并触发执行?

z20230508的博客 1519

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux设备驱动之USB数据传输分析 二

3.2:控制传输过程 1:root hub的控制传输 在前面看到,对于root hub的情况,流程会转入rh_urb_enqueue().代码如下: static int rh_urb_enqueue (struct usb_hcd *hcd, struct urb *urb) {     //如果是中断传输的端点     if (usb_endpoint_xfer_int(&urb-

kof98765的专栏 3361

USB2.0驱动分析Kernel3.10.24

可以用wireshark+usbmon捕捉usb协议数据包。 /****************************************************** * *    加载usbcore *        添加hub interface driver *        添加hub interface device * *************

hpp205的专栏 1176

linux usb usbip驱动详解(五)

最后讲解usbip-host驱动

mkelehk的专栏 3027

linux平台实现USB虚拟总线驱动一(原理以及开发流程)

by fanxiushu 2019-11-07 转载或引用请注明原始作者。 之前的文章阐述过在windows平台下,如何实现USB虚拟总线驱动,以及如何在windows平台采集真实USB设备的数据, 然后通过网络传输,达到 ”延长“ USB线缆的效果。 相关链接如下:https://blog.youkuaiyun.com/fanxi...

fanxiushu的专栏 4207

urb分析,usb_fill_bulk_urb函数理解

usb request block,简称urb。事实上,可以打一个这样的比喻,usb总线就像一条高速公路,货物、人流之类的可以看成是系统与设备交互的数据,而urb就可以看成是汽车。在一开始对USB规范细节的介绍,我们就说过USB的endpoint有4种不同类型,也就是说能在这条高速公路上流动的数据就有四种。但是这对汽车是没有要求的,所以urb可以运载四种数据,不过你要先告诉司机你要运什么,目的地是

1万+

LINUX下USB1.1设备学习小记(5)_uhci与设备(1)

现在开始uhci与设备的通信分析 先看分析枚举过程,再分析数据通信 USB总线上设备的枚举: 1. 当设备插入时,设备的上拉电阻使信号线的电位升高,这时候根集线器检测到设备的插入 2. 主机发送Get_status到根集线器来获得当前端口的状态 3. 主机发送Set_Feature,让根集线器复位端口,使得端口上的设备处于复位状态 4. 主机发送Get_status检测端口的复位是否完

chinseeker 1001

USB学习之一 代码分析和学习心得之初始化流程以及读写流程

usb_init //USB的第一个初始化入口 =>bus_register(&usb_bus_type);//设备驱动模型,总线注册 struct bus_type usb_bus_type = { .name = "usb", .match = usb_device_match, .ue

shipinsky的博客 2393

LINUX下USB1.1设备学习小记(4)_uhci(7)

LINUX下USB1.1设备学习小记(4)_uhci(7) 来源: ChinaUnix博客  日期: 2009.03.13 16:00 (共有条评论) 我要评论   uhci_hub_control在/drivers/usb/host/uhci-hcd.c中 static int uhci_hub_control(stru

autumn20080101的专栏 1322
上一篇: JJJ:base64编码和字节字符串&普通字符串
下一篇: JJJ:linux 内核 hlist 数据结构分析
你板子冒烟了
博客等级 码龄8年 1278粉丝 582原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值