![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《Linux那些事儿之我是USB》
Linux技术芯
用技术改变生活
展开
-
《Linux那些事儿之我是USB》我是U盘(7)狂欢是一群人的孤单--总结
(1)Linux 设备模型中三个很重要的概念就是总线、设备和驱动,即 bus 、 device 和 driver 。struct bus_type , struct device , struct device_driver ,这三个重要的数据结构都来自同一个地方,称 include/linux/device.h 。(2)总线有很多种,如 PCI 总线、 SCSI 总线、 USB 总线,所以我们会...原创 2018-05-17 09:06:10 · 251 阅读 · 0 评论 -
usb core
1.USB子系统的初始化-------------USB的开始 static int __init usb_init(void){ int retval; if (nousb) { pr_info("%s: USB support disabled\n", usbcore_name); return 0; } retval = usb_debug...原创 2018-06-07 08:00:04 · 1310 阅读 · 0 评论 -
usb core 总结
usb设备生命线(1)usb_init()------->(2)hub_port_connect_change(drivers/usb/core/hub.c) ----->usb_alloc_dev(drivers/usb/core/usb.c)--->hub_port_connect_change{ status = hub_port_init(hub, udev, port...原创 2018-06-07 07:58:37 · 1436 阅读 · 0 评论 -
usb hub
(1)特别的爱给特别的Root Hub 通常做芯片的人把usb主机控制器和root hub集成在一起。 (2)一样的精灵不一样的API usb_init()--->usb_hub_in...原创 2018-06-07 07:55:39 · 2425 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(29)彼岸花的传说(六)--总结
INQUIRY命令是最基本的一个SCSI命令。比如主机第一次探测设备时就要用INQUIRY命令来了解这是一个什么设备,如果SCSI总线上有一个插槽插了一个设备,那么SCSI主机就问它,你是SCSI磁盘,还是SCSI磁带,又或是SCSI的CD ROM呢?作为设备,它内部一定有一段固件程序,即所谓的firmware。它就在接收到主机的INQUIRY命令之后做出回答。依据SCSI协议中规定的格式了。不仅...原创 2018-05-29 07:18:50 · 533 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(28)彼岸花的传说(五)--总结
static int usb_stor_control_thread(void * __us){ struct us_data *us = (struct us_data *)__us; struct Scsi_Host *host = us_to_host(us); for (;;) { usb_stor_dbg(us, "*** thread sleeping\...原创 2018-05-29 07:16:09 · 791 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(27)彼岸花的传说(四)--总结
U盘,不仅仅是USB设备,还是“盘”,它还需遵守USB Mass Storage协议,以及Transparent SCSI规范。从驱动程序的角度来看,它和一般的SCSI磁盘差不多。所以U盘的工作真正需要的是四个模块,usbcore,scsi_mod,sd_mod,以及咱们这里的usb-storage,其中sd_mod恰恰就是SCSI硬盘的驱动程序。没有它,你的SCSI硬盘就别想在Linux下面转起...原创 2018-05-29 07:13:59 · 372 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(26)彼岸花的传说(三)--总结
usb_stor_probe1{ init_waitqueue_head(&us->delay_wait); INIT_DELAYED_WORK(&us->scan_dwork, usb_stor_scan_dwork);}usb_stor_probe2{queue_delayed_work(system_freezable_wq, &us->scan...原创 2018-05-23 20:18:34 · 431 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(24)彼岸花的传说(一)--总结
static int usb_stor_acquire_resources(struct us_data *us){th = kthread_run(usb_stor_control_thread, us, "usb-storage"); if (IS_ERR(th)) { dev_warn(&us->pusb_intf->dev, ...原创 2018-05-23 20:17:17 · 191 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(23)传说中的urb--总结
(1)“urb”,全称USB Request Block。USB设备需要通信,要传递数据,就需要使用urb,确切地说,应该是USB设备驱动程序使用urb。实际上,作为USB设备驱动,它本身并不能直接操纵数据的传输,在USB这个大观园里,外接设备永远都是配角,真正的核心只是USB Core,而真正负责调度的是USB主机控制。这个通常看不见的USB主机控制器芯片,俨然是USB大观园中的大管家。设备驱动...原创 2018-05-23 20:15:22 · 729 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(22)通往春天的通道--总结
(1)有管道都是用来传输东西的,只不过有些管道传输的是实实在在的物质,而有些管道传输的是数据。在USB代码中管道就是用来传输数据及通信。通信是双方的,不可能自言自语。而在USB的通信中,一方肯定是主机,另一方是什么?是设备吗?说得更确切一点,真正和主机进行通信的是设备内的端点。关于端点,我们也可以专业一点说,从硬件上来看它是实实在在存在的,它被实现为一种FIFO,支持多少个端点是接口芯片的一个重要...原创 2018-05-21 22:26:21 · 750 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(21)冬天来了,春天还会远吗(五)--总结
(1)看完了get_transport()继续看get_protocol()和get_pipes(). usb_stor_probe1(){ /* Get standard transport and protocol settings */ get_transport(us); ...原创 2018-05-21 22:22:04 · 286 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(20)冬天来了,春天还会远吗(四)--总结
(1)结束了get_device_info,我们继续沿着storage_probe一步一步地走下去。继续,这就是我们前面提到过的三个函数,get_transport、get_protocol和get_pipes。一旦结束了这三个函数,我们就将进入本故事的高潮部分。 usb_stor_probe1(){ /* Get standard transport and protocol se...原创 2018-05-21 22:19:55 · 198 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(19)冬天来了,春天还会远吗(三)--总结
(1)usb_stor_probe1()--->static int get_device_info(struct us_data *us, const struct usb_device_id *id,struct us_unusual_dev *unusual_dev){ us->unusual_dev = unusual_dev; //把unusual_dev给记录在us...原创 2018-05-21 22:17:56 · 168 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(18)冬天来了,春天还会远吗(二)--总结
(1) #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \ vendorName, productName, useProtocol, useTransport, \ initFunction, flags) \ { USB_DEVICE_VER(id...原创 2018-05-21 22:16:19 · 180 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(17)冬天来了,春天还会远吗(一)--总结
(1)原创 2018-05-20 10:27:12 · 238 阅读 · 0 评论 -
《Linux那些事儿之我是USB》我是U盘(6)未曾开始却似结束--总结
(1)设备模型,但是不懂设备模型又怎能说自己懂设备驱动呢?读代码的人,写代码的人,都要知道,什么是设备驱动?什么又是设备?设备和驱动之间究竟是什么关系?设备如何与计算机主机联系起来?计算机世界里,设备有很多种类,比如PCI设备,比如ISA设备,再比如SCSI设备,再比如我们这里的USB设备.为设备联姻的是总线,是他把设备连入了计算机主机.但是与其说设备是嫁给了计算机主机,倒不如说设备是嫁给了设备驱...原创 2018-05-17 09:09:06 · 223 阅读 · 0 评论 -
usb u盘
1. 小城故事-Makefile kernel/drivers/usb/storage 这个目录里边的代码是针对一类设备的,不是某一种特定的设备,这一类设备就是USB Mass Storage 设备。关于这类设备,有专门的文档进行介绍,有相应的spec 描述这类设备的通信或者物理上电特性上等方面的规范,U 盘只是其中的一种,这种设备使用的通信协议被称为Bu...原创 2018-06-07 08:01:09 · 636 阅读 · 0 评论