首页 > 其他分享 >展锐Android平台增加gadget 虚拟usb串口

展锐Android平台增加gadget 虚拟usb串口

时间:2022-12-02 22:13:02浏览次数:47  
标签:usb g1 gadget gser common 串口 config

方案一:需要修改展锐现有Windows端驱动,增加一组MI接口。由于无法推动展锐修改Windows驱动,该方案不推荐。

SL8541E/device/sprd/sharkle/common/rootdir/root/init.common.usb.rc
diff --git a/common/rootdir/root/init.common.usb.rc b/common/rootdir/root/init.common.usb.rc
index 316781b..6940929 100755
--- a/common/rootdir/root/init.common.usb.rc
+++ b/common/rootdir/root/init.common.usb.rc
@@ -127,6 +127,7 @@ on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.u
symlink /config/usb_gadget/g1/functions/gser.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/gser.gs1 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/gser.gs2 /config/usb_gadget/g1/configs/b.1/f4
+ symlink /config/usb_gadget/g1/functions/gser.gs5 /config/usb_gadget/g1/configs/b.1/f5
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}

方案二:不需要改Windows端驱动,增加一组MI接口,使用CDC ACM驱动。免驱,推荐。

SL8541E/device/sprd/sharkle/common/rootdir/root/init.common.usb.rc
diff --git a/common/rootdir/root/init.common.usb.rc b/common/rootdir/root/init.common.usb.rc
index 316781b..fcbdcf7 100755
--- a/common/rootdir/root/init.common.usb.rc
+++ b/common/rootdir/root/init.common.usb.rc
@@ -38,6 +38,7 @@ on init
mkdir /config/usb_gadget/g1/functions/gser.gs5 0770 shell shell
mkdir /config/usb_gadget/g1/functions/gser.gs6 0770 shell shell
mkdir /config/usb_gadget/g1/functions/gser.gs7 0770 shell shell
+ mkdir /config/usb_gadget/g1/functions/acm.gs0 0770 shell shell

setprop sys.usb.mode normal

@@ -127,6 +128,7 @@ on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.u
symlink /config/usb_gadget/g1/functions/gser.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/gser.gs1 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/gser.gs2 /config/usb_gadget/g1/configs/b.1/f4
+ symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f5
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}

SL8541E/bsp/kernel/kernel4.14/arch/arm/configs/sprd_sharkle_defconfig
diff --git a/arch/arm/configs/sprd_sharkle_defconfig b/arch/arm/configs/sprd_sharkle_defconfig
index 73208c8..0338f42 100644
--- a/arch/arm/configs/sprd_sharkle_defconfig
+++ b/arch/arm/configs/sprd_sharkle_defconfig
@@ -2990,6 +2990,7 @@ CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_U_SERIAL=y
CONFIG_USB_U_ETHER=y
CONFIG_USB_F_SERIAL=y
+CONFIG_USB_F_ACM=y
CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_FS=y
@@ -3001,7 +3002,7 @@ CONFIG_USB_F_ACC=y
CONFIG_USB_F_VSERIAL=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_SERIAL=y
-# CONFIG_USB_CONFIGFS_ACM is not set
+CONFIG_USB_CONFIGFS_ACM=y
# CONFIG_USB_CONFIGFS_OBEX is not set
# CONFIG_USB_CONFIGFS_NCM is not set
# CONFIG_USB_CONFIGFS_ECM is not set

SL8541E/bsp/kernel/kernel4.14/drivers/usb/gadget/function/u_serial.h
diff --git a/drivers/usb/gadget/function/u_serial.h b/drivers/usb/gadget/function/u_serial.h
index a5dc553..62c6331 100644
--- a/drivers/usb/gadget/function/u_serial.h
+++ b/drivers/usb/gadget/function/u_serial.h
@@ -15,7 +15,7 @@
#include <linux/usb/composite.h>
#include <linux/usb/cdc.h>

-#define MAX_U_SERIAL_PORTS 8
+#define MAX_U_SERIAL_PORTS 9

