USB 5. Video 6. Audio 7. Block 8. MTD
一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。
USB控制器作为Device时,称为USB设备控制器,使用UDC(usb device controller)驱动。本节只分析USB控制器作为Device时的驱动框架。...USB控制器作为Device时,驱动框架可分为5层。...module_exit(_name ## mod_exit) // 模块卸载 #define DECLARE_USB_FUNCTION(_name,...Gadget Configfs Configfs是一种基于ram的文件系统,可以在用户空间直接控制内核对象,主要适用于内核对象有众多配置的模块,比如USB复合设备。...5.UDC驱动 5.1.函数接口 UDC驱动模块定义如下,内核初始化或模块加载时初始化,创建udc_class,设置uevent的回调函数为usb_udc_uevent。
Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。
怎样理解 Gadget 框架 USB 协议是主从结构: 左边主机,右边从机;USB 有主机控制器 UHC 和从机控制器 UDC,主机侧有 USB Device Driver,从机侧有 USB Function...意思是说,一个开发板,可以当 USB 主机,接鼠标、键盘等从机;一个开发板也可以当 U 盘,接入 PC 电脑,此时开发板是从机。因此,我们要掌握两套驱动框架。...本文主要针对主控 Soc 作为 USB 从机的情况,Linux 为其提供了 Gadget 框架。...从硬件软件角度理解 Gadget 框架 USB 传输的核心是 endpoint,使用 endpoint 可以收发数据。...从数据传输的角度理解 Gadget 框架 5.1 使用流程 在 USB 协议中,永远是 Host 主动发起传输。
文章目录 Linux USB 开发指南 1 前言 1.1 文档简介 1.2 目标读者 1.3 适用范围 2 模块介绍 2.1 模块功能介绍 2.2 相关术语介绍 2.3 模块配置介绍 2.3.1...1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...2.3.1 Device Tree 配置说明 设备树中存在的是该类芯片所有平台的模块配置,设备树文件的路径为:kernel/linux-4.9/arch/arm64(32 位平台为 arm)/boot...Linux 内核提供了完整的 USB 驱动程序框架。...Linux 有原生 gadget 框架,通用的配置流程可参考下文。
Android OTG之USB转串口模块通讯 微信公众号:CodingAndroid CSDN:http://blog.csdn.net/xinpengfei521 1.背景简介 我们公司开发了一款室内机平板...2.分析及实现思路 智能门锁的控制是通过使用 433射频(不了解的请百度)来进行通讯的; 平板是没法与智能门锁直接进行通讯,但是厂家提供了一个433通讯模块(支持串口); 而平板(支持OTG)是支持USB...3.主要代码实现 3.1初始化USB转串口模块 由于我们选用的是CH340模块,我们先导入ch340的 jar 包,然后在代码中检查手机/平板是否支持USB HOST模式,如果支持我们就初始化通讯时的相关参数...4.插入模块实现自动打开APP Android中USB的插拔都会发送一个广播,我们只需要在AndroidMenifest.xml文件中接收这个广播就可以了,当我们入模块的时候就会启动我们的APP,第一次会弹出一个对话框询问我们是否打开...设备模块的product-id和vendor-id,每个模块厂家这个值都是不一样的,有两种获取方式,一个是代码中枚举USB设备然后打印出来,另外一种方法是打开Logcat观察,然后插入USB设备,你会发现系统会打印出来这个
USB设备驱动程序开发框架 USB设备驱动程序开发框架的源代码文件 文件名 说明 Driver.h 驱动程序头文件 DrvInit.c 入口例程和卸载例程 DrvPnp.c 即插即用例程 DrvDispatch.c...分发例程 DrvPower.c 电源管理例程 Resource.h 资源管理头文件 Resource.rc 版本资源信息 USB设备驱动程序开发框架的构造文件 文件名 说明 DrvBuild.bat
/usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...鼠标驱动(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include ...该宏定义在下 这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生的设备搜索符号,这个宏生成了一个名为__mod_pci_device_table...#include #include #include #include ...该宏定义在下 这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生的设备搜索符号,这个宏生成了一个名为__mod_pci_device_table
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下..."level": 1, "manufacturer": "QEMU", "port": 0, "prodid": "0001", "product": "QEMU USB...: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct...设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By...USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
[ 0.513302] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 0.513303] usb usb1...Controller [ 0.513304] usb usb1: Manufacturer: Linux 3.10.0-327.el7.x86_64 xhci-hcd [ 0.513305...] usb usb1: SerialNumber: 0000:00:14.0 [ 0.518700] usb usb2: New USB device found, idVendor=1d6b,...0.518702] usb usb2: Product: xHCI Host Controller [ 0.518702] usb usb2: Manufacturer: Linux 3.10.0...] usb 1-4: New USB device found, idVendor=413c, idProduct=301a [ 1.040348] usb 1-4: New USB device
1、概述 EC20 R2.1 Mini PCIe-C 模块是 PCI Express Mini Card 1.2 标准接口 LTE 模块。...本文章主要讲解了如何驱动EC20 R2.1 Mini PCIe-C 模块的硬件电路设计,主要包含有: 电源设计 通讯接口 SIM卡的防护 1.1、EC20 R2.1 Mini PCIe-C 模块引脚分配...GND GND 地 35 GND GND 地 36 USB_D- USB_DM IO USB 差分信号(-) 90Ω 差分特性阻抗 37 GND GND 地 38 USB_D+ USB_DP...IO USB 差分信号(+) 90Ω 差分特性阻抗 39 3.3Vaux VBAT PI 3.3V~3.6V 电源输入 40 GND GND 地 41 3.3Vaux VBAT PI 3.3V~...足够整个系统,包括网络模块的正常供电需求。 2.2、二级网络模块电源设计 下图给出了使用 LDO 给网络模块供电的电源电路参考设计。
在上一章分析完USB总线驱动程序后, 接下来开始写一个USB驱动: 本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键 参考/drivers/hid/usbhid/...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include #include... #include #include #include #include... static struct input_dev *myusb_mouse_dev; //input_dev static char *myusb_mouse_buf...(full HID) support //hid:人机交互的USB驱动,比如鼠标,键盘等 然后make uImage 编译内核 将新的触摸屏驱动模块放入nfs文件系统目录中 5.2然后烧写内核,装载触摸屏驱动模块
我们的笔记本通常没有串口,这时就需要一个USB转TTL的模块了,它的作用就是把电平转换到双方都能识别进行通信,USB口插笔记本,模块的相应针脚连接树莓派的UART串口TX、RX。...二、组件 ★Raspberry Pi 3主板*1 ★树莓派电源*1 ★USB TO TTL模块*1 ★面包板*1(可选) ★40P软排线*1 ★跳线若干 三、实验原理 ?...USB TO TTL模块 ? USB TO TTL模块 ? CH340G模块原理图 (一)串口通信介绍 串口 串口,即串行接口,与之相对应的另一种接口叫并口,并行接口。.../USART 本次实验中的USB TO TTL模块就是使用的CH340G芯片。...树莓派(name) T型转接板(BCM) USB TO TTL模块 TXD TXO RXD RXD RXI TXD GND GND GND 下图中的USB要插到笔记本电脑上哈,为方便拍照就没插上。
Linux3.11版本引入了基于configfs的usb gadget configfs。.../bin/bash function start_uac2() { # usb_gadget依赖于libcomposite模块 modprobe libcomposite # 挂载config文件系统...控制器的名称 3.代码分析 3.1.初始化 usb gadget configfs模块的初始化函数为gadget_cfs_init。...当加载libcomposite.ko模块后,会在/sys/kernel/config/目录下生成一个usb_gadget目录。...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(
编辑:RG USB转4路232、485、TTL模块调试。...这个模块总共用了8颗芯片,其中一个是5v转3.3v芯片,一个XR21V1414转串口芯片,两个SP3232PE芯片,四个SP3485EN芯片,其实并不复杂的一个电路,但是在测试的过程中却遇到很多的问题,...焊接完后,通过USB连接到电脑USB口,用万用表测试各部分电压正常,然后打开串口进行测试,因为是4路电路,计划打开四个串口窗口分别测试232、485 、TTL。...对于这个小模块,花了很长的时间弄,其实都是因为一小点的问题导致整个电路达不到效果,所以很多时候一定要好好分析,去怀疑每一种可能才能更好的解决。
一、gin框架常用模块 1、基础常用go写法 1)将收到的http post请求中body参数转换为对象 func UploadConfig(c *gin.Context) { p := mconfig.CoursewareParam...:定义了一个mconfig.CoursewareParam是一个结构体类型,用于存储课件发布的相关配置参数 c.ShouldBindJSON(&p)的含义是:c.ShouldBindJSON是Gin框架中的一个函数
模块系统介绍 ABP提供了基础设施功能来构建模块,并通过组合这些模块来创建应用。一个模块可以依赖于另一个模块。一般来讲,一个程序集被认为和定义成一个模块。...ABP是根据模块之间的依赖顺序来执行模块的这些方法的。例如模块A依赖于模块B,那么模块B就会在模块A之前做初始化。...PreInitialize 当启动时,会首先调用PreInitialize方法,它在模块初始化之前执行,所以通常会将框架和模块的配置定义在这里。同时,一些在依赖注入之前执行的代码也会写在这里。...ABP在启动模块中,自动的解析模块之间的依赖关系并初始化模块。启动模块是最后一个被初始化的模块。...插件模块 ABP可以在启动模块中检测、加载模块集,也可以动态的加载模块,这些动态加载的模块就称之为插件模块。
为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 USB 存储设备。 在本教程中,我们将讨论三种不同的方法来禁用 Linux 机器上的 USB 存储设备。...方法 1:伪安装 在本方法中,我们往配置文件中添加一行 install usb-storage /bin/true, 这会让安装 usb-storage 模块的操作实际上变成运行 /bin/true,...方法 2:删除 USB 驱动 这种方法要求我们将 USB 存储的驱动程序(usb_storage.ko)删掉或者移走,从而达到无法再访问 USB 存储设备的目的。...但是这个方法有一个小问题,那就是当系统内核更新的时候,usb-storage 模块会再次出现在它的默认位置。...usb-storage 就在就会被系统阻止加载,但这种方法有一个很大的缺点,即任何特权用户都可以通过执行以下命令来加载 usb-storage 模块, $ sudo modprobe usb-storage
领取专属 10元无门槛券
手把手带您无忧上云