使用usb进行主从通信

发布时间 2023-12-28 18:31:33作者: uagvdu

借鉴链接:

  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}