struct f_serial_opts {
struct usb_function_instance func_inst;

如果要调换modem的调试串口,比如将SPRD_AT口从ttyGS0替换到ttyGS8,并释放ttyGS0端口,可以修改以下文件。注意以下文件的端口会被modem调试
进程占用,导致PC发送到开发板的数据被调试进程读取进而导致使用该端口的app收不到完整数据或漏收数据。
SL8541E/device/sprd/sharkle/common/rootdir/system/etc/engpc/dev/pc.conf
diff --git a/common/rootdir/system/etc/engpc/dev/pc.conf b/common/rootdir/system/etc/engpc/dev/pc.conf
index 3762e90..b38444a 100644
--- a/common/rootdir/system/etc/engpc/dev/pc.conf
+++ b/common/rootdir/system/etc/engpc/dev/pc.conf
@@ -3,12 +3,12 @@ cali COM_CP_DIAG DATA_DIAG vser /dev/vser NULL S
autotest COM_CP_DIAG DATA_DIAG vser /dev/vser NULL SPRD_LTE_DIAG
normal_lite COM_CP_AT DATA_AT gser /dev/ttyGS1 NULL SPRD_LTE_AT
normal_lite COM_WCN_AT DATA_WCN_AT gser /dev/ttyGS2 NULL SPRD_WCN_AT
-normal_lite COM_PPPD_AT DATA_AT gser /dev/ttyGS0 NULL SPRD_PPPD
+normal_lite COM_PPPD_AT DATA_AT gser /dev/ttyGS8 NULL SPRD_PPPD
normal COM_CP_DIAG DATA_DIAG gser /dev/ttyGS6 NULL SPRD_LTE_DIAG
normal COM_CP_AT DATA_AT gser /dev/ttyGS5 NULL SPRD_LTE_AT
normal COM_CP_LOG DATA_LOG gser /dev/ttyGS7 NULL SPRD_LTE_LOG
normal COM_WCN_AT DATA_WCN_AT gser /dev/ttyGS2 NULL SPRD_WCN_AT
normal COM_WCN_DIAG DATA_WCN_DIAG gser /dev/ttyGS3 NULL SPRD_WCN_DIAG
-normal COM_PPPD_AT DATA_AT gser /dev/ttyGS0 NULL SPRD_PPPD
+normal COM_PPPD_AT DATA_AT gser /dev/ttyGS8 NULL SPRD_PPPD
normal COM_SENSOR_LOG DATA_DIAG gser /dev/ttyGS1 NULL SPRD_DIAG
normal COM_AGDSP_MIX DATA_AGDSP_MIX gser /dev/ttyGS4 NULL SPRD_AGDSP

测试情况如下:

 

标签:usb,g1,gadget,gser,common,串口,config
From: https://www.cnblogs.com/pypyn/p/16945784.html

相关文章

  • USB Type-C Configuration Channel (CC)引脚功能介绍
    1.插入检测DFP(下行端口)为主机端口,UFP(上行端口)为设备端口。如图所示,在DFP中的CC通道上有上拉电阻,相应的在UFP中有对应的下拉电阻。在DFP与UFP连接之前,VBUS没有输出,当......
  • lsusb 识别不了
     #defineHUAWEI_VENDOR_ID         0x12D1 #defineHUAWEI_VENDOR_ID         0x12D1 #defineHUAWEI_VENDOR_ID         0x12......
  • Linux USB驱动分析之USB2.0协议分析
    一条USB传输线分别由地线、电源线、D+和D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以......
  • Windows下USB声卡音量调整
    买了一个绿联的USB声卡,但是默认的音量太大了,最低音量都响的不行.查了一下,发现了一个叫EqualizerAPO的软件可以调整输出设备的音量.https://equalizerapo.com/选择U......
  • linux usb option,Linux -> usb-serial -> option.c 设备编译usb-serial支持多设备
    在使用LC6311或者SIM4100类似的通讯modem的时候,我们经常使用usbserial驱动来在linux环境下访问模块。但是,每次,我们插入特定模块到usb端口后,都需要手动加载usbserial模块,如......
  • UAC实例分析-USB音响
     在AndroidUSB之复合设备(gadget)详解一篇中提到了USBGadgetUAC(USBAudioClass)的使用。Rockchip平台可以支持UAC1(兼容USBAudioClassspecification1.0)和UAC2(......
  • linux串口tty driver
    linux串口ttydriveruserspace调用read()读取标准输入kernelflowtty_readtty_read()if(ld->ops->read)i=ld->ops->read(tty,file,buf,count);......
  • USB4.0
    USB4.0是2019年发布的规范文档,是基于Thunderbolt3协议,使用TypeC接口,支持USB、DP、PCIe功能。USB4和DisPlayPort2.0融合在一起,USBType-C接口可以转换为DP2.0模式,用来......
  • PCIe与usb
    PCI-e,SATA一般用于计算机内部,不同模块之间的“高速数据通信”,比如硬盘与南桥,网卡与南桥,显卡与北桥之间的通信,这类接口一般比较固定,不允许随意插拔......
  • 集WIFI、蓝牙连接的2.4寸串口屏智能烤箱应用方案
    近年来由于烹饪潮的持续风靡,烹饪行业正展现出强大的市场潜力。中国饮食文化源远流长,烹调技艺各具风韵,其中,煎、烤、炸类美食广受人们的欢迎。酥香松脆的煎烤美食,能够让身体......