借鉴链接:
https://www.cnblogs.com/pypyn/p/16945784.html
gadget
主机: usb主机控制器 -- 主机控制器驱动(HCI,EHCI,) -- usb core -- usb设备驱动 -- 应用程序
从机: usb设备控制器 -- 设备控制器驱动(UDC) -- gadget API(驱动?)-- 待定
使用usb转虚拟串口进行通信:
首先理解了这个数据的流向,其次要明白数据从哪进行发和收:
即, 主机要想从机通信,就必须使得两个设备有一个共同的通信线路;
kernel/Documentation中
1. gadget_configfs.txt: 该文件将从机设备的配置讲的很清楚
2. configfs.txt:
3. .usb.rc 和 init.usb.configfs.rc 文件: 在系统启动时执行的文件(具体的还没了解)
我的configfs文件系统是只读系统,所以我必须修改rc文件,否则只能想其他法子去解决;
配置usb为虚拟串口(rk,android)
rk作为从机需要被主机识别
主要是在configfs文件系统中配置从机设备的角色: /config/usb_gadget/g1
因g1目录为只读系统,所以只能在rc文件进行修改(好处是重启不丢失)
重新挂载:(此处看个人情况,目的是修改configfs)
mount -o remount,rw /dev/block/dm-2 /vendor
mount -o remount -o rw /
具体操作:
/etc/init/hw/init.rk.usb.rc: #不同的系统该路径不同,可以 find usb.rc
on boot: + mkdir /config/usb_gadget/g1/functions/acm.gs0 0770 shell shell
/etc/init/init.usb.configfs.rc :
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.usb.configfs=1 write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb" symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f4 write /config/usb_gadget/g1/UDC ${sys.usb.controller} setprop sys.usb.state ${sys.usb.config}
标签:configfs,usb,g1,--,gadget,通信,config,主从 From: https://www.cnblogs.com/uagvdu/p/17933307.html