Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。...2.1 pipe 使用这些接口函数的主要目的是传输数据,传输数据的对象是 USB 设备里的某个 endpoint,这被称为 pipe: /* Create various pipes... */ #define...的输出参数 urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 2.3.4 提交 URB 构造好 URB 后,需要提交到 USB 系统里,才能启动传输。
linux启动顺序: 1)开机BIOS自检 2) MBR引导 3)grub引导菜单 4)加载内核kernel 5) 启动 init 进程 6) 读取...inittab文件,执行rc.sysinit rc 等脚本; 7)启动login登录界面 login 8)在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的
一般的开机启动无非就是四步:BIOS加电自检(检测硬件什么之类的,寻找启动磁盘,在启动磁盘加载MBR);Boot Loader(加载grub.conf顺序启动) ;启动内核(内核会尝试挂载根文件系统,根文件系统至少包含.../etc /bin /sbin /lib /dev 这5大目录); INIT进程初始化(内核会按 /sbin/init /etc/init /bin/init 顺序寻找init程序,rc脚本启动不同级别...这是因为BIOS中包含了CPU 的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。...系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。...如启动 3模式,会有个rc3。d目录,里面就保存着服务。其中,S(start)开头的表明开机启动,K(kill)开头的表明开机不启动。数字表示启动顺序。 数字越小,启动越早。
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...(该总线的第几台设备) speed: 速率 bDeviceClass: 设备类型 idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请 idProduct: 该生产商生产的产品编号...# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct 设备类型bDeviceClass# 类代码 用法 描述 00h 设备描述符 Use...参考文献# USB设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice...By USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
Linux3.11版本引入了基于configfs的usb gadget configfs。...usb gadget configfs重新实现了复合设备层,使用者可以在用户空间配置和组合内核的function,灵活的构成USB复合设备,极大了提高了工作效率。...初始化复合设备数据结构usb_composite_dev,设置USB设备描述符。...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...USB设备复合设备的工作过程。
为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 USB 存储设备。 在本教程中,我们将讨论三种不同的方法来禁用 Linux 机器上的 USB 存储设备。...方法 2:删除 USB 驱动 这种方法要求我们将 USB 存储的驱动程序(usb_storage.ko)删掉或者移走,从而达到无法再访问 USB 存储设备的目的。...usb-storage 保存文件并退出。...usb-storage 就在就会被系统阻止加载,但这种方法有一个很大的缺点,即任何特权用户都可以通过执行以下命令来加载 usb-storage 模块, $ sudo modprobe usb-storage...在更改完成后重新启动系统,以使更改生效。请尝试用这些方法来禁用 USB 存储,如果您遇到任何问题或有什么疑问,请告知我们。
你们有些人经常使用 dd 命令做各种各样的事,比如创建 USB 启动盘或者克隆硬盘分区。不过请牢记,dd 是一个危险且有毁灭性的命令。如果你是个 Linux 的新手,最好避免使用 dd 命令。...现在就可以创建 USB 引导设备了。...让我们继续通过命令用 ISO 文件创建 USB 启动盘: $ bootiso bionic-desktop-amd64.iso 这个命令会提示你输入 sudo 密码。...输入密码并回车来安装缺失的组件(如果有的话),然后创建 USB 启动盘。 输出: [...]...所以我们不需要告诉它 USB 设备路径。如果你连接了多个设备,你可以像下面这样使用 -d 来指明 USB 设备。
你们有些人经常使用 dd 命令做各种各样的事,比如创建 USB 启动盘或者克隆硬盘分区。不过请牢记,dd 是一个危险且有毁灭性的命令。如果你是个 Linux 的新手,最好避免使用 dd 命令。...它有很多额外的功能来帮我们安全创建 USB 引导盘。如果你想确保你的目标是 USB 设备(而不是内部驱动器),或者如果你想检测 USB 设备,你可以使用 Bootiso。...让我们继续通过命令用 ISO 文件创建 USB 启动盘: $ bootiso bionic-desktop-amd64.iso 这个命令会提示你输入 sudo 密码。...输入密码并回车来安装缺失的组件(如果有的话),然后创建 USB 启动盘。 输出: [...]...所以我们不需要告诉它 USB 设备路径。如果你连接了多个设备,你可以像下面这样使用 -d 来指明 USB 设备。
当USB设备插上主机时,主机就通过一系列的动作来对设备进行枚举配置(配置是属于枚举的一个态,态表示暂时的状态),这些态如下: 1、接入态(Attached):设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入...; 2、供电态(Powered):就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置); 3、缺省态(Default):USB在被配置之前,通过缺省地址...0与主机进行通信; 4、地址态(Address):经过了配置,USB设备被复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态; 5、配置态(Configured):通过各种标准的USB...请求命令来获取设备的各种信息,并对设备的某此信息进行改变或设置; 6、挂起态(Suspended):USB总线处于空闲状态的话,该设备就要自动进入挂起状态,在进入挂起状态后,总的电流功耗不超过280UA...是 是 __ __ __ __ __ __ 是 设备在至少3毫秒以内探测不到总线活动,自动进如挂起.设备功能不可用. 下图为设备状态转化图:
2.音频复合设备驱动 从前面的分析中可以看出,复合设备驱动围绕usb_composite_driver和usb_composite_dev两个数据结构展开,legacy方式的复合设备驱动也不例外。...(audio_driver); // 注册audio_driver [include/linux/usb/composite.h] #define module_usb_composite_driver...[include/linux/device.h] #define module_driver(__driver, __register, __unregister, ...) \ static int...USB gadget configfs根据名称查找USB设备控制器,而legacy方式只匹配第一个USB设备控制器,无法匹配指定的USB设备控制器。...若要使用音频设备,则只能通过g_audio驱动构造复合设备,若使用USB虚拟网卡,则只能通过g_ether驱动构造复合设备,若需要多个功能的USB设备,则需要重新构造复合设备,编码定义usb_composite_driver
制作 Kali 可启动 USB 驱动器 (Linux) 我们最喜欢的方式,也是最快的方法,启动和运行 Kali Linux 是从 USB 驱动器“实时”运行它。...驱动器上 它具有潜在的持久性——通过一些额外的努力,您可以将 Kali Linux “实时” USB 驱动器配置为具有持久性存储,因此您收集的数据将在重新启动后保存 为此,我们首先需要创建一个可引导的...首先,您需要确定用于将图像写入 USB 驱动器的设备路径。...在 USB 设备上镜像 Kali ISO 文件。下面的示例命令假设您正在编写的 ISO 映像名为“kali-linux-2021.3-live-amd64.iso”并且位于您当前的工作目录中。...一旦 Etcher 提醒您映像已刷新,您就可以安全地移除 USB 驱动器。 您现在可以使用 USB 设备启动到 Kali Live / Installer 环境。
cat /etc/default/grub # kernel内核启动顺序配置文件 sed -i "s/DEFAULT.
/vda1 /mnt cd / && for i in sys dev proc; do mount --bind /$i /mnt/$i;done chroot /mnt 一、centos7修改内核启动顺序...grub2-set-default "CentOS Linux (3.10.0-123.9.3.el7.x86_64) 7 (Core)" 3、执行如下命令,确认配置成功。...grub2-editenv list 二、centos6修改内核启动顺序 1、查看/etc/grub.conf文件,确认系统内核的情况,如下图所示系统存在2个内核的现象。...三、centos8修改内核启动顺序 1、查看默认内核 grubby --default-kernel 2、 查看所有内核 grubby --info=ALL 3、修改默认启动内核 grubby --set-default.../boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64 四、Ubuntu修改内核启动顺序 1、查看当前内核的启动顺序 cat /boot/grub/grub.cfg |grep
最近 VMware 莫名其妙的卡,开机一会就开始卡死了,找了好多办法也不行,暂时先换 VirtualBox,已安装但在使用网银 U 盾等 USB 设备时,无法识别 USB 设备。
Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。 1、初始化宏 Linux系统使用两种方式去加载系统中的模块:动态和静态。...2、编译顺序 同一级别的初始化是和编译顺序有关的,并不是和设备列表一致。 【问题】 背光驱动初始化先于LCD驱动初始化,导致LCD驱动初始化时出现闪屏的现象。...PWM(xxxpwm_backlight_device)设备。...可见驱动的初始化顺序并不是和这个表定义的顺序始终保持一致的。...(记得PM操作 - resume/suspend的顺序 是和这个表的顺序保持一致的) 2.2 怀疑和编译顺序有关 Z:\kernel\drivers\video\Makefile:背光驱动(backlight
2.Gadget Function驱动 Linux内核的USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来的API定义USB Gadget设备的任意功能和配置,极大的方便了USB复合设备的配置和使用。...成员中完成绑定,最后回调udc_start启动USB设备控制器。...usb_gadget_ops是USB设备控制器的硬件操作函数,包含启动USB设备控制器、停止USB设备控制器、vbus电源等功能。ep0表示端点0,驱动注册时会提前分配好,用于响应控制请求。...usb_dcd_config_params *); int (*udc_start)(struct usb_gadget *, struct usb_gadget_driver *); // 启动udc
一、USB设备状态 在USB 2.0协议中第 9.1 USB Device States 章节规定了USB设备的6种状态,包括: Attached/Powered/Default/Address/Configured...在 Linux Kernel ch9.h 文件中用 enum usb_device_state 来标记这几种状态。...// /include/uapi/linux/usb/ch9.h enum usb_device_state { /* NOTATTACHED isn't in the...其中struct usb_gadget是用来标记一个USB设备的信息。此时USB设备的状态就可以确定了。...之后启动工作队列schedule_work(&gadget->work);将状态信息给到sysfs。
[include/linux/usb/gadget.h] int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)...void usb_gadget_udc_stop(struct usb_udc *udc); [include/linux/usb/gadget.h] int usb_udc_attach_driver...[include/linux/usb/gadget.h] int usb_gadget_map_request(struct usb_gadget *gadget, struct usb_request...[include/linux/usb/gadget.h] void usb_gadget_giveback_request(struct usb_ep *ep, struct usb_request *...[include/linux/usb/gadget.h] int usb_ep_set_halt(struct usb_ep *ep); int usb_ep_clear_halt(struct usb_ep
一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: ?...接下来就重新编译内核即可 三.交叉编译alsa-lib和alsa-utils (alsa-utils是一系列的音频设备控制工具,而alsa-lib是alsa-utils依赖的库,所以先将alsa-lib...设置录音时的音量大小 amixer cset numid=8,iface=MIXER,name='Mic Volume' 255 六:注意事项: 如果将编译好的alsa-utils中的工具复制到fat32格式的存储设备的时候...,注意fat32是不支持软链接的,此时需要直接复制一个aplay并将名称改为arecord: cp aplay arecord 总结 以上所述是小编给大家介绍的arm linux利用alsa驱动并使用...usb音频设备 ,希望对大家有所帮助!
一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的(先进先出),并且流通道中的通信流总是单向的。 2)、“消息”指具有某种USB定义格式的数据流。
领取专属 10元无门槛券
手把手带您无忧上云