USB Storage Probe 函数分析

深入解析Linux USB 3.0设备控制器驱动框架与开发实践 USB(通用串行总线)是现代计算机连接外设的核心技术,其协议栈实现了从物理连接到高层应用的无缝交互。在Linux内核中,USB子系统通过分层架构管理设备通信,其中设备控制器驱动负责底层硬件操作。USB 3.0引入双总线架构和xHCI控制器,显著提升传输速率,其驱动框架围绕UDC、Gadget Function和Composite Driver三层模型构建,通过端点与请求机制实现异步数据传输。理解这套框架对于开发嵌入式USB设备、虚拟外设及调试驱动问题至关重要,尤其在涉及高速数据传输和复杂状态管理的场景下。本 阅读详情
Hive数据仓库分层架构实战:4层黄金模型×6大业务场景×万亿级数据优化方案 根据《2023数据中台成熟度报告》,‌78%的ETL任务性能瓶颈‌源于分层设计不合理。本文基于某头部电商平台PB级数据仓库建设经验,结合金融风控、用户画像、实时大屏等核心场景,深度解析‌ODS→DWD→DWS→ADS‌四层架构设计原则,揭秘‌万亿级数据治理方案‌与‌维度建模20大避坑策略‌。 阅读详情

相关推荐

从Landsat 8到哨兵2号:手把手教你用ENVI处理不同卫星数据的NDVI(附常见错误排查)

本文详细解析了从Landsat 8到哨兵2号的多源遥感数据NDVI计算全流程,包括不同卫星的波段设置差异、ENVI处理步骤及常见错误排查。通过实战指南和代码示例,帮助用户高效处理NDVI数据,特别针对哨兵2号数据的特殊处理提供了专业建议,适用于植被监测和遥感分析

weixin_27741699的博客 307

USB驱动分析(三)

USB驱动分析(三) 需要注意的是,这些调试信息得是我们打开了编译选项CONFIG_USB_STORAGE_DEBUG才有意义的,这里也看出来了,如果这个选项为0,那么这几个宏就什么也不干,因为它们被赋为空了.关于US_DEBUG系列的这几个宏,就讲这么多,之后再碰上,将直接过滤掉,不予多说. 关于prink和kmalloc,这两个函数也没有太多需要说的,对大多数人来讲,就把printk

1871

Linux下的USB总线驱动(三)

版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127       4.U盘驱动分析 USB Mass Storage是一类USB存储设备,这些设备包括USB磁盘、USB硬盘、USB磁带机、USB光驱、U盘、记忆棒、智能卡和一些USB摄像头等,这类设备由USB协议支持。 首先我想去看看/driver/usb/storage/Makefile E

weiqing的专栏 4333

usb驱动学习笔记

