USB configfs与USB functionfs的区别及关系
configfs 和 functionfs 是 Linux 内核中用于配置和管理 USB 设备行为的两种不同的文件系统,它们各自的用途和工作方式有所不同,但在 USB Gadget 子系统中可以结合使用。以下是它们的区别和关系:
1. configfs:
用途: 用于配置和管理 USB 设备的整体功能和配置。
工作原理:
configfs提供了一种用户空间接口,允许用户通过创建目录和文件的方式配置 USB Gadget。用户可以通过挂载configfs,创建设备描述符、配置描述符、接口和端点等结构,定义设备的 USB 属性。使用场景: 常用于需要对 USB Gadget 的属性进行灵活配置的场景,例如需要同时支持多种 USB 功能(如 MTP、ADB、RNDIS)时。
配置步骤:
1. 挂载 configfs (mount -t configfs none /sys/kernel/config)
2. 在 usb_gadget 下创建 gadget 设备(如 g1)。
3. 配置设备描述符(如 idVendor、idProduct)。
4. 添加 USB 功能(如 function 文件夹)并绑定到配置。
2. functionfs (ffs):
用途: 提供用户空间对 USB 传输的数据读写的接口,使用户空间程序能够处理 USB 传输的数据包。
工作原理:
functionfs是一种文件系统接口,允许用户空间应用程序直接与 USB 端点进行通信。它将 USB 端点抽象为文件,应用程序可以对这些文件进行读写操作来接收和发送数据。使用场景: 常用于需要用户空间控制 USB 数据流的应用,例如实现自定义 USB 协议、或用户空间需要直接处理数据的情况(如 ADB 和 MTP)。
配置步骤:
1. 挂载 functionfs (mount -t functionfs none /dev/ffs-<name>).
2. 用户空间程序打开端点文件(如 /dev/ffs-mtp/ep1in),进行数据读写操作。
区别和关系:
- 区别:
- configfs 主要用于配置和管理 USB Gadget 的属性和功能。
- functionfs 主要用于实现用户空间和 USB 端点的数据传输。
- 关系:
- 两者可以结合使用:通过 configfs 配置 USB 功能,然后用 functionfs 来实现用户空间的数据处理。例如,当使用 ffs 功能时,通过 configfs 创建和配置 gadget,functionfs 为用户空间应用提供接口来处理 USB 数据。
通过 configfs 和 functionfs 的组合,可以灵活定义和管理 USB 设备,并实现复杂的数据传输应用。
USB configfs与USB functionfs的区别及关系的更多相关文章
- USB HOST与 USB OTG的区别及工作原理
在SmartQ 7上面,同时存在USB HOST与 USB OTG两个接口,我想问一下,这两个接口有什么区别么?我怎么认为HOST属于是多余呢? 麻烦高手解答,感激不尽!!! 转自USB HOST与 ...
- usb host和usb device
S3C2440的数据手册将USB功能分为两章--usb host和usb device.具体什么意思呢? usb host: 微处理器作为usb主设备,可以挂接U盘之类的从属设备. usb devic ...
- USB Compound Device,USB复合设备 ; USB Composite Device,USB组合设备【转】
本文转载自:https://blog.csdn.net/autumn20080101/article/details/52776863 科普下USB复合设备和USB组合设备的区别. 关键字 Commu ...
- USB C和USB 3.1傻傻分不清?这篇文章可以帮你
USB Type-C接口以及USB 3.1标准的到来,理应为消费者提供更多便利.然而就目前来看,似乎这些新标准非但没有为消费者提供了更好的使用体验,反而带来了诸多隐患.Google的工程师Benson ...
- 读取USB HDD(USB移动硬盘信息)序列号的代码
读取USB HDD(USB移动硬盘)序列号的代码,型号及分位. 使用Visual Studio 2010编译成功. 代码使用了CrystalDiskInfo中的代码smartata.c中相关代码: 例 ...
- STM8学习 无法仿真原因Starting debug session... -> Emulator reset (usb://usb)... ** Connection error (usb://usb): swim error [30200]: st-link connection error
刚调试程序时,STlink总是连不上,一直提示: Starting debug session...-> Emulator reset (usb://usb)...** Connection e ...
- 【转】Android实战技巧之四十九:Usb通信之USB Host
零 USB背景知识 USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一. 硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头 ...
- RK3288 USB触摸屏与USB摄像头同时使用时触摸卡顿
CPU:RK3288 系统:Android 5.1 当USB触摸屏与USB摄像头同时使用时,有时会出现触摸卡顿,看似按键按下没有弹起. getevent 查看触摸屏上报,只有 DOWN,没有 UP,正 ...
- RockBrain USB Server- 云计算虚拟化USB设备集中管理、远程共享解决方案(涉及银企直联)
RockBrain USB Server- 云计算虚拟化USB设备集中管理.远程共享解决方案(涉及银企直联) 技术需求: 1.企业员工的大量USB Key,需要将key接入USB Server虚拟池, ...
- PIC32MZ 通过USB在线升级 -- USB CDC bootloader
了解bootloader 的实现,请加QQ: 1273623966 (验证填 bootloader):欢迎咨询或定制bootloader:我的博客主页www.cnblogs.com/geekygeek ...
随机推荐
- pytorch问题记录
1.找不到fused 2.找不到torch_extensions 网上的教程一般都是linux系统的,Windows这个是在C盘目录下 3.c++开发环境中找不到vcvars64.bat 解决方法:重 ...
- Jmeter二次开发函数 - 将指定时间转换为时间戳
1.达到效果:在jmeter的函数助手增加一个"timeStamp"函数,调用"timeStamp"函数可以将用户传入的时间转换为时间戳. 2.eclipse项 ...
- 【Mybatis-Plus】使用QueryWrapper作为自定义SQL的条件参数
发现同事的自定义SQL写法是这样的 连表之后使用的条件是 ${ew.customSqlSegment} @Param声明的常量: /** * wrapper 类 */ String WRAPPER = ...
- 【Hibernate】Re01.6 HQL
一.支持的查询方式 Hibernate的查询支持三种方式: 1.HQL查询 2.Criteria查询 3.NativeSQL 原生SQL查询 二.HQL查询语言 全称 Hibernate Query ...
- 老代码报错:scipy.misc.imresize报错: AttributeError: module 'scipy.misc' has no attribute 'imresize'
运行老代码报错: image = misc.imresize(image, [Config.IMAGE_HEIGHT, Config.IMAGE_WIDTH], 'bilinear')Attribut ...
- 英特尔Movidius神经计算棒的介绍
手上有一款英特尔Movidius神经计算棒,本打算疫情结束返回学校,突然得到非官方的通知告诉我只能等到9月份返校了,于是就想起这个被闲置的计算棒了,手上的是1代的计算棒,不过1代的和二代的使用起来方法 ...
- 7月30日CSP-S模拟赛赛后总结
7月30日模拟赛赛后总结 \[7月30日 \ \ 模拟赛 \ \ 赛后总结 \\ 2024年7月30日 \\ by \ \ \ hcy \] 洛谷同步:点我 一.做题情况 第一题比赛 \(100pts ...
- 牛客周赛 Round 7
牛客周赛 Round 7 A-游游的you矩阵_牛客周赛 Round 7 (nowcoder.com) 把四种字符凑一起看看有没有\(y,o,u\)就行 #include <bits/stdc+ ...
- MPTCP(六):MPTCP测试
MPTCP测试 1.注意事项 测试主机已替换支持MPTCPv1的内核,并且已使能MPTCP,本次测试中使用的内核版本均为5.18.19 测试主机中确保已经正确配置了iproute2 和 mptcpd, ...
- 无分号js风格注意的三个问题
建议如果一行代码是以 ( [ ` 开头的,则最好都在其前面补上一个分号. // 1.( function say() { console.log('hello world') } // ...