![](https://img-blog.csdnimg.cn/20190714173251890.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux内核之USB
记录linux内核中usb子系统的学习过程。如有理解错误,烦请批评指正,谢谢。
mkelehk
「可以做」跟「做得好」相差很远!
展开
-
linux usb gadget驱动详解(五)
现从fsg_bind()讲起。//不失一般性,删掉错误处理和configfs相关代码static int fsg_bind(struct usb_configuration *c, struct usb_function *f){ struct fsg_dev *fsg = fsg_from_func(f); struct fsg_common *common = fsg->common; struct usb_gadget *gadget = c->cdev-...原创 2020-07-04 12:46:40 · 4347 阅读 · 7 评论 -
linux usb gadget驱动详解(四)
现从msg_bind()开始讲起,原创 2020-07-04 09:06:24 · 5674 阅读 · 1 评论 -
linux usb usbip驱动详解(六)
我们开始讲解usbip-host驱动原理。 我们前面一直都没有讲devid的作用,本文会详细讲解。 usbip-host驱动源文件大多以stub_*命名,我们先看stub_main.c的usbip_host_init()函数:static int __init usbip_host_init(void){ int ret; init_busid_table(); stub_priv_cache = KMEM_CACHE(stub_priv...原创 2020-07-02 22:59:55 · 2207 阅读 · 0 评论 -
linux usb usbip驱动详解(五)
最后讲解usbip-host驱动原创 2020-07-02 19:57:07 · 2360 阅读 · 1 评论 -
linux usb usbip驱动详解(四)
我们先讲解vhci-hcd驱动。原创 2020-07-02 17:47:23 · 2767 阅读 · 1 评论 -
linux usb usbip驱动详解(三)
usbip协议很简单,总共有4对:OP_REQ_DEVLISTOP_REP_DEVLISTOP_REQ_IMPORTOP_REP_IMPORTUSBIP_CMD_SUBMITUSBIP_RET_SUBMITUSBIP_CMD_UNLINKUSBIP_RET_UNLINK分为控制命令和数据传输命令两大类。控制命令主要是用来list设备或者导出设备:在C/S模式中基本都是client发出请求,譬如当client在“usbip attach -r 192.168.100.191 -b 2-原创 2020-07-02 01:53:48 · 3226 阅读 · 4 评论 -
linux usb usbip驱动详解(二)
终于来到usbip驱动代码分析了! 我们在做产品时,通常是先讨论方案、制定协议、编码和测试。 usbip的方案是行得通的,它是从URB对象获取信息,然后从tcp发送出去的,URB是linux usb子系统里面用于抽象usb通信而精心设计的对象,只要server和client两边在恰当的时机分别隔断各自系统的usb通信流程,然后巧妙地交换数据,各自系统都察觉不到,就像黑客利用钩子函数做rookit。如果server和client都是linux系统,就很容易理解了,毕竟部...原创 2020-07-01 21:54:11 · 1932 阅读 · 1 评论 -
linux usb usbip驱动详解(一)
在分析usbip驱动前,我们先来学习一下usb总线在linux系统下的表示。我们知道在linux中,/proc和/sys这个两个文件系统包含了很多有用的信息,所以usb的信息自然也少不了利用他们来展示。1,我们在《linux usb gadget驱动详解(三)》知道了ls /sys/class/udc 能查看系统注册了的udc驱动。2,cat /proc/devices能查看当前系统注册了哪些驱动,linux系统为每个已注册的设备驱动分配一个“主设备号”:Character devices原创 2020-07-01 16:57:24 · 7979 阅读 · 16 评论 -
linux usb gadget驱动详解(三)
本文将对linux4.4.19版本usb gadget源码进行简单分析。鉴于前文反复测试U盘设备驱动,现从linux-4.4.19/drivers/usb/gadget/legacy/mass_storage.c开始分析。 目的是了解U盘设备驱动的工作原理,为啥它能让PC识别成“可移动磁盘”,以及它可以像市面上的U盘一样能读写文件。最后介绍内核gadget框架提...原创 2019-07-29 14:54:05 · 11981 阅读 · 4 评论 -
linux usb gadget驱动详解(二)
在上篇《linux usb gadget驱动详解(一)》中,我们了解到gadget的测试方法,但在最后,我们留下一个问题,就是怎样使用新的方法进行usb gadget驱动测试。 我们发现linux的文档是宝库! 这篇文章的测试方法主要是参考如下文档:linux-4.4.19/Documentation/ABI/testing/configfs-...原创 2019-07-28 15:18:23 · 11038 阅读 · 1 评论 -
linux usb gadget驱动详解(一)
由于PC的推广,USB(通用串行总线)是我们最熟知的通信总线规范之一,其他的还有诸如以太网、PCIE总线和RS232串口等。这里我们主要讨论USB。 USB是一个主从通信架构,但只能一主多从。其中usb主机控制器有ECHI(https://www.intel.com/content/www/us/en/products/docs/io/universal-se...原创 2019-07-28 12:39:33 · 11737 阅读 · 0 评论 -
linux 开发板(Linux USB Gadget) 模拟u盘
http://blog.csdn.net/a_tu_/article/details/43707023前几天,搞了 hid设备,通过usb hid设备和windows进行通信。现在开始搞这个 mass storge首先说明 环境:linux版本:3.15 使用开发板:SAMa5d3 编译环境:ubuntu 12.041、首先配置内核,见下图转载 2016-09-21 10:41:38 · 2371 阅读 · 0 评论 -
USB Gadget Storage功能调试
mark一下:http://blog.csdn.net/yimiyangguang1314/article/details/42744123由于工作的需要,实现板卡通过Micro USB线与PC连接,作为PC的 外设存储,PC拷贝数据到板卡中,或者把板卡中的数据通过USB线拷贝到PC端,实现数据的交互,板卡采用Linux操作系统,笔者采用的是AM335X 处理器平台:开发过转载 2016-09-15 13:30:53 · 3925 阅读 · 1 评论