【OpenHarmony】usb gadget 配置hdc功能cfg文件解读
文章目录
- 一、创建设备
- 二、创建配置
- 三、创建功能
- 四、将功能和对应的配置关联起来
- 挂载functionfs文件系统
- 五、使能该设备
- 六、去使能该设备
- 七、清除
- 实现设计
- 参考资料
cfg文件所在路径
https://gitee.com/openharmony/device_board_hihope/blob/master/rk3568/cfg/init.rk3568.usb.cfg
https://gitee.com/openharmony/drivers_peripheral/blob/master/usb/cfg/init.usb.configfs.cfg
- 首先将configfs文件系统挂载到系统上
mount configfs none /config
一、创建设备
- 创建设备对应的目录:
mkdir /config/usb_gadget/g1 0770 shell shell
- 每个设备有它自己的product id和vendor id
write /config/usb_gadget/g1/idVendor 0x2207
write /config/usb_gadget/g1/idProduct 0x0018
- 每个设备 也必须有他的 序列号、厂商、产品字符串,创建一个string目录用来存放这些信息。
mkdir /config/usb_gadget/g1/strings/0x409 0770
copy /sys/block/mmcblk0/device/cid /config/usb_gadget/g1/strings/0x409/serialnumber
write /config/usb_gadget/g1/strings/0x409/manufacturer Rockchip
write /config/usb_gadget/g1/strings/0x409/product \"HDC Device\"
二、创建配置
- 每个设备由许多配置组成,这些配置对应的目录也需要被创建
mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
- 每个配置也需要有自己的字符串,所以对于每种语言需要创建一个对应的string目录
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
- 然后这个配置的字符串就可以被写进去了
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration hdc
- 这个配置的其它一些属性也可以被设置进去
write /config/usb_gadget/g1/configs/b.1/MaxPower 500
三、创建功能
- 设备将会提供一些功能,对于每一个功能其对应的目录也必须被创建
mkdir /config/usb_gadget/g1/functions/ffs.hdc
四、将功能和对应的配置关联起来
- 现在创建了很多设备,每个设备有一些配置和一些功能。那么接下来就需要我们标识出来哪些功能在哪个配置里面是有效。一个功能可以被包含在多个配置当中。上述动作通过符号链接来完成。
symlink /config/usb_gadget/g1/functions/ffs.hdc /config/usb_gadget/g1/configs/b.1/f1
挂载functionfs文件系统
- functionfs可以把它当做一个具有独特行为的复合function。主要作用是在挂载的functionfs文件系统目录下生成ep0目录,用来写入描述符和字符串完成协商。
mount functionfs hdc /dev/usb-ffs/hdc uid=2000,gid=2000
五、使能该设备
- 为了使能这个设备我们必须要将它绑定到某个udc上面去
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
UDC名称应该是目录/sys/class/udc/*
下面的某一个。
六、去使能该设备
write /config/usb_gadget/g1/UDC none
七、清除
- 从配置里面移除功能
rm /config/usb_gadget/g1/configs/b.1/f1
- 移除配置里面的字符串目录(没找到)
rmdir configs/<config name>.<number>/strings/<lang>
- 移除配置(没找到)
rmdir configs/<config name>.<number>
- 移除功能(没找到)
rmdir functions/<name>.<instance name>
- 移除设备字符串目录(没找到)
rmdir strings/<lang>
- 最后移除设备
rmdir <gadget name>
实现设计
- 一个gadget有它的config组,这个组有一些属性(idVendor, idProduct etc)和默认的子组(configs, functions, strings)。
- 写这些属性,将会导致这些属性存储在对应的位置。在configs, functions, strings子组里面,用户可以创建他们的子组,代表相应的配置,功能和字符串。
- 用户可以创建一些配置和功能,并使用符号链接将他们关联起来。在设备的UDC属性被写之后,这些信息将会被使用。这个写意味着将该设备和对应的UDC关联起来了。
drivers/usb/gadget/configfs.c
里面的代码将会便利所有的配置,在每个配置里面将会便利所有的功能,并绑定他们。
参考资料
Linux USB gadget configured through configfs
How FunctionFS works
【OpenHarmony】usb gadget 配置hdc功能cfg文件解读相关推荐
- PXE配置中ks.cfg文件介绍
ks.cfg文件:又称Kickstart文件,主要用于Linux系统的自动化安装. 在CentOS系统中 /root/anaconda-ks.cfg就是一个ks.cfg文件,它指明了当前系统预安装环境 ...
- python中怎么创建配置文件_在Python中创建游戏配置/选项(config.cfg)文件
myConfig.cfg: [info] Width = 100 Height = 200 Name = My Game 解析python: import ConfigParser configPar ...
- android usb gadget分析
Android USB驱动中,上层应用协议里最重要的一个文件是android/kernel/drivers/usb/gadget/android.c.这个文件实现USB的上层应用协议. 首先包含了一些 ...
- Android 8.1 usb gadget configuration
Android 8.1 usb gadget configuration Android的usb gadget配置流程 开机过程中usb gadget配置 第一种:rc脚本 第二种:UsbDevice ...
- USB gadget 驱动之 android.c
1. Gadget驱动 1.1 Gadget框架结构 kernel/drivers/usb/gadget,这个目录是android下usb gadget的主要目录. (1)Gadget功能组织单元:主 ...
- Android USB gadget
Android USB驱动中,上层应用协议里最重要的一个文件是android/kernel/drivers/usb/gadget/android.c.这个文件实现USB的上层应用协议. 首先包含了一些 ...
- 迪文串口屏的CFG文件怎么用?
迪文科技DGUS II中的CFG文件是系统参数配置文件,采用十六进制通过UltraEdit等软件进行编辑. 根据智能屏型号查找对应DGUS应用指南,参照应用指南CFG参数说明部分进行配置.以T5L 0 ...
- linux选择usb功能,USB gadget设备驱动解析(1)——功能体验
利用Linux USB gadget设备驱动可以实现一些比较有意思的功能,举两个例子: 1.一个嵌入式产品中的某个存储设备,或是一个存储设备的某个分区,可以作为一个U盘被PC:设别,从而非常方便的完成 ...
- linux/android系统的USB gadget configfs用户空间配置USB HID U盘 adb dcd等模式的使用
USB gadget configfs模式的使用: 即可android或linux在用户空间配置实现设备终端为HID,U盘.Adb以及cdc等功能 1.创建gadgets 每个gadget都必须创建自 ...
最新文章
- WordPress工作原理之程序文件执行顺序
- 使用ASP.NET MVC 2编程时遇到的两个小问题
- 如何监控和优化mysql查询性能_如何监视MySQL的性能
- react dispatch_React测试的那些事(三) React Hook 测试实例
- python 入门到实践期末考试常出现的考试内容_Python编程入门到实践—列表篇(一)...
- 每周总结(第十一周)
- 详解CSS display:inline-block的应用(转)
- 开发pc页面_干货分享:2020年Web前端开发学习路线图
- 巅峰对决 Spring Boot VS .NET 6
- HDU 4534 郑厂长系列故事——新闻净化
- python环境变量配置_Python零基础入门到年薪二十万-1.1节: 在windows中安装Python
- google 手机号码校验库libphonenumber
- mac rz sz的使用
- 移动硬盘格式化后还能恢复数据吗 格式化的移动硬盘数据能恢复吗
- 文件流转换为base64码 和 base64码转换为文件流
- Android Retrofit Put请求
- 电脑怎么设置开机密码?简单几步给你的电脑“上锁”
- 电子邮箱邮件怎么撤回,邮箱如何撤回邮件?
- Teams通话质量仪表盘进阶使用
- 陀螺仪随机误差的Allan方差分析