configfsfunctionfs 是 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. 配置设备描述符(如 idVendoridProduct)。

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 数据。

通过 configfsfunctionfs 的组合,可以灵活定义和管理 USB 设备,并实现复杂的数据传输应用。

USB configfs与USB functionfs的区别及关系的更多相关文章

  1. USB HOST与 USB OTG的区别及工作原理

    在SmartQ 7上面,同时存在USB HOST与 USB OTG两个接口,我想问一下,这两个接口有什么区别么?我怎么认为HOST属于是多余呢? 麻烦高手解答,感激不尽!!! 转自USB HOST与 ...

  2. usb host和usb device

    S3C2440的数据手册将USB功能分为两章--usb host和usb device.具体什么意思呢? usb host: 微处理器作为usb主设备,可以挂接U盘之类的从属设备. usb devic ...

  3. USB Compound Device,USB复合设备 ; USB Composite Device,USB组合设备【转】

    本文转载自:https://blog.csdn.net/autumn20080101/article/details/52776863 科普下USB复合设备和USB组合设备的区别. 关键字 Commu ...

  4. USB C和USB 3.1傻傻分不清?这篇文章可以帮你

    USB Type-C接口以及USB 3.1标准的到来,理应为消费者提供更多便利.然而就目前来看,似乎这些新标准非但没有为消费者提供了更好的使用体验,反而带来了诸多隐患.Google的工程师Benson ...

  5. 读取USB HDD(USB移动硬盘信息)序列号的代码

    读取USB HDD(USB移动硬盘)序列号的代码,型号及分位. 使用Visual Studio 2010编译成功. 代码使用了CrystalDiskInfo中的代码smartata.c中相关代码: 例 ...

  6. 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 ...

  7. 【转】Android实战技巧之四十九:Usb通信之USB Host

    零 USB背景知识 USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一. 硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头 ...

  8. RK3288 USB触摸屏与USB摄像头同时使用时触摸卡顿

    CPU:RK3288 系统:Android 5.1 当USB触摸屏与USB摄像头同时使用时,有时会出现触摸卡顿,看似按键按下没有弹起. getevent 查看触摸屏上报,只有 DOWN,没有 UP,正 ...

  9. RockBrain USB Server- 云计算虚拟化USB设备集中管理、远程共享解决方案(涉及银企直联)

    RockBrain USB Server- 云计算虚拟化USB设备集中管理.远程共享解决方案(涉及银企直联) 技术需求: 1.企业员工的大量USB Key,需要将key接入USB Server虚拟池, ...

  10. PIC32MZ 通过USB在线升级 -- USB CDC bootloader

    了解bootloader 的实现,请加QQ: 1273623966 (验证填 bootloader):欢迎咨询或定制bootloader:我的博客主页www.cnblogs.com/geekygeek ...

随机推荐

  1. ios的idp/iep证书的生成方法,无苹果电脑

    在这个多端开发的年代,出现了很多优秀的开发框架,比如hbuilder和uniapp等等.我们可以使用这些框架来开发APP,假如我们要打包ios的app,则需要一个idp/iep证书. 那么这个证书是如 ...

  2. 对比python学julia(第一章)--(第二节)似曾相识燕归来

    Julia和python一样,都是跨平台开源语言,而且都是动态语言,所以毫无疑问,需要运行时支撑.很简单,到官网去下载julia(https://julialang.org/downloads/).和 ...

  3. 【Vue2】Computed 计算属性

    计算属性在编写的时候是一个方法 但是在调用的时候作为属性使用 <!DOCTYPE html> <html lang="en"> <head> & ...

  4. 【DataBase】MySQL 04 图形化用户界面管理工具

    参考至视频:P16 - P18 https://www.bilibili.com/video/BV1xW411u7ax?p=82 SQL图形化界面管理工具 - SQLyog 随便找的一个下载地址[安装 ...

  5. 【转载】 xavier,kaiming初始化中的fan_in,fan_out在卷积神经网络是什么意思

    原文地址: https://www.cnblogs.com/liuzhan709/p/10092679.html =========================================== ...

  6. Canvas简历编辑器-图形绘制与状态管理(轻量级DOM)

    Canvas简历编辑器-图形绘制与状态管理(轻量级DOM) 在前边我们聊了数据结构的设计和剪贴板的数据操作,那么这些操作都还是比较倾向于数据相关的操作,那么我们现在就来聊聊基本的图形绘制以及图形状态管 ...

  7. Cookie、localStorage 和 sessionStorage 的区别及应用实例

    在前端开发中,持久化数据存储是一个非常常见的需求.为了实现这一点,浏览器提供了多种方式,包括 Cookie.localStorage 和 sessionStorage.这三者各有优劣,适用于不同的场景 ...

  8. Maven经验分享(一)安装部署 转

    Maven安装部署 1.安装 在安装Maven之前,首先要确认你已经正确安装了JDK.Maven可以运行在JDK 1.4及以上的版本上.本书的所有样例都基于JDK 5及以上版本 目录下的安装包,直接a ...

  9. 【Git】之分支合并命令

    一.Git分支管理 1.查看Git分支 git branch 按Q键返回. 2.创建分支以及删除分支 git branch newtest git branch -d newtest 3.切换分支 g ...

  10. Cannot find loader com.jme3.scene.plugins.ogre.MeshLoader

    五月 20, 2022 2:46:07 下午 com.jme3.asset.AssetConfig loadText 警告: Cannot find loader com.jme3.scene.plu ...