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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
嵌入式
+关注
关注
5209文章
20645浏览量
336906 -
Linux
+关注
关注
88文章
11814浏览量
219527
发布评论请先 登录
相关推荐
热点推荐
树莓派编译内核报错
编译的时候报错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_linux26_str
Linux之chardev_buttom_linux26_struct教程,很好的Linux资料,快来学习吧
发表于 04-15 17:49
•15次下载
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次下载
如何学习Linux学习Linux的详细步骤说明
Linux系统现在越来越满足人们对技术的要求,因此Linux不论在市场中还是企业里都备受欢迎,所以学习Linux的人越来越多,那么Linux到底应该怎么学呢?有没有
发表于 01-15 17:17
•63次下载
Linux有什么优势?Linux能替代Windows 吗?
Linux 能用吗? Linux 有图形界面 支持日常开发 社交沟通没问题 Linux 能替代 Windows 吗? Linux 下运行 Android 应用
嵌入式linux和桌面linux的区别
嵌入式linux和桌面linux的区别主要区别是:1. 硬件平台:嵌入式Linux一般是Mips, ARM平台, 桌面Linux一般是x86平台。2. 根文件系统嵌入式
发表于 10-20 15:36
•4次下载
Linux configfs的内部机制介绍
2.1 configfs 和 sysfs configfs 和 sysfs 都是基于内存的虚拟文件系统,但是它们并不相同。 对于 sysfs,当内核创建某个对象时,比如注册一个
Linux configfs的使用
评论