0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux configfs的使用

麦辣鸡腿堡 ? 来源:嵌入式Linux系统开发 ? 作者:嵌入式Linux系统开 ? 2023-07-13 10:59 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 体验

1.1 使用

所有命令都是在开发板上执行。

  • 挂载 configfs 文件系统

    # modprobe libcomposite
    # mount -t configfs none /sys/kernel/config
    # ls /sys/kernel/config/
    usb_gadget
    
    #ls /sys/kernel/config/usb_gadget  // 一开始它是空目录
    
  • 创建目录

    # cd /sys/kernel/config/usb_gadget
    # mkdir test_serial
    # ls test_serial/ -l
    total 0
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 UDC
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bDeviceClass
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bDeviceProtocol
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bDeviceSubClass
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bMaxPacketSize0
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bcdDevice
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 bcdUSB
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 configs
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 functions
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 idProduct
    -rw-r--r--    1 root     root          4096 Jan  1 03:20 idVendor
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 os_desc
    drwxr-xr-x    2 root     root             0 Jan  1 01:49 strings
    

    创建目录后,里面就自动生成了很多文件、目录,比如:

    • idVendor:表示厂家 ID,默认值是 0
    • idProduct:表示产品 ID,默认值是 0
  • 设置设备描述符,比如设置厂家 ID、产品 ID,这是可选的

    echo "0x1234" > idVendor
    echo "0x5678" > idProduct
    
  • 创建配置:格式为"configs/.",name 可以取任意字符,number 是配置编号

    mkdir configs/c.1
    
  • 创建功能(function、接口):格式为"functions/.",name 对应 function 的名字,比如 acm 对应 ACM 功能,对应的驱动为usb_f_acm.ko;instance name 可以取任意字符

    mkdir functions/acm.test1
    
  • 把配置和功能联系起来:ln -s functions/. configs/.

    ln -s functions/acm.test1  configs/c.1/
    
  • 使能 Gadget(确定使用哪个 USB Device Controller):echo > UDC,可用的 UDC,可以在 /sys/class/udc/* 目录下查看

    echo ci_hdrc.0 > UDC
    

1.2 清除

  • 禁止 Gadget
    echo "" > UDC
    
  • 移除配置里的功能(Remove functions from configurations):命令:rm configs/./
    rm  configs/c.1/acm.test1
    
  • 移除配置:rmdir configs/.
    rmdir configs/c.1
    
  • 移除功能:rmdir functions/.
    rmdir functions/acm.test1
    
  • 移除 Gadget
    rmdir test_serial
    

1.3 STM32MP157上的实验

因为 STM32MP157 系统里已经使用 adb 设备,要想模拟串口设备,需要先清除 adb,命令如下:

cd /sys/kernel/config/usb_gadget/g1
echo "" > UDC
rm configs/b.1/ffs.adb
rmdir configs/b.1/strings/0x409
rmdir configs/b.1
rmdir functions/ffs.adb
rm strings/0x409
cd ..
rmdir g1

清除后,就按照《1.1 使用》来操作,需要注意的是最后一步:

ls  /sys/class/udc/
49000000.usb-otg

echo 49000000.usb-otg > UDC
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5163

    文章

    19810

    浏览量

    320196
  • Linux
    +关注

    关注

    88

    文章

    11542

    浏览量

    215059
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    树莓派编译内核报错

    编译的时候报错CC [M]fs/btrfs/volumes.ofs/btrfs/volumes.c:28:27: fatal error: linux/raid/pq.h: No such file
    发表于 09-29 09:47

    Linux系统启动卡制作及系统固化

    :VMware14.1.1Kernel:Linux-4.9.65、Linux-RT-4.9.65Linux Processor SDK
    发表于 09-17 16:16

    怎么去解决D1s tina linux连接失败的问题

    ] configfs-gadget gadget: high-speed config #1: c[13.729040] android_work: sent uevent USB_STATE=CONFIGURED
    发表于 12-28 06:19

    Imx6如何作为UVC wbcam相机?

    。在内核日志中我看到:[ 78.763930] configfs-gadget 小工具:uvc:无法将请求排队 (-22)。[ 79.259922] ci_hdrc ci_hdrc.0: 未页面
    发表于 04-21 07:17

    Linux之chardev_buttom_linux_struc

    Linux之chardev_buttom_linux_struct_poll教程,很好的Linux资料,快来学习吧
    发表于 04-15 17:49 ?7次下载

    Linux之chardev_buttom_linux_struc

    Linux之chardev_buttom_linux_struct_timer_debounce教程,很好的Linux自学资料,快来学习吧。
    发表于 04-15 17:59 ?5次下载

    REDIce-Linux--灵活的实时Linux内核

    REDSonic, Inc. REDSonic的RedIce-Linux是一个实时Linux内核,设计来支持以任务和时间为临界的应用,为你的系统提供质量服务。RedIce-Linux包括高精度的微秒
    发表于 11-08 10:24 ?12次下载

    Linux教程之Linux的文件权限管理实验

    严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和资料库的操作系统(也被称为GNU/
    发表于 11-20 17:08 ?6次下载
    <b class='flag-5'>Linux</b>教程之<b class='flag-5'>Linux</b>的文件权限管理实验

    如何学习Linux学习Linux的详细步骤说明

    Linux系统现在越来越满足人们对技术的要求,因此Linux不论在市场中还是企业里都备受欢迎,所以学习Linux的人越来越多,那么Linux到底应该怎么学呢?有没有
    发表于 01-15 17:17 ?63次下载
    如何学习<b class='flag-5'>Linux</b>学习<b class='flag-5'>Linux</b>的详细步骤说明

    32位的linux和64位的linux有何不同

    32位的linux和64位的linux有何不同?
    发表于 06-12 09:29 ?1516次阅读

    Linux的产生_Linux的发展

    Linux是一种计算机操作系统,通常被称为类Unix系统,这是因为Linux和Unix有着很深的渊源。
    发表于 07-16 14:33 ?1549次阅读

    国内最好用的linux系统_linux系统入门命令

    linux是免费开源的操作系统,属性linux系统的版本非常多,除了全球知名的几款linux之外,国内也有几款非常不错的linux版本,下面小编和大家分享下三款最好用的国产
    发表于 08-26 10:18 ?5485次阅读
    国内最好用的<b class='flag-5'>linux</b>系统_<b class='flag-5'>linux</b>系统入门命令

    Linux有什么优势?Linux能替代Windows 吗?

    Linux 能用吗? Linux 有图形界面 支持日常开发 社交沟通没问题 Linux 能替代 Windows 吗? Linux 下运行 Android 应用
    的头像 发表于 10-26 12:02 ?4822次阅读

    嵌入式linux和桌面linux的区别

    嵌入式linux和桌面linux的区别主要区别是:1. 硬件平台:嵌入式Linux一般是Mips, ARM平台, 桌面Linux一般是x86平台。2. 根文件系统嵌入式
    发表于 10-20 15:36 ?4次下载
    嵌入式<b class='flag-5'>linux</b>和桌面<b class='flag-5'>linux</b>的区别

    Linux configfs的内部机制介绍

    2.1 configfs 和 sysfs configfs 和 sysfs 都是基于内存的虚拟文件系统,但是它们并不相同。 对于 sysfs,当内核创建某个对象时,比如注册一个
    的头像 发表于 07-13 11:00 ?2469次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>configfs</b>的内部机制介绍