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. 滑块解锁-scratch编程作品

    程序说明: <滑块解锁>是一款基于Scratch平台制作的益智类小游戏.游戏中存在多个黄色滑块阻挡红色滑块通往出口的路径.玩家需要通过逻辑思考和精确操作,滑动黄色滑块以开辟道路,使红色滑块 ...

  2. cgroup限制进程cpu

    编写一个死循环脚本 [root@workstation ~]# cat circle.sh #!/bin/bash a=1 while true do let a++ done 查看top 使用cgr ...

  3. 加压测试TPS上不去的性能分析

    加压测试TPS上不去的性能分析 阶梯式加压测试接口异常可能存在的原因: 压力机本身性能测试的瓶颈 分析:单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS ,可以通过进行分布 ...

  4. 【Java】java.util.ConcurrentModificationException

    异常提示信息: java.util.ConcurrentModificationException at java.util.LinkedHashMap$LinkedHashIterator.next ...

  5. 【Hibernate】Re08 加载策略配置

    一.关联查询的问题: 使用关联查询,例如简单的一对多关系查询,查出一个部门对象和对应的N个员工对象. 如果一般情况下,我们只是需要部门对象,并不关系关联的员工对象,那么Hibernate关联查询出来的 ...

  6. 强化学习运行环境,atari 2600 游戏模拟器,atari-py库 —— 无法运行游戏,pacman,surround,报错: Segmentation fault (core dumped)

    atari2600运行环境: https://github.com/openai/atari-py 安装环境,以及导入 rom文件这里不进行介绍(前文已介绍): 测试游戏环境rom文件能否正常加载如内 ...

  7. 为什么不建议在华为技术论坛(昇腾论坛/mindspore技术论坛)发表帖子和技术博客

    华为的硬件设计技术在国内没得说,华为的硬件制造技术基本就没听说过,而华为的软件技术可是出了名的不咋样.一年前曾经在昇腾的页面进入到华为技术论坛,并且发了几篇关于mindspore的编译问题的帖子,由于 ...

  8. 算法·理论:Manacher 笔记

    \(\text{Manacher}\) 来啦! \(\text{Manacher}\) 并没有什么前置知识,比 \(\text{KMP}\) 简单多了. 前置处理 \(\text{Manacher}\ ...

  9. React 18 自定义 Hook 获取 useState 最新值

    原理:通过同步更新 useRef  来获取最新值 // util.ts export const useRefState = (init: any = null) => { const [sta ...

  10. 从源码分析 SpringBoot 的 LoggingSystem → 它是如何绑定日志组件的

    开心一刻 今天心情不好,想约哥们喝点 我:心情不好,给你女朋友说一声,来我家,过来喝点 哥们:行!我给她说一声 我:你想吃啥?我点外卖 哥们:你俩定吧,我已经让她过去了 我:???我踏马让你过来!和她 ...