1. usb-storage 驱动注册过程.  module_init(usb_stor_init); usb_stor_init(void) drivers/usb/storage/usb.c>     usb_register(&usb_storage_driver);         usb_register_driver(driver, THIS_MODU

hs6662668的专栏 1307

usb storage驱动分析

本文以usb storage设备驱动来分析

鹤冲云霄的专栏 1万+

《Linux那些事儿之我是USB》我是U盘(12)梦开始的地方

对于整个usb-storage模块,usb_stor_init()函数是它的开始,然而,对于U盘驱动程序来说,它真正驱使U盘工作却是始于storage_probe()函数。 两条平行线只要相交,就注定开始纠缠一生,不管中间是否短暂分离。USB Core为设备找到了适合它的驱动程序,或者为驱动程序找到了它所支持的设备,但这只是表明双方的第一印象还可以,但彼此是否真的适合对方还需要进一步了解。而U盘...

javatome 264

USB大容量存储设备浅析

当插入U盘,USB主机控制器会识别到该设备是一个海量存储设备,然就就会根据SCSI协议,先发送CBW命令块包,U盘收到后根据SCSI协议解析该报,并回复命令执行状态包(CSW),就是应答,作为对前一个CBW命令块包处理结果的回应。同IDE(ATA)完全不同的接口, IDE接口是普通PC的标准接口,而SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。IDE、SCSI、USB,并行口,串口,其中并行口与串口的速度非常慢,不提也罢,最主要的就是IDE,usb, SCSI。

奶牛养殖场小马 4467

ubuntu下ecm驱动_Linux下USB驱动框架分析【转】

http://blog.csdn.net/jiang_dlut/article/details/5832237: 这个讲了usb_device_driver和usb_driver。usbhub发现新设备的插入时, 先用device来进行dvice_add(见usb_alloc_dev, 其中dev->dev.type = &usb_device_type; 这个表示是整个usb de...

weixin_33108105的博客 716

USB驱动之三host模式下usb设备匹配驱动过程以数据流向图

我们知道usb的设备和驱动是根据id进行匹配,具体的匹配过程如下 在kernel4.4/drivers/usb/storage/usb.c的storage_probe函数中加上WARN_ON(1)把相应的堆栈打印出来,如下 [ 74.336697] sprd-typec 41800000.spi:pmic@0:typec@380: now works as drp and is in A...

Android开发 2192

嵌入式linux下u盘升级的设计

一.内核配置,配置使其支持u盘 make menu_config     Device Drivers --->         [*]USB support -->                USB Mass Storage support u盘底层依赖scsi,所以scsi的配置也要配置好 二.设计更新代码 我是这么设计的:写个应用程序存放在文件系统的/bin目录下,取名up

paomadi的专栏 5727

usb storage开始深入linux2.6驱动

usb storage开始深入linux2.6驱动                                                                                           作者msn:hougg@hotmail.com        搞了好久linux基本上还是停留在内核配置编译、启动脚本修改、应用程序等表面的东西。也只能能

houen_study的专栏 3277

Linux之 USB驱动框架-usb U盘驱动源码分析(8)

通过对上面这个usb_stor_msg_common函数分析,我们现在已经把控制urb提交给USB内核了,当处理完,就会通知USB设备驱动,调用其回调函数,该回调函数在填充控制urb时已经说明,也就是usb_stor_blocking_completion函数。在上面这个usb_stor_acquire_resources函数中,我们创建并执行了usb_stor_control_thread这个内核线程,这个控制线程用来完成数据的接收和发送,它会一直运行,直到驱动程序退出。/创建并执行控制线程。

z20230508的博客 2130

mass storage

最近在查找数据拷贝的过程中断线的原因,原因还没怎么找到,但是想写一点东西来记录最近的工作情况也顺便梳理下思路,给接下来的工作做个好的tag。      在android的USB驱动相关的部分中,目前接触最多的是android.c文件,因为这个文件和f_mass_storage.c以及f_adb.c共同构成了g_android.ko。      讲到这里不得不提的两个英文简称是FSG和LUNs。

曹太强的专栏 2935

uboot usb网卡分析

前言:最近折腾下uboot,分析了下uboot的usb接口的网卡,就usb底层操作(寄存器操作)而言却是很难,我也不太懂。我们在uboot添加自己的usb接口网卡,前提uboot里已经是做好了usb底层设置的(例如arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c文件提供了usb寄存器的操作函数,发送数据包,初始化等。。。。)。 一,怎样在uboot可以使用usb s...

xbfct的博客 4580

*Linux下的USB总线驱动 u盘驱动分析*

Linux下的USB总线驱动(三) u盘驱动分析 版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127 https://www.xuebuyuan.com/1398697.html USB Mass Storage是一类USB存储设备,这些设备包括USB磁盘、USB硬盘、USB磁带机、USB光驱、U盘、记忆棒、智能卡和一些USB摄像头等,这类设备由USB协议支持。 首先我想去看看/driver/usb/storage/Makefile EXTRA_CFLAGS :=

LKS_YGX的博客 1350

uboot usb驱动模型

uboot usb驱动模型

qq_41483419的博客 1071

i.MX6ULL USB 驱动分析——以 RTL8732 USB 设备为例

USB 驱动的作用,是让 Linux 内核能够识别、管理并和 USB 设备通信。以 i.MX6ULL 的 OTG2 接口连接 RTL8723BU USB WiFi 为例,整体流程可以1、usb phy层:首先,设备树中的usbphy2节点会被转换成,并匹配到,用于初始化 USB PHY 相关的硬件功能,例如 D+ / D- 信号、电源、时钟和线状态检测等。2、of platform层 :usbotg2节点会引用usbphy2。

2501_92596338的博客 570

Linux USB Hub驱动深度解析:从内核源码到设备枚举与调试实战

USB(通用串行总线)是现代计算机连接外设的核心技术,其核心在于一套精密的设备管理与通信协议。在Linux系统中,USB子系统通过分层驱动模型实现设备的即插即用,其中USB Hub驱动扮演着至关重要的“交通枢纽”角色。它不仅是硬件端口扩展的软件抽象,更是负责设备连接检测、电源管理、端口状态监控以及发起完整设备枚举流程的协调器。理解Hub驱动的工作原理,对于开发稳定的USB外设、调试复杂的设备兼容性问题以及优化系统电源管理具有极高的工程价值。本文聚焦于Linux内核中关键的`hub.c`模块,深入剖析其如何通

germmy-神一样的开发 372

Android7 U盘插拔链路源码全解析(二)内核层USB驱动与uevent机制

本文深入解析了Android USB设备检测与枚举的内核层工作原理。当U盘插入时,Linux USB子系统通过分层架构完成从硬件中断到用户态通知的全过程: 硬件检测:VBUS供电和DP/DM信号变化触发中断 Hub事件处理:hub_events()工作队列检测端口状态变化 设备枚举: 端口复位与地址分配 获取设备描述符(VID/PID等) 获取配置描述符树 设置激活配置 驱动绑定:通过usb-storage驱动匹配存储设备 设备节点创建:生成/dev/sda块设备 uevent通知:向用户态广播设备添加事件

AfinalStone的专栏 253

《Linux那些事儿之我是USB》我是U盘(13)设备花名册

storage_probe这个函数挺有意思,总长度不足100行,但是干了许多事情,这就像足球场上的后腰,比如切尔西的马克莱莱,在场上并不起眼,但是却为整个团队做出了卓越的贡献。 我们继续看storage_probe的代码: 972 mutex_init(&(us->dev_mutex)); 973 init_MUTEX_LOCKED(&(us->sema));...

javatome 93

【ISAR成像】舰船ISAR成像的距离对准【附报告及MATLAB代码】.zip

1.版本:matlab2014a/2019b/2024b2.附赠案例数据可直接运行。3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

上一篇: linux常用命令
下一篇: USB信号特性
rotus
博客等级 码龄23年 7粉丝 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值